1.先手动创建平面找正,确定下面圆的投影平面。
DMISMN/'Created by [爱科腾瑞科技(北京)有限公司-091520-DEMO-11023(力合)] on 星期三, 八月 05, 2020', 4.0
UNITS/MM, ANGDEC, MMPS
WKPLAN/XYPLAN
PRCOMP/ON
TECOMP/ON
FLY/1.0000
MODE/MAN
SNSET/APPRCH, 2.0000
SNSET/RETRCT, 2.0000
SNSET/DEPTH, 0.0000
SNSET/SEARCH, 10.0000
SNSET/CLRSRF, 15.0000
RECALL/D(MCS)
SNSLCT/S(D2L20)
GEOALG/BF, LSTSQR
GEOALG/ANGLB, DEFALT
GEOALG/CIRCLE, LSTSQR
GEOALG/ARC, LSTSQR
GEOALG/PLANE, LSTSQR
$$
$$
$$*/
MODE/MAN
F(PLN1)=FEAT/PLANE,CART,47.7511,-1.9025,0.0000,0.0000,0.0000,1.0000
$$ Measurement points are created through nominal points
MEAS/PLANE, F(PLN1), 4
PTMEAS/CART, -38.4061, 29.9471, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, -32.0788, -35.6006, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, 127.5692, -36.3238, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, 133.9200, 34.3671, 0.0000, 0.0000, 0.0000, 1.0000
ENDMES
D(CRD1) = DATSET/FA(PLN1), ZDIR
2.手动测量两基准孔,最佳拟合直线。
F(CIR1)=FEAT/CIRCLE,INNER,CART,0.0000,0.0000,-4.0704,0.0000,0.0000,1.0000, 30.0000
$$ Measurement points are created through actual points
MEAS/CIRCLE, F(CIR1), 3
PTMEAS/CART, -1.9872, 14.8678, -4.0704, 0.1325, -0.9912, -0.0000
PTMEAS/CART, 14.9999, -0.0451, -4.0704, -1.0000, 0.0030, -0.0000
PTMEAS/CART, 9.0171, -11.9872, -4.0704, -0.6011, 0.7991, -0.0000
ENDMES
F(CIR2)=FEAT/CIRCLE,INNER,CART,100.0000,0.0000,-4.8138,0.0000,0.0000,1.0000, 30.0000
$$ Measurement points are created through actual points
MEAS/CIRCLE, F(CIR2), 3
PTMEAS/CART, 97.7259, 14.8266, -4.8138, 0.1516, -0.9884, -0.0000
PTMEAS/CART, 114.9977, 0.2606, -4.8138, -0.9998, -0.0174, -0.0000
PTMEAS/CART, 97.9160, -14.8545, -4.8138, 0.1389, 0.9903, -0.0000
ENDMES
$$ CREATED BY : External-Array Software, Inc
$$ DATE : Jan 19, 2009
$$ DISLAIMER:
$$ This Macro has been tested internally but not been tested with
$$ other DMIS compatible software. This Macro is provided as sample
$$ and can be modifed for your own use. External-Array doesn't not
$$ guarantee the quality of this Macro.
$$ FUNCION: Create a nominal line using two actual features
$$ DI, DJ, DK are the normal vector of the plane that the line lies on
M(EASI_2PT_TO_LINE) = Macro/'FEAT1', 'FEAT2', 'FEATLINE', DI, DJ, DK
DECL/LOCAL,DOUBLE,DVALUE[6]
DECL/LOCAL,INTGR, INDEX1, INDEX2
CALL/M(EASI_GETX_INDEX), FEAT1, INDEX1
CALL/M(EASI_GETX_INDEX), FEAT2, INDEX2
DVALUE[1] = OBTAIN/FA(@FEAT1),INDEX1
DVALUE[2] = OBTAIN/FA(@FEAT1),INDEX1+1
DVALUE[3] = OBTAIN/FA(@FEAT1),INDEX1+2
DVALUE[4] = OBTAIN/FA(@FEAT2),INDEX2
DVALUE[5] = OBTAIN/FA(@FEAT2),INDEX2+1
DVALUE[6] = OBTAIN/FA(@FEAT2),INDEX2+2
F(@FEATLINE) = FEAT/LINE,BND,CART,DVALUE[1],DVALUE[2],DVALUE[3],$
DVALUE[4],DVALUE[5],DVALUE[6],$
DI, DJ, DK
ENDMAC
CALL/M(EASI_2PT_TO_LINE),(CIR1),(CIR2),(LN_BF1), 0.0000, 0.0000, 1.0000
CONST/LINE,F(LN_BF1),BF,FA(CIR1),FA(CIR2)
3.粗建零件坐标系
手动创建两个圆,用一个平面两个圆先粗建坐标系。
D(CRD2) = DATSET/FA(PLN1), ZDIR, ZORIG, FA(LN_BF1), XDIR, FA(CIR1), XORIG
D(CRD2) = TRANS/ZORIG, -0, YORIG, FA(CIR1), XORIG, -0
4.选择一个实测面作为安全平面
MODE/PROG,MAN
$$ MACRO: EASI_CLEARPLN_GOTO
$$ FUNCTION: CLEARANCE SURFACE IMPLEMENTATION
$$ Move machine CLEAR SURFACE DIST above the current clear surface
$$ plane and then move machine parallel to the clear surface plane
$$ ALL Macro parameters are in PCS and Current UNITS
$$ Last update: 3-1-04 Add mode checking. only works in PROG MODE
$$ Last update: 8-24-04 Clear position is based on the surface of
$$
$$ This sample DMIS Macro is provided by External-Array Software, Inc.
$$ It should be modified for your own use. There is no guarantee for
$$ the quality of this Macro. November, 2003
M(EASI_CLEARPLN_GOTO) = MACRO/ISNOM, TARX, TARY, TARZ
DECL/LOCAL, REAL, CCX, CCY, CCZ, CCI, CCJ, CCK
DECL/LOCAL, REAL, CURX, CURY, CURZ, TD, CLRDIST, SDIAM
DECL/LOCAL, CHAR, 255, CLRLABEL, FLABEL, MMODE, SNAME
MMODE = VALUE/MODE
CLRLABEL = VALUE/SNSET, CLRSRF
IF/ ( (LEN(CLRLABEL) .GT. 0) .AND. (MMODE .EQ. 'PROG,MAN') )
CLRDIST = VALUE/SNSET, CLRSRF, DIST
FLABEL = ASSIGN/'FA'
IF/ ISNOM .EQ. 0
FLABEL = ASSIGN/'F'
ENDIF
CCX = OBTAIN/FLABEL(@CLRLABEL), 3
CCY = OBTAIN/FLABEL(@CLRLABEL), 4
CCZ = OBTAIN/FLABEL(@CLRLABEL), 5
CCI = OBTAIN/FLABEL(@CLRLABEL), 6
CCJ = OBTAIN/FLABEL(@CLRLABEL), 7
CCK = OBTAIN/FLABEL(@CLRLABEL), 8
SNAME = VALUE/SNSLCT
SDIAM = OBTAIN/SS(SNAME), 8
CCX = ASSIGN/CCX + CCI * SDIAM/2
CCY = ASSIGN/CCY + CCJ * SDIAM/2
CCZ = ASSIGN/CCZ + CCK * SDIAM/2
CURX = VALUE/GOTOM, XAXIS
CURY = VALUE/GOTOM, YAXIS
CURZ = VALUE/GOTOM, ZAXIS
TD = ASSIGN/(CURX - CCX) * CCI + (CURY - CCY) * CCJ + (CURZ - CCZ) * CCK
IF/ TD .LT. CLRDIST
TD = ASSIGN/(CLRDIST - TD)
GOTO/CURX+CCI*TD, CURY+CCJ*TD, CURZ+CCK*TD
ENDIF
TD = ASSIGN/(TARX - CCX) * CCI + (TARY - CCY) * CCJ + (TARZ - CCZ) * CCK
IF/ TD .LT. CLRDIST
TD = ASSIGN/(CLRDIST - TD)
GOTO/TARX+CCI*TD, TARY+CCJ*TD, TARZ+CCK*TD
ENDIF
ENDIF
ENDMAC
SNSET/APPRCH, 2.0000
SNSET/RETRCT, 2.0000
SNSET/DEPTH, 0.0000
SNSET/SEARCH, 10.0000
SNSET/CLRSRF, FA(PLN1), 15.0000
5.通过赋值功能,将上面手动创建的平面每个点的X、Y值转换成变量。
DECL/COMMON,REAL,PLN1_1_AX
PLN1_1_AX = OBTAIN/FA(PLN1)[1],2
DECL/COMMON,REAL,PLN1_1_AY
PLN1_1_AY = OBTAIN/FA(PLN1)[1],3
DECL/COMMON,REAL,PLN1_2_AX
PLN1_2_AX = OBTAIN/FA(PLN1)[2],2
DECL/COMMON,REAL,PLN1_2_AY
PLN1_2_AY = OBTAIN/FA(PLN1)[2],3
DECL/COMMON,REAL,PLN1_3_AX
PLN1_3_AX = OBTAIN/FA(PLN1)[3],2
DECL/COMMON,REAL,PLN1_3_AY
PLN1_3_AY = OBTAIN/FA(PLN1)[3],3
DECL/COMMON,REAL,PLN1_4_AX
PLN1_4_AX = OBTAIN/FA(PLN1)[4],2
DECL/COMMON,REAL,PLN1_4_AY
PLN1_4_AY = OBTAIN/FA(PLN1)[4],3
6.创建点元素,将每个点的理论值和目标值中的X、Y修改成变量,用这些点构造平面。
F(PT1) = FEAT/POINT,CART, PLN1_1_AX,PLN1_1_AY,0, 0,0,1
F(PT2) = FEAT/POINT,CART, PLN1_2_AX,PLN1_2_AY,0, 0,0,1
F(PT3) = FEAT/POINT,CART, PLN1_3_AX,PLN1_3_AY,0, 0,0,1
F(PT4) = FEAT/POINT,CART, PLN1_4_AX,PLN1_4_AY,0, 0,0,1
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, -38.4061, 29.9471, 3.0000
MEAS/POINT, F(PT1), 1
GOTO/CART, PLN1_1_AX,PLN1_1_AY,16.0000
PTMEAS/CART, PLN1_1_AX,PLN1_1_AY,0.0000,0.0000,0.0000,1.0000
ENDMES
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, -32.0788, -35.6006, 3.0000
MEAS/POINT, F(PT2), 1
GOTO/CART, PLN1_2_AX,PLN1_2_AY,16.0000
PTMEAS/CART, PLN1_2_AX,PLN1_2_AY,0.0000,0.0000,0.0000,1.0000
ENDMES
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, 127.5692, -36.3238, 3.0000
MEAS/POINT, F(PT3), 1
GOTO/CART, PLN1_3_AX,PLN1_3_AY,16.0000
PTMEAS/CART, PLN1_3_AX,PLN1_3_AY,0.0000,0.0000,0.0000,1.0000
ENDMES
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, 133.9200, 34.3671, 3.0000
MEAS/POINT, F(PT4), 1
GOTO/CART, PLN1_4_AX,PLN1_4_AY,16.0000
PTMEAS/CART,PLN1_4_AX,PLN1_4_AY,0.0000,0.0000,0.0000,1.0000
ENDMES
F(PLN_BF1)=FEAT/PLANE,CART,47.7511,-1.9025,0.0000,0.0000,0.0000,1.0000
CONST/PLANE,F(PLN_BF1),BF,FA(PT1),FA(PT2),FA(PT3),FA(PT4)
7.通过软件注释/输入功能创建需要键入的尽行数据。
DECL/COMMON,DOUBLE,D1
DECL/COMMON,DOUBLE,D2
DECL/COMMON,DOUBLE,DX1
DECL/COMMON,DOUBLE,DY1
DECL/COMMON,DOUBLE,D1D2
D1 = PROMPT/'请输入圆1直径;'
D2 = PROMPT/'请输入圆2直径;'
DX1 = PROMPT/'请输入圆1X向坐标;'
DY1 = PROMPT/'请输入圆1Y向坐标;'
D1D2 = PROMPT/'请输入两圆中心距;'
同样将输入的尺寸数据通过赋值功能转换成变量。
8.创建元素圆,将理论值以及理论直径修改为变量。
MODE/AUTO,PROG,MAN
SNSET/APPRCH, 2.0000
SNSET/RETRCT, 2.0000
SNSET/DEPTH, 0.0000
SNSET/SEARCH, 10.0000
SNSET/CLRSRF, FA(PLN_BF1), 15.0000
F(圆1)=FEAT/CIRCLE,INNER,CART,DX1,DY1,-3.0000,0.0000,0.0000,1.0000, D1
$$ Empty Meas Block
MEAS/CIRCLE, F(圆1), 5
ENDMES
F(圆2)=FEAT/CIRCLE,INNER,CART,DX1+D1D2,DY1,-3.0000,0.0000,0.0000,1.0000, D2
$$ Empty Meas Block
MEAS/CIRCLE, F(圆2), 5
ENDMES
9.最佳拟合直线,精建坐标系。
CALL/M(EASI_2PT_TO_LINE),(圆1),(圆2),(LN_BF2), 0.0000, 0.0000, 1.0000
CONST/LINE,F(LN_BF2),BF,FA(圆1),FA(圆2)
D(CRD4) = DATSET/FA(PLN_BF1), ZDIR, ZORIG, FA(LN_BF2), XDIR, FA(圆1), XORIG
D(CRD4) = TRANS/ZORIG, -0, YORIG, FA(圆1), XORIG, -0
完整程序代码如下:
$$/* Header
DMISMN/'Created by [爱科腾瑞科技(北京)有限公司-091520-DEMO-11023(力合)] on 星期三, 八月 05, 2020', 4.0
UNITS/MM, ANGDEC, MMPS
WKPLAN/XYPLAN
PRCOMP/ON
TECOMP/ON
FLY/1.0000
MODE/MAN
SNSET/APPRCH, 2.0000
SNSET/RETRCT, 2.0000
SNSET/DEPTH, 0.0000
SNSET/SEARCH, 10.0000
SNSET/CLRSRF, 15.0000
RECALL/D(MCS)
SNSLCT/S(D2L20)
GEOALG/BF, LSTSQR
GEOALG/ANGLB, DEFALT
GEOALG/CIRCLE, LSTSQR
GEOALG/ARC, LSTSQR
GEOALG/PLANE, LSTSQR
$$
$$
$$*/
MODE/MAN
F(PLN1)=FEAT/PLANE,CART,47.7511,-1.9025,0.0000,0.0000,0.0000,1.0000
$$ Measurement points are created through nominal points
MEAS/PLANE, F(PLN1), 4
PTMEAS/CART, -38.4061, 29.9471, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, -32.0788, -35.6006, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, 127.5692, -36.3238, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, 133.9200, 34.3671, 0.0000, 0.0000, 0.0000, 1.0000
ENDMES
D(CRD1) = DATSET/FA(PLN1), ZDIR
F(CIR1)=FEAT/CIRCLE,INNER,CART,0.0000,0.0000,-4.0704,0.0000,0.0000,1.0000, 30.0000
$$ Measurement points are created through actual points
MEAS/CIRCLE, F(CIR1), 3
PTMEAS/CART, -1.9872, 14.8678, -4.0704, 0.1325, -0.9912, -0.0000
PTMEAS/CART, 14.9999, -0.0451, -4.0704, -1.0000, 0.0030, -0.0000
PTMEAS/CART, 9.0171, -11.9872, -4.0704, -0.6011, 0.7991, -0.0000
ENDMES
F(CIR2)=FEAT/CIRCLE,INNER,CART,100.0000,0.0000,-4.8138,0.0000,0.0000,1.0000, 30.0000
$$ Measurement points are created through actual points
MEAS/CIRCLE, F(CIR2), 3
PTMEAS/CART, 97.7259, 14.8266, -4.8138, 0.1516, -0.9884, -0.0000
PTMEAS/CART, 114.9977, 0.2606, -4.8138, -0.9998, -0.0174, -0.0000
PTMEAS/CART, 97.9160, -14.8545, -4.8138, 0.1389, 0.9903, -0.0000
ENDMES
$$ CREATED BY : External-Array Software, Inc
$$ DATE : Jan 19, 2009
$$ DISLAIMER:
$$ This Macro has been tested internally but not been tested with
$$ other DMIS compatible software. This Macro is provided as sample
$$ and can be modifed for your own use. External-Array doesn't not
$$ guarantee the quality of this Macro.
$$ FUNCION: Create a nominal line using two actual features
$$ DI, DJ, DK are the normal vector of the plane that the line lies on
M(EASI_2PT_TO_LINE) = Macro/'FEAT1', 'FEAT2', 'FEATLINE', DI, DJ, DK
DECL/LOCAL,DOUBLE,DVALUE[6]
DECL/LOCAL,INTGR, INDEX1, INDEX2
CALL/M(EASI_GETX_INDEX), FEAT1, INDEX1
CALL/M(EASI_GETX_INDEX), FEAT2, INDEX2
DVALUE[1] = OBTAIN/FA(@FEAT1),INDEX1
DVALUE[2] = OBTAIN/FA(@FEAT1),INDEX1+1
DVALUE[3] = OBTAIN/FA(@FEAT1),INDEX1+2
DVALUE[4] = OBTAIN/FA(@FEAT2),INDEX2
DVALUE[5] = OBTAIN/FA(@FEAT2),INDEX2+1
DVALUE[6] = OBTAIN/FA(@FEAT2),INDEX2+2
F(@FEATLINE) = FEAT/LINE,BND,CART,DVALUE[1],DVALUE[2],DVALUE[3],$
DVALUE[4],DVALUE[5],DVALUE[6],$
DI, DJ, DK
ENDMAC
CALL/M(EASI_2PT_TO_LINE),(CIR1),(CIR2),(LN_BF1), 0.0000, 0.0000, 1.0000
CONST/LINE,F(LN_BF1),BF,FA(CIR1),FA(CIR2)
D(CRD2) = DATSET/FA(PLN1), ZDIR, ZORIG, FA(LN_BF1), XDIR, FA(CIR1), XORIG
D(CRD2) = TRANS/ZORIG, -0, YORIG, FA(CIR1), XORIG, -0
MODE/PROG,MAN
$$ MACRO: EASI_CLEARPLN_GOTO
$$ FUNCTION: CLEARANCE SURFACE IMPLEMENTATION
$$ Move machine CLEAR SURFACE DIST above the current clear surface
$$ plane and then move machine parallel to the clear surface plane
$$ ALL Macro parameters are in PCS and Current UNITS
$$ Last update: 3-1-04 Add mode checking. only works in PROG MODE
$$ Last update: 8-24-04 Clear position is based on the surface of
$$
$$ This sample DMIS Macro is provided by External-Array Software, Inc.
$$ It should be modified for your own use. There is no guarantee for
$$ the quality of this Macro. November, 2003
M(EASI_CLEARPLN_GOTO) = MACRO/ISNOM, TARX, TARY, TARZ
DECL/LOCAL, REAL, CCX, CCY, CCZ, CCI, CCJ, CCK
DECL/LOCAL, REAL, CURX, CURY, CURZ, TD, CLRDIST, SDIAM
DECL/LOCAL, CHAR, 255, CLRLABEL, FLABEL, MMODE, SNAME
MMODE = VALUE/MODE
CLRLABEL = VALUE/SNSET, CLRSRF
IF/ ( (LEN(CLRLABEL) .GT. 0) .AND. (MMODE .EQ. 'PROG,MAN') )
CLRDIST = VALUE/SNSET, CLRSRF, DIST
FLABEL = ASSIGN/'FA'
IF/ ISNOM .EQ. 0
FLABEL = ASSIGN/'F'
ENDIF
CCX = OBTAIN/FLABEL(@CLRLABEL), 3
CCY = OBTAIN/FLABEL(@CLRLABEL), 4
CCZ = OBTAIN/FLABEL(@CLRLABEL), 5
CCI = OBTAIN/FLABEL(@CLRLABEL), 6
CCJ = OBTAIN/FLABEL(@CLRLABEL), 7
CCK = OBTAIN/FLABEL(@CLRLABEL), 8
SNAME = VALUE/SNSLCT
SDIAM = OBTAIN/SS(SNAME), 8
CCX = ASSIGN/CCX + CCI * SDIAM/2
CCY = ASSIGN/CCY + CCJ * SDIAM/2
CCZ = ASSIGN/CCZ + CCK * SDIAM/2
CURX = VALUE/GOTOM, XAXIS
CURY = VALUE/GOTOM, YAXIS
CURZ = VALUE/GOTOM, ZAXIS
TD = ASSIGN/(CURX - CCX) * CCI + (CURY - CCY) * CCJ + (CURZ - CCZ) * CCK
IF/ TD .LT. CLRDIST
TD = ASSIGN/(CLRDIST - TD)
GOTO/CURX+CCI*TD, CURY+CCJ*TD, CURZ+CCK*TD
ENDIF
TD = ASSIGN/(TARX - CCX) * CCI + (TARY - CCY) * CCJ + (TARZ - CCZ) * CCK
IF/ TD .LT. CLRDIST
TD = ASSIGN/(CLRDIST - TD)
GOTO/TARX+CCI*TD, TARY+CCJ*TD, TARZ+CCK*TD
ENDIF
ENDIF
ENDMAC
SNSET/APPRCH, 2.0000
SNSET/RETRCT, 2.0000
SNSET/DEPTH, 0.0000
SNSET/SEARCH, 10.0000
SNSET/CLRSRF, FA(PLN1), 15.0000
DECL/COMMON,REAL,PLN1_1_AX
PLN1_1_AX = OBTAIN/FA(PLN1)[1],2
DECL/COMMON,REAL,PLN1_1_AY
PLN1_1_AY = OBTAIN/FA(PLN1)[1],3
DECL/COMMON,REAL,PLN1_2_AX
PLN1_2_AX = OBTAIN/FA(PLN1)[2],2
DECL/COMMON,REAL,PLN1_2_AY
PLN1_2_AY = OBTAIN/FA(PLN1)[2],3
DECL/COMMON,REAL,PLN1_3_AX
PLN1_3_AX = OBTAIN/FA(PLN1)[3],2
DECL/COMMON,REAL,PLN1_3_AY
PLN1_3_AY = OBTAIN/FA(PLN1)[3],3
DECL/COMMON,REAL,PLN1_4_AX
PLN1_4_AX = OBTAIN/FA(PLN1)[4],2
DECL/COMMON,REAL,PLN1_4_AY
PLN1_4_AY = OBTAIN/FA(PLN1)[4],3
F(PT1) = FEAT/POINT,CART, PLN1_1_AX,PLN1_1_AY,0, 0,0,1
F(PT2) = FEAT/POINT,CART, PLN1_2_AX,PLN1_2_AY,0, 0,0,1
F(PT3) = FEAT/POINT,CART, PLN1_3_AX,PLN1_3_AY,0, 0,0,1
F(PT4) = FEAT/POINT,CART, PLN1_4_AX,PLN1_4_AY,0, 0,0,1
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, -38.4061, 29.9471, 3.0000
MEAS/POINT, F(PT1), 1
GOTO/CART, PLN1_1_AX,PLN1_1_AY,16.0000
PTMEAS/CART, PLN1_1_AX,PLN1_1_AY,0.0000,0.0000,0.0000,1.0000
ENDMES
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, -32.0788, -35.6006, 3.0000
MEAS/POINT, F(PT2), 1
GOTO/CART, PLN1_2_AX,PLN1_2_AY,16.0000
PTMEAS/CART, PLN1_2_AX,PLN1_2_AY,0.0000,0.0000,0.0000,1.0000
ENDMES
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, 127.5692, -36.3238, 3.0000
MEAS/POINT, F(PT3), 1
GOTO/CART, PLN1_3_AX,PLN1_3_AY,16.0000
PTMEAS/CART, PLN1_3_AX,PLN1_3_AY,0.0000,0.0000,0.0000,1.0000
ENDMES
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, 133.9200, 34.3671, 3.0000
MEAS/POINT, F(PT4), 1
GOTO/CART, PLN1_4_AX,PLN1_4_AY,16.0000
PTMEAS/CART,PLN1_4_AX,PLN1_4_AY,0.0000,0.0000,0.0000,1.0000
ENDMES
F(PLN_BF1)=FEAT/PLANE,CART,47.7511,-1.9025,0.0000,0.0000,0.0000,1.0000
CONST/PLANE,F(PLN_BF1),BF,FA(PT1),FA(PT2),FA(PT3),FA(PT4)
D(CRD3) = DATSET/FA(PLN_BF1), ZDIR
DECL/COMMON,DOUBLE,D1
DECL/COMMON,DOUBLE,D2
DECL/COMMON,DOUBLE,DX1
DECL/COMMON,DOUBLE,DY1
DECL/COMMON,DOUBLE,D1D2
D1 = PROMPT/'请输入圆1直径;'
D2 = PROMPT/'请输入圆2直径;'
DX1 = PROMPT/'请输入圆1X向坐标;'
DY1 = PROMPT/'请输入圆1Y向坐标;'
D1D2 = PROMPT/'请输入两圆中心距;'
MODE/AUTO,PROG,MAN
SNSET/APPRCH, 2.0000
SNSET/RETRCT, 2.0000
SNSET/DEPTH, 0.0000
SNSET/SEARCH, 10.0000
SNSET/CLRSRF, FA(PLN_BF1), 15.0000
F(圆1)=FEAT/CIRCLE,INNER,CART,DX1,DY1,-3.0000,0.0000,0.0000,1.0000, D1
$$ Empty Meas Block
MEAS/CIRCLE, F(圆1), 5
ENDMES
F(圆2)=FEAT/CIRCLE,INNER,CART,DX1+D1D2,DY1,-3.0000,0.0000,0.0000,1.0000, D2
$$ Empty Meas Block
MEAS/CIRCLE, F(圆2), 5
ENDMES
CALL/M(EASI_2PT_TO_LINE),(圆1),(圆2),(LN_BF2), 0.0000, 0.0000, 1.0000
CONST/LINE,F(LN_BF2),BF,FA(圆1),FA(圆2)
D(CRD4) = DATSET/FA(PLN_BF1), ZDIR, ZORIG, FA(LN_BF2), XDIR, FA(圆1), XORIG
D(CRD4) = TRANS/ZORIG, -0, YORIG, FA(圆1), XORIG, -0