RationalDMIS 2020 快速学习DMIS程序制作_工具条
RationalDMIS 2020 快速学习DMIS程序制作_数据区_02
RationalDMIS本身使用DMIS5.0作为内部测量编程语言,在RationalDMIS中创建的DMIS语言在运行时不需要进行转换。

在本节我们只介绍如何创建一段简单的DMIS程序,对于详细的DMIS部分操作,请查看DMIS系统介绍部分。

有两种方法创建DMIS程序,一种是新建立一个Text编辑环境,自己手动写入DMIS代码;另一种方法就是应用软件“自学习”创建零件程序。

我们这里介绍没有CAD情况下的自学习DMIS程序,如果您希望使用CAD,请参阅应用CAD创建一个简单的零件程序部分。

开始创建自学习程序,我们需要先打开自学习开关,用鼠标点击软件界面右上角的自学习图标。

RationalDMIS 2020 快速学习DMIS程序制作_数据区_03
RationalDMIS 2020 快速学习DMIS程序制作_数据区_04
RationalDMIS 2020 快速学习DMIS程序制作_数据区_05

当箭头处于绿色的状态,我们就可以开始产生自学习零件程序了。

自学习打开/关闭支持快捷键操作:Ctrl + Q

在双数据区中,使用鼠标左键点击程序数据区图标,打开程序数据区窗口,以便查看零件程序或进行编辑操作:

RationalDMIS 2020 快速学习DMIS程序制作_命令模式_06
在开始建立程序之前,让我们先手动将DMIS程序区的DMIS功能工具条显示出来,

在程序面板的右边,你会看到一个小箭头图标,将鼠标放在这个小箭头上,DMIS功能工具条就会自动显示出来。

这个工具条有一个锁定功能,在弹出的功能工具条的最上边,可以用鼠标点击进行锁定状态的切换,这时我们用鼠标点击它将功能工具条锁定起来。
RationalDMIS 2020 快速学习DMIS程序制作_数据区_07
当功能工具条锁定后,点击模式命令图标,在弹出菜单中点击“MODE/MAN”,
RationalDMIS 2020 快速学习DMIS程序制作_数据区_08
如果你选择了手动模式,你可以看到RationalDMIS会自动为我们产生一段DMIS代码。

产生的这段代码不仅包含了“MODE/MAN”,同时也包含了一段状态头的代码。

产生的这段状态头代码是可以配置的,配置的这一章节请参看程序-DMIS状态头这一节。

现在我们正处于手动模式之下,我们将建立一个简单的3-2-1坐标系。

让我们先测量工件顶部的一个平面,测量平面部分的帮助,请参看元素测量部分。

下一步,我们再测量一条线,用于坐标系对齐的线,测量线请参看元素测量部分。

然后再测量一条线或者是一个点也可以,测量点请参考元素测量部分。
RationalDMIS 2020 快速学习DMIS程序制作_工具条_09
您可以看到您所做的测量操作都已经被自学习下来了

现在,我们使用“创建坐标系”去创建一个坐标系,创建坐标系的帮助青参看坐标系-创建坐标系部分。

一旦我们对建立的坐标系比较满意,我们可以使用顶部的平面作为一个安全平面,这样可以减少我们使用人工方法判断安全移动的操作。

让我们现在将命令模式切换为“MODE/PROG,MAN”模式,对命令模式的详细信息请参考程序-模式命令的章节。

注意:如果您使用的是手动机,在“MODE/MAN”和“MODE/PROG,MAN”模式之间切换对于您的手动测量是没有任何影响的。

RationalDMIS 2020 快速学习DMIS程序制作_数据区_10
RationalDMIS 2020 快速学习DMIS程序制作_命令模式_11

您现在可以继续测量元素,例如我们现在再测量2个圆元素。

对于测量圆的帮助,请参考元素测量部分。

RationalDMIS 2020 快速学习DMIS程序制作_工具条_12

现在,我们可以计算一下这两个圆的距离公差是多少。对于公差的操作请参看公差操作部分。

公差计算和输出操作会被同时记录在程序中。

在程序的末尾,我们点击“Endfil”加入文件结束的语句,这个声明将会关闭所有打开的输出设备。

RationalDMIS 2020 快速学习DMIS程序制作_数据区_13

您可能希望在操作时程序可以给您一些提示,这些功能可以通过手动编写DMIS代码快速完成。

要编辑DMIS代码,点击“转移到DMIS编辑器”图标。
RationalDMIS 2020 快速学习DMIS程序制作_命令模式_14
DMIS编辑器将会显示这些DMIS代码,而程序区面板会变为空的。

RationalDMIS 2020 快速学习DMIS程序制作_数据区_15
选择光标定位到您想插入提示文本的地方,然后按一下Enter键创建出一个空白行。
RationalDMIS 2020 快速学习DMIS程序制作_命令模式_16
在空白行的地方,使用键盘敲入“text/”,您可以看到,当您键入/后,会自动弹出一个提示菜单供您选择,选择OPER(操作),然后键入“Enter”,OPER这个单词会自动加到您的DMIS代码中。
RationalDMIS 2020 快速学习DMIS程序制作_工具条_17

在“OPER”的后面,加入一个“,”(逗号),DMIS编辑器会自动提示您输入一些文本,然后键入您想要再程序中提示的内容。

如果将您要输入的文本编辑完成,请最后输入“Enter”键结束。

