RationalDMIS 7.1 查找孔宏程序

RationalDMIS 7.1 查找孔宏程序
RationalDMIS 7.1 查找孔宏程序
M(HOLESEEK)=MACRO/ELEM_NAME,XX,YY,ZZ,II,JJ,KK,DD,NPOINTS,DEEP

DECL/DOUBLE,ACT_X,ACT_Y,ACT_Z,ANG1,RAD1,RAD2,LAST_Z,DIFF_Z,X2,Y2,Z2
DECL/DOUBLE,SEARCH1,RETRCT1,APPRCH1,OFFS_PLANE_POINTS,PRDIAM,PRRAD,RMEASURE
DECL/CHAR,100,EX_REF_SYS,CNAME,SENSOR_NAME
DECL/INTGR,NUM1,I1,J1,K1
MODE/PROG,MAN

IREADTHEACTUALSEARCHANDRETRCTDISTANCEAPPRCH1=VALUE/SNSET,APPRCHRETRCT1=VALUE/SNSET,RETRCTSEARCH1=VALUE/SNSET,SEARCH I READ THE ACTUAL SEARCH AND RETRCT DISTANCE APPRCH1=VALUE/SNSET,APPRCH RETRCT1=VALUE/SNSET,RETRCT SEARCH1=VALUE/SNSET,SEARCH DEEP1==VALUE/SNSET,DEPTH

$$ I READ THE ACTUAL REFERENCE SYSTEM NAME
EX_REF_SYS=ASSIGN/SCDAT()

$$ READ PROBE DIAMETER AND RADIUS
SENSOR_NAME=ASSIGN/SCSNS()
PRDIAM=OBTAIN/SA(@SENSOR_NAME),10
PRRAD=ASSIGN/PRDIAM/2

SNSET/DEPTH,0
SNSET/SEARCH,PRRAD+DEEP
OFFS_PLANE_POINTS=ASSIGN/2
LAST_Z=ASSIGN/0

$$ SET TEMPORARY ORIGIN AND ALIGNMENT
F(POORIG)=FEAT/POINT,CART,XX,YY,ZZ,II,JJ,KK
FA(POORIG)=FEAT/POINT,CART,XX,YY,ZZ,II,JJ,KK
F(LIZ)=FEAT/LINE,UNBND,CART, XX,YY,ZZ, II,JJ,KK, 1,1,1
FA(LIZ)=FEAT/LINE,UNBND,CART, XX,YY,ZZ, II,JJ,KK, 1,1,1
D(THEO_CENTER) = TRANS/XORIG,FA(POORIG),YORIG,FA(POORIG),ZORIG,FA(POORIG)
D(THEO_CENTER) = DATSET/FA(LIZ),ZDIR

$$-----------------BIG STEP SEARCH-----------------------------
RAD2=ASSIGN/DD/2*0.866
NUM1=ASSIGN/0

DO/I1,2,5,1
DO/J1,0,5,1
DO/K1,1,I1-1,1
ACT_X=ASSIGN/RAD2*(I1-1)COS(DTOR(-30))
ACT_Y=ASSIGN/RAD2
(I1-1)SIN(DTOR(-30))+RAD2(K1-1)
ANG1=ASSIGN/ATAN2(ACT_Y,ACT_X)
RAD1=ASSIGN/SQRT(ACT_XACT_X+ACT_YACT_Y)
ANG1=ASSIGN/RTOD(ANG1)+60J1
ACT_X=ASSIGN/RAD1
COS(DTOR(ANG1))
ACT_Y=ASSIGN/RAD1*SIN(DTOR(ANG1))

BADTST/ON
F(PT)=FEAT/POINT,CART, ACT_X,ACT_Y,LAST_Z, 0,0,1
MEAS/POINT,F(PT),1
PTMEAS/CART, ACT_X,ACT_Y,LAST_Z, 0,0,1
ENDMES

IF/(BADPT())
F(PT)=FEAT/POINT,CART, ACT_X,ACT_Y,LAST_Z, 0,0,1
MEAS/POINT,F(PT),0
ENDMES
ACT_X=OBTAIN/FA(PT),3
ACT_Y=OBTAIN/FA(PT),4
ACT_Z=OBTAIN/FA(PT),5
JUMPTO/(AAA)

ELSE
Z2=OBTAIN/FA(PT),5
DIFF_Z=ASSIGN/Z2-LAST_Z
LAST_Z=ASSIGN/Z2
$$TEXT/OUTFIL,STR(DIFF_Z)

IF/(DIFF_Z.LT.-SQRT(DD)/4)
ACT_Z=ASSIGN/LAST_Z+PRRAD+0.2
JUMPTO/(BBB)
ENDIF

ENDIF

ENDDO
ENDDO
ENDDO

$$-----------------FAIL SEARCH, CHANGE TO MAN MODE-------------------------
MODE/MAN
TEXT/OPER,‘自动搜索失败,请手工测量该孔’

RECALL/D(@EX_REF_SYS)
F(@ELEM_NAME)=FEAT/CIRCLE,INNER,CART, XX,YY,ZZ, II,JJ,KK, DD
RMEAS/CIRCLE,F(@ELEM_NAME),NPOINTS,VECBLD,2,3
ENDMES

(BBB)
$$--------------------SMALL STEP SEATCH----------------------
D(THEO_CENTER) = TRANS/XORIG,FA(PT),YORIG,FA(PT),ZORIG,FA(PT)
RAD2=ASSIGN/(DD-PRDIAM)/20.8660.9

