0
点赞
收藏
分享

微信扫一扫

RationalDMIS2023均分孔测量程序


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
$$ Variable value assignment works for Integer, Real, and Char
KK = PROMPT/'小孔数'
RR = PROMPT/'极半径'
dcir1=PROMPT/'大孔直径'
dcir2=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, -0.100000, 0.100000
OUTPUT/FA(@cirname2), TA(TDIAM1)

enddo


$$大圆直径公差带

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

OUTPUT/FA(PROJCI1), TA(TDIAM2)


举报

相关推荐

0 条评论