或者,通过‘插入注释行’快速实现上述功能:
RationalDMIS 2020 快速学习DMIS程序制作_数据区_18
结束编辑后,将程序发送回DMIS程序面板,在程序编辑器面板的工具栏中点击“传送到程序”图标。

RationalDMIS 2020 快速学习DMIS程序制作_工具条_19
DMIS程序会重新传回到程序数据区,

滚动到程序数据区的最上方然后点击第一行。

保证机器此刻可以安全移动并点击“运行”按钮。
RationalDMIS 2020 快速学习DMIS程序制作_工具条_20
程序将会开始执行。

$$/*  Header
DMISMN/'Created by [爱科腾瑞科技(北京)有限公司-031521-DEMO-11022A(力合)] on 星期一, 二月 22, 2021', 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(40-D2)
GEOALG/BF, LSTSQR
GEOALG/ANGLB, DEFALT
GEOALG/CIRCLE, LSTSQR
GEOALG/ARC, LSTSQR
GEOALG/PLANE, LSTSQR
$$
$$
$$*/
MODE/MAN

TEXT/OPER,'测量一个顶面,然后测量前方的直线,最后测量左侧的点。'


F(PLN1)=FEAT/PLANE,CART,32.0068,35.4983,0.0000,0.0000,0.0000,1.0000
$$ Measurement points are created through actual points
MEAS/PLANE, F(PLN1), 4
PTMEAS/CART, 4.9622, 54.1968, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, 3.5285, 11.7327, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, 58.7345, 8.5180, 0.0000, 0.0000, 0.0000, 1.0000
PTMEAS/CART, 60.8020, 67.5454, 0.0000, 0.0000, 0.0000, 1.0000
ENDMES
F(LN1)=FEAT/LINE,BND,CART,4.1956,0.0000,-2.8969,60.1243,0.0000,-3.1040,0.0000,-1.0000,0.0000
$$ Measurement points are created through actual points
MEAS/LINE, F(LN1), 2
PTMEAS/CART, 4.1956, 0.0000, -2.8969, 0.0000, -1.0000, 0.0000
PTMEAS/CART, 60.1243, 0.0000, -3.1040, 0.0000, -1.0000, 0.0000
ENDMES
F(PT1)=FEAT/POINT,CART,0.0000,6.3489,-3.7005,-1.0000,0.0000,0.0000
MEAS/POINT, F(PT1), 1
PTMEAS/CART, 0.0000,6.3489,-3.7005,-1.0000,0.0000,0.0000
ENDMES
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
F(CIR1)=FEAT/CIRCLE,INNER,CART,31.5000,31.5000,-3.0000,0.0000,0.0000,1.0000, 20.0000
$$ Measurement points are created through nominal points
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, 25.8435, 27.3763, 21.0000
MEAS/CIRCLE, F(CIR1), 5
GOTO/CART, 25.8435, 27.3763, 21.0000
PTMEAS/CART, 23.4193, 25.6091, -3.0000, 0.8081, 0.5891, 0.0000
GOTO/CART, 27.3947, 25.8302, -3.0000
GOTO/CART, 29.3477, 24.8391, -3.0000
GOTO/CART, 31.5113, 24.5000, -3.0000
PTMEAS/CART, 34.6056, 21.9944, -3.0000, -0.3106, 0.9506, 0.0000
GOTO/CART, 35.6237, 25.8435, -3.0000
GOTO/CART, 37.1698, 27.3947, -3.0000
GOTO/CART, 38.1609, 29.3477, -3.0000
PTMEAS/CART, 41.5000, 31.5162, -3.0000, -1.0000, -0.0016, 0.0000
GOTO/CART, 38.1539, 33.6739, -3.0000
GOTO/CART, 37.1565, 35.6237, -3.0000
GOTO/CART, 35.6053, 37.1698, -3.0000
PTMEAS/CART, 34.5748, 41.0156, -3.0000, -0.3075, -0.9516, 0.0000
GOTO/CART, 31.4887, 38.5000, -3.0000
GOTO/CART, 29.3261, 38.1539, -3.0000
GOTO/CART, 27.3763, 37.1565, -3.0000
PTMEAS/CART, 23.4003, 37.3648, -3.0000, 0.8100, -0.5865, 0.0000
GOTO/CART, 25.8302, 35.6053, 21.0000
ENDMES
F(CIR2)=FEAT/CIRCLE,INNER,CART,52.4500,11.5500,-3.0000,0.0000,0.0000,1.0000, 6.7960
$$ Measurement points are created through nominal points
$$ CALL/M(EASI_CLEARPLN_GOTO), 1, 52.0537, 11.5128, 21.0000
MEAS/CIRCLE, F(CIR2), 5
GOTO/CART, 52.0537, 11.5128, 21.0000
PTMEAS/CART, 49.0668, 11.2327, -3.0000, 0.9956, 0.0934, 0.0000
PTMEAS/CART, 51.7063, 8.2344, -3.0000, 0.2188, 0.9758, 0.0000
PTMEAS/CART, 55.3735, 9.8182, -3.0000, -0.8604, 0.5097, 0.0000
PTMEAS/CART, 55.0005, 13.7953, -3.0000, -0.7506, -0.6608, 0.0000
PTMEAS/CART, 51.1027, 14.6695, -3.0000, 0.3965, -0.9180, 0.0000
GOTO/CART, 52.2922, 11.9154, 21.0000
ENDMES
T(TDST1)=TOL/DISTB,NOMINL,28.9500,-0.0500,0.0500,XYPLAN,AVG
OUTPUT/FA(CIR1),FA(CIR2),TA(TDST1)
ENDFIL