0
点赞
收藏
分享

微信扫一扫

RationalDMIS 7.1均分孔测量程序

fbd4ffd0717b 2022-06-07 阅读 100

RationalDMIS 7.1均分孔测量程序_ruby


UNITS/MM, ANGDEC
WKPLAN/XYPLAN
PRCOMP/ON
TECOMP/ON
FLY/1.0
MODE/PROG, MAN
SNSET/APPRCH, 2.000000
SNSET/RETRCT, 2.000000
SNSET/DEPTH, 0
SNSET/SEARCH, 10.000000
SNSET/CLRSRF, 10.000000
RECALL/D(MCS)
SNSLCT/S(ROOTSN2)
GEOALG/CIRCLE, LSTSQR
GEOALG/ARC, LSTSQR
GEOALG/PLANE, LSTSQR
$$
$$$$$$$$$$$$$$$$$$ WRIT BY LM $$$$$$$$$$$E$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
MODE/MAN
decl/INTGR,kk,ii,HoleNum
decl/real,rr,dcir1,dcir2,angel1,TPOS,SmallZZ,Smallzf,BigZZ,BigZf
$$ Variable value assignment works for Integer, Real, and Char
KK = PROMPT/'小孔数'
RR = PROMPT/'极半径'
dcir1=PROMPT/'大孔直径'
BigZZ=PROMPT/'大圆直径上公差'
BigZf=PROMPT/'大圆直径下公差'

dcir2=PROMPT/'小孔直径'
SmallZZ=PROMPT/'小圆直径上公差'
SmallZf=PROMPT/'小圆直径下公差'
TPOS=PROMPT/'位置度公差带'

angel1=assign/360/kk
decl/char,20,cirname1,cirname2


F(PLN1) = FEAT/PLANE,CART, -277.370172, -303.338658, -458.461637, 0.005706,$
-0.004680, 0.999973
$$ Measurement points are created through actual points
MEAS/PLANE, F(PLN1), 4
PTMEAS/CART, -244.122854, -259.746645, -458.447335, 0.005706, -0.004680,$
0.999973
PTMEAS/CART, -318.208508, -274.205354, -458.092288, 0.005706, -0.004680,$
0.999973
PTMEAS/CART, -318.193010, -341.932332, -458.409324, 0.005706, -0.004680,$
0.999973
PTMEAS/CART, -228.956314, -337.470301, -458.897600, 0.005706, -0.004680,$
0.999973
ENDMES


F(CIR1) = FEAT/CIRCLE,INNER,CART, -265.531281, -310.565580, -462.333525,$
0.005700, -0.004683, 0.999973, 69.014499
$$ Measurement points are created through actual points
MEAS/CIRCLE, F(CIR1), 4
PTMEAS/CART, -271.024928, -276.498974, -462.142673, 0.159203, -0.987230,$
-0.005531
PTMEAS/CART, -299.755631, -314.971679, -462.159074, 0.991802, 0.127686,$
-0.005055
PTMEAS/CART, -261.988903, -344.890048, -462.514462, -0.102656, 0.994703,$
0.005243
PTMEAS/CART, -231.034255, -309.748103, -462.526336, -0.999704,$
-0.023690, 0.005588
ENDMES

F(PROJCI1) = FEAT/CIRCLE,INNER,CART, -265.509767, -310.583226, -458.563220,$
0.005706, -0.004680, 0.999973, 69.014499
CONST/CIRCLE,F(PROJCI1),PROJCT,FA(CIR1),FA(PLN1)

F(CIR2) = FEAT/CIRCLE,INNER,CART, -214.964915, -288.964071, -462.174396,$
0.005700, -0.004683, 0.999973, 12.814570
$$ Measurement points are created through actual points
MEAS/CIRCLE, F(CIR2), 4
PTMEAS/CART, -215.103499, -282.558359, -462.143607, 0.021629, -0.999755,$
-0.004805
PTMEAS/CART, -221.323167, -289.754562, -462.141855, 0.992347, 0.123374,$
-0.005079
PTMEAS/CART, -214.751743, -295.367732, -462.205600, -0.033270, 0.999435,$
0.004870
PTMEAS/CART, -208.574356, -288.502680, -462.208663, -0.997390,$
-0.072010, 0.005348
ENDMES

F(PROJCI2) = FEAT/CIRCLE,INNER,CART, -214.945379, -288.980095, -458.750643,$
0.005706, -0.004680, 0.999973, 12.814570
CONST/CIRCLE,F(PROJCI2),PROJCT,FA(CIR2),FA(PLN1)


$$ 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),(PROJCI1),(PROJCI2),(BFLN1), 0.000000, 0.000000,$
1.000000
CONST/LINE,F(BFLN1),BF,FA(PROJCI1),FA(PROJCI2)
D(CRD1) = DATSET/FA(PLN1), ZDIR, ZORIG, FA(BFLN1), XDIR, YORIG, FA(PROJCI1),$
XORIG
D(CRD1) = TRANS/ZORIG, -0, YORIG, -0, XORIG, -0
MODE/PROG,MAN


$$ 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

$$ FUNCION: Move machine CLEAR DIST above the current clear surface
$$ plane and then move machine parallel to the clear surface
$$ plane to the project point of POINT(TARX, TARY, TARZ) on
$$ the clear surface plane but CLEAR DIST above the 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
$$ ruby ball instead of the center of it.

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/GOTO, XAXIS
CURY = VALUE/GOTO, YAXIS
CURZ = VALUE/GOTO, 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
SNSET/SEARCH, 10.0000
SNSET/CLRSRF, FA(PLN1), 10.0000


ii=assign/1

do/ii,1,kk,1
MODE/AUTO,PROG,MAN
cirname1=assign/concat('cir_',str(ii))
cirname2=assign/concat('PROJCI_',str(ii))
F(@cirname1) = FEAT/CIRCLE,INNER,POL,rr,360-angel1*ii, -2.5, 0.000000,$
-0.000000, 1.000000, dcir2
$$ Measurement points are created through actual points
MEAS/CIRCLE, F(@cirname1), 4

ENDMES
F(@cirname2) = FEAT/CIRCLE,INNER,POL,rr,360-angel1*ii, 0.000758,$
0.000007, 0.000000, 1.000000, dcir2
CONST/CIRCLE,F(@cirname2),PROJCT,FA(@cirname1),FA(PLN1)


T(TPOS2D1)=TOL/POS,2D, TPOS
OUTPUT/FA(@cirname2), TA(TPOS2D1)



$$小圆的直径公差带
T(TDIAM1) = TOL/DIAM, Smallzf, Smallzz
OUTPUT/FA(@cirname2), TA(TDIAM1)

enddo


$$大圆直径公差带

T(TDIAM2) = TOL/DIAM, BigZf, BigZZ
F(PROJCI1) = FEAT/CIRCLE,INNER,POL, 0.000025, 0, 0.001124, 0.000007,$
0.000000, 1.000000, dcir1

OUTPUT/FA(PROJCI1), TA(TDIAM2)

RationalDMIS 7.1均分孔测量程序_ide_02


举报

相关推荐

0 条评论