生成坐标是建坐标系最常用的一种方法,有无CAD数模情况下均适用,用来建立工件坐标系;

 

步骤1:找正(确定坐标系第一轴)

步骤2:旋转(确定坐标系第二轴)

步骤3:平移(确定坐标系原点)

注意:可以用来找正的元素:平面、圆柱、圆锥。可以用来旋转的元素:直线、 圆柱、圆锥等。可简化为线元素或者构造为线元素的线性元素。可以平移的元素    一般为点元素或者圆等可以简化为点元素的点形元素。 

 

RationalDMIS的‘生成坐标系’广泛应用于各种加工中心、检具、模具、零部件等汽车行业、航空航天等各种领域,直观易懂且操作方便;

 

RationalDMIS 7.1一面两销(平面 圆  圆)构建坐标系_赋值

 

    缸体类(箱体类)零件是典型的一面两销定位、加工,所以测量时建立坐标系使用加工定位的一面两圆。建立坐标系的步骤:

 

      (1)定位面(找正第一轴向),根据定位面的大小测量  足够的点数

 

      (2)两个圆(旋转到第二轴向)

 

      (3)确定原点

1.将工件置于测量机量程中。

 

2.如图测量一个平面和两个圆。

 

在手动测量建系元素前,通过加入“操作者注释”语句引导操作员正确测量。

 

RationalDMIS 7.1一面两销(平面 圆  圆)构建坐标系_数模_02

 

3.手动粗建坐标

 

RationalDMIS 7.1一面两销(平面 圆  圆)构建坐标系_汽车行业_03

RationalDMIS 7.1一面两销(平面 圆  圆)构建坐标系_赋值_04

 

4.自动精建坐标。

 

   通过赋值/取值粗建坐标建系元素的参数,完成不同规格零件的精确建系过程。

 

RationalDMIS 7.1一面两销(平面 圆  圆)构建坐标系_数模_05

RationalDMIS 7.1一面两销(平面 圆  圆)构建坐标系_赋值_06

RationalDMIS 7.1一面两销(平面 圆  圆)构建坐标系_赋值_07

$$/*  Header

DMISMN/'Created by [爱科腾瑞科技(北京)有限公司-091520-DEMO] on 星期三, 五月 13, 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, 20.0000

RECALL/D(MCS)

SNSLCT/S(L20-D2.0)

GEOALG/BF, LSTSQR

GEOALG/ANGLB, DEFALT

GEOALG/CIRCLE, LSTSQR

GEOALG/ARC, LSTSQR

GEOALG/PLANE, LSTSQR

$$

$$

$$*/

MODE/MAN

TEXT/OPER, '请在基准平面上均匀采集5点!'

F(PLN1)=FEAT/PLANE,CART,29.5758,-0.6925,0.0000,0.0000,0.0000,1.0000

$$ Measurement points are created through actual points

MEAS/PLANE, F(PLN1), 5

  PTMEAS/CART, -18.9190,  26.2315, -0.0000, 0.0000, 0.0000, 1.0000

  PTMEAS/CART, -19.2413, -32.4792, -0.0000, 0.0000, 0.0000, 1.0000

  PTMEAS/CART,  32.1704,   2.6102, -0.0000, 0.0000, 0.0000, 1.0000

  PTMEAS/CART,  80.2611,  30.8740, -0.0000, 0.0000, 0.0000, 1.0000

  PTMEAS/CART,  73.6078, -30.6992, -0.0000, 0.0000, 0.0000, 1.0000

ENDMES

D(CRD1) = DATSET/FA(PLN1), ZDIR

D(CRD1) = TRANS/ZORIG, FA(PLN1)

TEXT/OPER, '先测量圆(0,0),在测量(X,0)'

F(CIRA)=FEAT/CIRCLE,INNER,CART,0.0000,0.0000,-2.6386,0.0000,0.0000,1.0000, 12.0000

$$ Measurement points are created through actual points

MEAS/CIRCLE, F(CIRA), 4

  PTMEAS/CART, -0.4924,  5.9798, -2.6386,  0.0821, -0.9966, -0.0000

  PTMEAS/CART, -5.9354, -0.8782, -2.6386,  0.9892,  0.1464, -0.0000

  PTMEAS/CART,  0.6495, -5.9647, -2.6386, -0.1083,  0.9941, -0.0000

  PTMEAS/CART,  5.9668, -0.6305, -2.6386, -0.9945,  0.1051, -0.0000

ENDMES

F(CIRB)=FEAT/CIRCLE,INNER,CART,60.0000,0.0000,-2.5376,0.0000,0.0000,1.0000, 12.0000

$$ Measurement points are created through actual points

MEAS/CIRCLE, F(CIRB), 4

  PTMEAS/CART, 58.6822,  5.8535, -2.5376,  0.2196, -0.9756, -0.0000

  PTMEAS/CART, 65.9869,  0.3962, -2.5376, -0.9978, -0.0660, -0.0000

  PTMEAS/CART, 59.3753, -5.9674, -2.5376,  0.1041,  0.9946, -0.0000

  PTMEAS/CART, 54.0000, -0.0055, -2.5376,  1.0000,  0.0009, -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),(CIRA),(CIRB),(LN_BF1), 0.0000, 0.0000, 1.0000

