一平面 两基准孔建立坐标系的工件比较常见.
在建立坐标系的时候,通常是两个圆拟合一条直线去确立一个轴向.
但是在工件换方向,尤其旋转180度的时候容易出现坐标系反向的问题.
重定义直线方向宏:
M(redef) = Macro/LABLN
DECL/LOCAL,DOUBLE,VLN[9]
DECL/LOCAL,CHAR,5,AXIS
Tempstr = Prompt/TEXT,'直线的标签名',edit,KNPTC1
VLN[1] = OBTAIN/FA(LABLN)[1],2
VLN[2] = OBTAIN/FA(LABLN)[1],3
VLN[3] = OBTAIN/FA(LABLN)[1],4
VLN[4] = OBTAIN/FA(LABLN)[2],2
VLN[5] = OBTAIN/FA(LABLN)[2],3
VLN[6] = OBTAIN/FA(LABLN)[2],4
VLN[7] = OBTAIN/FA(LABLN),10
VLN[8] = OBTAIN/FA(LABLN),11
VLN[9] = OBTAIN/FA(LABLN),12
F(KNPTC1) = FEAT/LINE,BND,CART,VLN[1],VLN[2],VLN[3],$
VLN[4],VLN[5],VLN[6],VLN[7],VLN[8],VLN[9]
FA(KNPTC1) = FEAT/LINE,BND,CART,VLN[1],VLN[2],VLN[3],$
VLN[4],VLN[5],VLN[6],VLN[7],VLN[8],VLN[9]
ENDMAC
CALL/M(redef),KNPTC1
产生这个现象的原因.
DMIS在构造操作中,会优先遵从元素理论值的方向和位置,在自学习产生的定义程序,直线的参数被数字化定死.
所以旋转工件摆放,方向仍然遵从上一次的直线方向.
造成没有按照拟合的顺序来确定直线方向.
具体设置如下:
为理论元素2点构造直线时使用宏:自学习模式下,两点构造直线是否生成宏语句;
变量数据区的宏"EASI_2PT_LINE":
A.这个宏的意义是使用两个理论元素去拟合一条直线。
例如:测量完成的两个圆;从圆1到圆2构造一条直线。测量和构造的动作将记录DMIS语句,但是运行这个程序,所得到的直线方向有可能为从圆2到圆1,在DMIS语句上这里是没有问题的。
但是如果这条直线用于建立一个零件坐标系,这个坐标系的方向是不合需要的。这个宏就是为了解决这个问题。
B.构造中的拟合
当一条直线由两个元素拟合时,DMIS语句会按照如下创建。它不再直接由理论定义创建出来,目前会调用EASI2PTTO LINE宏.
$$ 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)
若设置为“否”:
F(LN_BF1)=FEAT/LINE,BND,CART,57.1500,81.2800,-3.0000,127.0000,76.2000,-3.0000,0.0000,0.0000,1.0000
CONST/LINE,F(LN_BF1),BF,FA(CIR1),FA(CIR2)
这个宏主要解决的是:
因为第一次记录直线的定义语句是用数值记录一定,而在拟合直线的时候,选择的直线总是最接近理论值,所以可能出现构造直线方向相反的错误.
归根到底是使用了错误的测量步骤所导致,但是这个操作属于常用的操作,所以写了一个宏来解决这个问题.
在编写DMIS测量程序的时候,很需要注意坐标系直线方向的问题.