首页/文章/ 详情

RationalDMIS 7.1 重定义直线方向宏

1年前浏览116

一平面 两基准孔建立坐标系的工件比较常见.


在建立坐标系的时候,通常是两个圆拟合一条直线去确立一个轴向.


但是在工件换方向,尤其旋转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测量程序的时候,很需要注意坐标系直线方向的问题.


来源:RationalDMIS测量技术
理论
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-07-15
最近编辑:1年前
山涧果子
大专 签名征集中
获赞 203粉丝 48文章 1203课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