DO/I1,2,5,1
DO/J1,0,5,1
DO/K1,1,I1-1,1
ACT_X=ASSIGN/RAD2*(I1-1)COS(DTOR(-30))
ACT_Y=ASSIGN/RAD2
(I1-1)SIN(DTOR(-30))+RAD2(K1-1)
ANG1=ASSIGN/ATAN2(ACT_Y,ACT_X)
RAD1=ASSIGN/SQRT(ACT_XACT_X+ACT_YACT_Y)
ANG1=ASSIGN/RTOD(ANG1)+60J1
ACT_X=ASSIGN/RAD1
COS(DTOR(ANG1))
ACT_Y=ASSIGN/RAD1*SIN(DTOR(ANG1))

BADTST/ON
F(PT)=FEAT/POINT,CART, ACT_X,ACT_Y,LAST_Z, 0,0,1
MEAS/POINT,F(PT),1
PTMEAS/CART, ACT_X,ACT_Y,LAST_Z, 0,0,1
ENDMES

IF/(BADPT())
F(PT)=FEAT/POINT,CART, ACT_X,ACT_Y,LAST_Z, 0,0,1
MEAS/POINT,F(PT),0
ENDMES
ACT_X=OBTAIN/FA(PT),3
ACT_Y=OBTAIN/FA(PT),4
ACT_Z=OBTAIN/FA(PT),5
JUMPTO/(AAA)
ELSE
LAST_Z=OBTAIN/FA(PT),5
ENDIF

ENDDO
ENDDO
ENDDO

(AAA)
$$-----------------FIND THE HOLE
BADTST/OFF

$$F(TMP_CIR)=FEAT/CIRCLE,INNER,CART, 99999.0000,99999.0000,99999.0000, 0,0,1, 0
RAD1=ASSIGN/0.1
SNSET/DEPTH, 0
SNSET/APPRCH,RAD1
SNSET/RETRCT,0.1
SNSET/SEARCH,10.0000

F(TMP_CIR)=FEAT/CIRCLE,INNER,CART, ACT_X,ACT_Y,ACT_Z, 0,0,1, PRDIAM
MEAS/CIRCLE,F(TMP_CIR),4
PTMEAS/CART,ACT_X-PRRAD,ACT_Y,ACT_Z,1,0,0
PTMEAS/CART,ACT_X+PRRAD,ACT_Y,ACT_Z,-1,0,0
PTMEAS/CART,ACT_X,ACT_Y-PRRAD,ACT_Z,0,1,0
PTMEAS/CART,ACT_X,ACT_Y+PRRAD,ACT_Z,0,-1,0
ENDMES

$$ ORIGIN ON THE TEMPORARY HOLE
D(THEO_CENTER) = TRANS/XORIG,FA(TMP_CIR),YORIG,FA(TMP_CIR)

GOTO/0,0,LAST_Z+PRRAD+5

RMEASURE=OBTAIN/FA(TMP_CIR),10
RMEASURE=ASSIGN/(RMEASURE/2)+OFFS_PLANE_POINTS

SNSET/APPRCH,2
SNSET/RETRCT,2
SNSET/SEARCH,5
F(PLPRO)=FEAT/PLANE,CART,0,0,LAST_Z,0,0,1
MEAS/PLANE,F(PLPRO),4
PTMEAS/CART,RMEASURE,0,LAST_Z+PRRAD,0,0,1
PTMEAS/CART,0,RMEASURE,LAST_Z+PRRAD,0,0,1
PTMEAS/CART,-RMEASURE,0,LAST_Z+PRRAD,0,0,1
PTMEAS/CART,0,-RMEASURE,LAST_Z+PRRAD,0,0,1
ENDMES

D(THEO_CENTER) = DATSET/FA(PLPRO),ZDIR,ZORIG

GOTO/0,0,PRRAD+5

SNSET/APPRCH,(DD-PRDIAM)/2
SNSET/RETRCT,(DD-PRDIAM)/4
F(TMP_CIR)=FEAT/CIRCLE,INNER,CART, 0,0,-DEEP, 0,0,1, DD
MEAS/CIRCLE,F(TMP_CIR),NPOINTS
ENDMES

GOTO/0,0,PRRAD+5

RECALL/D(@EX_REF_SYS)

F(@ELEM_NAME)=FEAT/CIRCLE,INNER,CART, XX,YY,ZZ, II,JJ,KK, DD
CONST/CIRCLE,F(@ELEM_NAME),PROJCT,FA(TMP_CIR),FA(PLPRO)

$$ I SET THE ORIGINAL SEARCH DISTANCE
SNSET/APPRCH,APPRCH1
SNSET/RETRCT,RETRCT1
SNSET/SEARCH,SEARCH1
SNSET/DEPTH,DEEP

$$DISPLY/OFF
ENDMAC

$$==========MAIN PROG

DECL/REAL,X1,Y1,Z1

SNSLCT/SA(P1_90_0n90_0)
MODE/MAN
D(DAT_2) = TRANS/XORIG,10.0000,YORIG,20.0000,ZORIG,30.0000

F(POI_3)=FEAT/POINT,CART,0,0,0,0,0,1
MEAS/POINT,F(POI_3),1
ENDMES

RECALL/D(DAT_2)
SNSET/SEARCH,10.000
SNSET/APPRCH,2.0000
SNSET/RETRCT,2.0000
X1=OBTAIN/FA(POI_3),3
Y1=OBTAIN/FA(POI_3),4
Z1=OBTAIN/FA(POI_3),5

CALL/M(HOLESEEK),‘CIR_8’,X1,Y1,Z1,0,0,1,6,4,1
ENDFIL
RationalDMIS 7.1 查找孔宏程序