CONST/LINE,F(LN_BF1),BF,FA(CIRA),FA(CIRB)

D(CRD2) = DATSET/FA(PLN1), ZDIR, FA(LN_BF1), XDIR, FA(CIRA), XORIG

D(CRD2) = TRANS/ZORIG, FA(PLN1), YORIG, FA(CIRA), 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), 20.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

DECL/COMMON,REAL,PLN1_5_AX

PLN1_5_AX = OBTAIN/FA(PLN1)[5],2

DECL/COMMON,REAL,PLN1_5_AY

PLN1_5_AY = OBTAIN/FA(PLN1)[5],3

F(PLN2)=FEAT/PLANE,CART,0,0,0,0.0000,0.0000,1.0000

$$ Measurement points are created through actual points

$$ CALL/M(EASI_CLEARPLN_GOTO), 1, 0, 0, 4.0000

MEAS/PLANE,F(PLN2),5,CLRSRF,FA(PLN1),20.0000,CLRSRF,FA(PLN1),20.0000

  PTMEAS/CART, PLN1_1_AX ,  PLN1_1_AY, 0.0000, 0.0000, 0.0000, 1.0000

  CALL/M(EASI_CLEARPLN_GOTO), 1, PLN1_1_AX, PLN1_1_AY, 4.0000

  CALL/M(EASI_CLEARPLN_GOTO), 1, PLN1_2_AX, PLN1_2_AY, 4.0000

  PTMEAS/CART, PLN1_2_AX ,  PLN1_2_AY, 0.0000, 0.0000, 0.0000, 1.0000

  CALL/M(EASI_CLEARPLN_GOTO), 1, PLN1_2_AX, PLN1_2_AY, 4.0000

  CALL/M(EASI_CLEARPLN_GOTO), 1, PLN1_3_AX, PLN1_3_AY, 4.0000

  PTMEAS/CART, PLN1_3_AX ,  PLN1_3_AY, 0.0000, 0.0000, 0.0000, 1.0000

  CALL/M(EASI_CLEARPLN_GOTO), 1, PLN1_3_AX, PLN1_3_AY, 4.0000

  CALL/M(EASI_CLEARPLN_GOTO), 1, PLN1_4_AX, PLN1_4_AY, 4.0000

  PTMEAS/CART, PLN1_4_AX ,  PLN1_4_AY, 0.0000, 0.0000, 0.0000, 1.0000

  CALL/M(EASI_CLEARPLN_GOTO), 1, PLN1_4_AX, PLN1_4_AY, 4.0000

  CALL/M(EASI_CLEARPLN_GOTO), 1, PLN1_5_AX, PLN1_5_AY, 4.0000

  PTMEAS/CART, PLN1_5_AX ,  PLN1_5_AY, 0.0000, 0.0000, 0.0000, 1.0000

ENDMES

D(CRD3) = DATSET/FA(PLN2), ZDIR

D(CRD3) = TRANS/ZORIG, FA(PLN2)

DECL/COMMON,REAL,CIRA_Z

CIRA_Z = OBTAIN/FA(CIRA),6

DECL/COMMON,REAL,CIRA_D

CIRA_D = OBTAIN/FA(CIRA),10

DECL/COMMON,REAL,CIRB_X

CIRB_X = OBTAIN/F(CIRB),4

DECL/COMMON,REAL,CIRB_Y

CIRB_Y = OBTAIN/F(CIRB),5

DECL/COMMON,REAL,CIRB_Z

CIRB_Z = OBTAIN/FA(CIRB),6

DECL/COMMON,REAL,CIRB_D

CIRB_D = OBTAIN/FA(CIRB),10

MODE/AUTO,PROG,MAN

F(CIRC) = FEAT/CIRCLE,INNER,CART, 0,0,CIRA_Z, 0,0,1, CIRA_D

 

$$ Empty Meas Block

MEAS/CIRCLE, F(CIRC),8

 

ENDMES

F(CIRD) = FEAT/CIRCLE,INNER,CART, CIRB_X,CIRB_Y ,CIRB_Z, 0,0,1, CIRB_D

 

$$ Empty Meas Block

MEAS/CIRCLE, F(CIRD), 8

 

ENDMES

CALL/M(EASI_2PT_TO_LINE),(CIRC),(CIRD),(LN_BF2), 0.0000, 0.0000, 1.0000

CONST/LINE,F(LN_BF2),BF,FA(CIRC),FA(CIRD)

D(CRD4) = DATSET/FA(PLN2), ZDIR, FA(LN_BF2), XDIR, FA(CIRC), XORIG

D(CRD4) = TRANS/ZORIG, FA(PLN2), YORIG, FA(CIRC), XORIG, -0