G0 AX[AXV[3]]=_REN[2] IF RENC[49]<>0 GOTOF LN4
RENC[28]=(RENC[28]+RENC[25])/2 GOTOF LN4 LN3:
RENC[49]=1 LN4:
G0 AX[AXV[3]]=_REN[2] AX[AXV[2]]=_REN[1] STOPRE RET
%_N_L9723_SPF
;$PATH=/_N_SPF_DIR ; REN ACT OFFSET STOPRE
RENC[16]=$P_TOOLL[1]*RENC[29]/RENC[7]; INC LEN, BASE, WEAR RENC[16]=0 STOPRE RET
%_N_L9724_SPF
;$PATH=/_N_SPF_DIR ; SETTINGS
RENC[7]=1; METRIC UNITS
;RENC[7]=1/25.4 ;INCH UNITS RENC[20]=1; SELECT OPTIONS RENC[14]=0; TOOL MANAGEMENT RENP[8]=3; PROBE AXIS G90G40
; ASSIGN AXIS ADDRESS
CASE(ABS(RENP[8])) OF 1 GOTOF PAX1 2 GOTOF PAX2 3 GOTOF PAX3 RENC[15]=400 L9700; ALARM AXIS PAX1: AXV[1]=Z AXV[2]=X AXV[3]=Y GOTOF PEND
PAX2: AXV[1]=Y AXV[2]=Z AXV[3]=X GOTOF PEND
PAX3: AXV[1]=X AXV[2]=Y AXV[3]=Z PEND:
;SET TOOL NUMBER
IF RENTL==\
R32=R20;STORE T NUMBER AS EDGE IF R32<=9 GOTOF LN1 STOPRE R32=1 LN1: STOPRE
R20=GETT(RENTL,RENC[14]) GOTOF LN3 LN2:
IF R20==9999 GOTOF LN3 STOPRE
R32=R20-TRUNC(R20) R32=ROUND(R32*10)
IF R32<>0 GOTOF LN3 STOPRE R32=1 LN3:
; INCH/METRIC
IF ($P_GG[13]==1)OR($P_GG[13]==3);G70/G700 INCH MODE RENC[29]=1/25.4 RENC[19]=200 G700
ELSE;IF ($P_GG[13]==2)OR($P_GG[13]==4);G71/G710 METRIC MODE RENC[29]=1 RENC[19]=5000 G710 ENDIF
IF (RENP[6]<=0) OR (RENP[6]>1) RENP[6]=.1 ELSE ENDIF STOPRE RET
%_N_L9725_SPF
;$PATH=/_N_SPF_DIR DEF INT CNT=35 ; OUTPUT CLEAR LN1:
RENC[CNT]=9999 CNT=CNT+1
IF CNT<=49 GOTOB LN1 STOPRE RET
%_N_L9726_SPF
;$PATH=/_N_SPF_DIR
PROC L9726(REAL _AA,REAL _DD,REAL _XX,REAL _YY,REAL _ZZ,REAL _QQ,REAL _SS) EXTERN L9710(REAL,REAL,REAL,REAL) DEF REAL _REN[33] ;REN XYZ BASIC MOVE IF _QQ<>9999 GOTOF LN1 _QQ=5*RENC[29] LN1:
IF _DD==9999 GOTOF LN2 ; A D INPUT XY PLANE ONLY
_XX=$AA_IW[AXV[1]]+((_DD/2)*COS(_AA)) _YY=$AA_IW[AXV[2]]+((_DD/2)*SIN(_AA)) _ZZ=$AA_IW[AXV[3]];-RENC[16] LN2:
_REN[31]=8*RENP[6]*RENC[29]; BACK OFF RENC[49]=0
_REN[1]=$AA_IW[AXV[1]] IF _XX<>9999 GOTOF LN3 _XX=_REN[1] LN3:
_REN[2]=$AA_IW[AXV[2]] IF _YY<>9999 GOTOF LN4 _YY=_REN[2]
LN4:
_REN[3]=$AA_IW[AXV[3]];-RENC[16] IF _ZZ<>9999 GOTOF LN5 _ZZ=_REN[3] LN5:
; CALC NRML DIR VEC _REN[11]=_XX-_REN[1] _REN[12]=_YY-_REN[2] _REN[13]=_ZZ-_REN[3]
_REN[10]=SQRT((_REN[11]*_REN[11])+(_REN[12]*_REN[12])+(_REN[13]*_REN[13])) IF _REN[10]==0 GOTOF LN6; NO MOVE _REN[11]=_REN[11]/_REN[10] _REN[12]=_REN[12]/_REN[10] _REN[13]=_REN[13]/_REN[10] ; CALC TARGET POS.
_REN[14]=_XX+(_QQ*_REN[11]) _REN[15]=_YY+(_QQ*_REN[12]) _REN[16]=_ZZ+(_QQ*_REN[13])
L9710(_REN[14],_REN[15],_REN[16],RENC[19]*0.6) CASE(RENC[49]) OF 1 GOTOF LN6 2 GOTOF LN7 ; CALC BACK OFF POS.
_REN[21]=$AA_MW[AXV[1]]-(_REN[31]*_REN[11]) _REN[22]=$AA_MW[AXV[2]]-(_REN[31]*_REN[12])
_REN[23]=$AA_MW[AXV[3]]-(_REN[31]*_REN[13]);-RENC[16]
G1 AX[AXV[1]]=_REN[21] AX[AXV[2]]=_REN[22] AX[AXV[3]]=_REN[23] F=RENC[19]; BACK OFF STOPRE
G4F.3; DWELL MP700 STOPRE
L9710(_REN[14],_REN[15],_REN[16],100*RENC[29]) CASE(RENC[49]) OF 1 GOTOF LN6 2 GOTOF LN7 RENC[49]=0; NRML MEAS RENC[24]=$AA_MW[AXV[1]] RENC[25]=$AA_MW[AXV[2]] RENC[26]=$AA_MW[AXV[3]] GOTOF LN8 LN6:
RENC[49]=1
RENC[24]=_REN[1] RENC[25]=_REN[2] RENC[26]=_REN[3] GOTOF LN8 LN7:
RENC[49]=2
RENC[24]=_REN[14] RENC[25]=_REN[15] RENC[26]=_REN[16] LN8:
G1 AX[AXV[1]]=_REN[1] AX[AXV[2]]=_REN[2] AX[AXV[3]]=_REN[3] F=RENC[19] STOPRE RET
%_N_L9731_SPF
;$PATH=/_N_SPF_DIR
PROC L9731(REAL _AA,REAL _YY,REAL _XX) DEF REAL _REN[33]
; REN RENP[9] LOAD/ATAN IF _XX<>9999 GOTOF LN6
_REN[3]=ROUND(_AA/30); ANG NO _REN[4]=0; COUNT _REN[5]=0 LN1:
IF _REN[5]==1 GOTOF LN2 RENP[9]=RENP[0] _REN[5]=1 GOTOF LN3 LN2:
RENP[9]=RENP[1] _REN[5]=0 LN3:
IF _REN[4]>12 GOTOF LN4
IF ABS(_REN[3])==_REN[4] GOTOF LN10 _REN[4]=_REN[4]+3 GOTOB LN1 LN4:
IF _REN[3]<0 GOTOF LN5
RENP[9]=RENP[9+_REN[3]-(TRUNC(_REN[3]/3)*1)] GOTOF LN10 LN5:
RENP[9]=RENP[9+12+_REN[3]-(TRUNC((12+_REN[3])/3)*1)] GOTOF LN10 LN6:
_XX=(ROUND(_XX*10000))/10000 _YY=(ROUND(_YY*10000))/10000 IF _XX<>0 GOTOF LN7 RENC[18]=90
IF _YY >= 0 GOTOF LN10 RENC[18]=-90 GOTOF LN10 LN7:
IF _YY<>0 GOTOF LN8 RENC[18]=0
IF _XX >= 0 GOTOF LN10 RENC[18]=180 GOTOF LN10 LN8:
RENC[18]=ATAN2(ABS(_YY),ABS(_XX)) IF _XX >= 0 GOTOF LN9 RENC[18]=180-RENC[18] LN9:
IF _YY >= 0 GOTOF LN10 RENC[18]=-RENC[18] LN10: STOPRE RET
%_N_L9732_SPF
;$PATH=/_N_SPF_DIR
PROC L9732(REAL _TT,REAL _DD,REAL _CC,REAL _ZZ,REAL _SS,REAL _WW) DEF REAL _REN[33] ; REN OFFSET TYPE
IF _WW==1 GOTOF LN20 ; UPDATE LENGTH
IF _ZZ==9999 GOTOF LN10 ; LEN GEOM
;$TC_DP3[TRUNC(_TT),_DD]=$TC_DP3[TRUNC(_TT),_DD]-_CC ; LEN WEAR
$TC_DP12[TRUNC(_TT),_DD]=$TC_DP12[TRUNC(_TT),_DD]-_CC GOTOF LN50 LN10:
; RAD GEOM
;$TC_DP6[TRUNC(_TT),_DD]=$TC_DP6[TRUNC(_TT),_DD]-_CC ; RAD WEAR
$TC_DP15[TRUNC(_TT),_DD]=$TC_DP15[TRUNC(_TT),_DD]-_CC ; RAD
RENC[18]=$TC_DP6[TRUNC(_TT),_DD]+$TC_DP15[TRUNC(_TT),_DD] GOTOF LN50 LN20:
IF _SS==9999 GOTOF LN50 ; ZERO OFFSETS UPDATE
_REN[4]=$P_UIFR[$P_UIFRNUM,AXV[1],TR]; CURRENT ZERO OFFSET _REN[5]=$P_UIFR[$P_UIFRNUM,AXV[2],TR] _REN[6]=$P_UIFR[$P_UIFRNUM,AXV[3],TR] IF RENC[40]==9999 GOTOF LN30 IF _SS==1000 GOTOF LN25 IF _SS>=0 GOTOF LN22
$P_UIFR[ABS(_SS),AXV[1],TR]=_REN[4]+RENC[35]; SET TO PROGRAM ZERO GOTOF LN30 LN22:
$P_UIFR[ABS(_SS),AXV[1],TR]=_REN[4]+RENC[40]; SET TO PROGRAM POSITION GOTOF LN30 LN25:
_REN[4]=$P_UBFR[AXV[1],TR]
$P_UBFR[AXV[1],TR]=_REN[4]+RENC[40];SET BASE ZERO LN30:
IF RENC[41]==9999 GOTOF LN40 IF _SS==1000 GOTOF LN35 IF _SS>=0 GOTOF LN32
$P_UIFR[ABS(_SS),AXV[2],TR]=_REN[5]+RENC[36]; SET TO PROGRAM ZERO GOTOF LN40 LN32:
$P_UIFR[ABS(_SS),AXV[2],TR]=_REN[5]+RENC[41]; SET TO PROGRAM POSITION GOTOF LN40 LN35:
_REN[5]=$P_UBFR[AXV[2],TR]
$P_UBFR[AXV[2],TR]=_REN[5]+RENC[41];SET BASE ZERO LN40:
IF _ZZ==9999 GOTOF LN50
IF RENC[42]==9999 GOTOF LN50 IF _SS==1000 GOTOF LN45 IF _SS>=0 GOTOF LN42
$P_UIFR[ABS(_SS),AXV[3],TR]=_REN[6]+RENC[37]; SET TO PROGRAM ZERO GOTOF LN50 LN42:
$P_UIFR[ABS(_SS),AXV[3],TR]=_REN[6]+RENC[42]; SET TO PROGRAM POSITION GOTOF LN50 LN45: