RationalDMIS 2020 Do循环应用实例_循环语句
使用DO循环语句可以多次反复执行同一段程序,执行的次数可以是设定的数字、变量。

DO…ENDDO语句块

DO…ENDDO语句块以DO开头,ENDDO结尾,可以反复多次执行一组程序行,支持嵌套。格式如下:

DO/变量, 初始值, 结束值, 步长

$$ DMIS语句

ENDDO

变量:已定义的整数型变量

初始值:循环开始后变量开始计数的数值,为整数值

结束值:变量达到这个值后循环停止,为整数值

步长:变量每循环一次的增加值,可选项,不写默认为1

在很多产品的加工过程中为了提高生产效率会设计多个夹位,来节约上下料和对基准的时间。同样的方法是否能够体现在三坐标测量机上呢?今天我们就来分享一个使用DO循环实现多夹位产品检测的方案。

使用DO循环我们只需要编写一个标准的测量程序,测量机就可以自动测量完成6个夹具上的产品检测,同时还能将测量报告按照指定目录各自存放好。

以下为DMIS程序

MODE/PROG,MAN

DECL/COMMON, INTGR, VAR1,VAR2

VAR1=assign/1

VAR2 = PROMPT/'请输入循环次数'

DO/VAR1,1,VAR2

RECALL/D(MCS)

D(CRD1) = TRANS/XORIG, 0, YORIG, 100*(VAR1-1), ZORIG, 0

F(CIR1)=FEAT/CIRCLE,INNER,CART,40.000000,9.500000,-0.000000,-0.000000,0.000000,1.000000, 8.200000

F(CIR2)=FEAT/CIRCLE,INNER,CART,54.495689,15.504311,-0.000000,-0.000000,-0.000000,1.000000, 8.200000

F(CIR3)=FEAT/CIRCLE,INNER,CART,60.500000,30.000000,-0.000000,-0.000000,-0.000000,1.000000, 8.200000

F(CIR4)=FEAT/CIRCLE,INNER,CART,54.495689,44.495689,-0.000000,-0.000000,0.000000,1.000000, 8.200000

F(CIR5)=FEAT/CIRCLE,INNER,CART,40.000000,50.500000,-0.000000,-0.000000,0.000000,1.000000, 8.200000

F(CIR6)=FEAT/CIRCLE,INNER,CART,25.504311,44.495689,-0.000000,-0.000000,0.000000,1.000000, 8.200000

F(CIR7)=FEAT/CIRCLE,INNER,CART,19.500000,30.000000,-0.000000,-0.000000,0.000000,1.000000, 8.200000

F(CIR8)=FEAT/CIRCLE,INNER,CART,25.504311,15.504311,0.000000,-0.000000,0.000000,1.000000, 8.200000

$$ Measurement points are created through nominal points

CALL/M(EASI_CLEARPLN_GOTO), 0, 38.929770, 9.245820, 12.000000

MEAS/CIRCLE, F(CIR1), 5

GOTO/CART, 38.929770, 9.245820, 12.000000

PTMEAS/CART, 36.010960, 8.552603, -2.000000, 0.972937, 0.231072, -0.000000

PTMEAS/CART, 39.668347, 5.413436, -2.000000, 0.080891, 0.996723, -0.000000

PTMEAS/CART, 43.784067, 7.921761, -2.000000, -0.922943, 0.384936, -0.000000

PTMEAS/CART, 42.670335, 12.611159, -2.000000, -0.651301, -0.758819, 0.000000

PTMEAS/CART, 37.866291, 13.001041, -2.000000, 0.520417, -0.853912, 0.000000

GOTO/CART, 39.427541, 10.439304, 12.000000

ENDMES

$$ Measurement points are created through nominal points

CALL/M(EASI_CLEARPLN_GOTO), 0, 53.437675, 15.203301, 12.000000

MEAS/CIRCLE, F(CIR2), 5

GOTO/CART, 53.437675, 15.203301, 12.000000

PTMEAS/CART, 50.552184, 14.382363, -2.000000, 0.961831, 0.273646, 0.000000

PTMEAS/CART, 54.344115, 11.407114, -2.000000, 0.036969, 0.999316, 0.000000

PTMEAS/CART, 58.345516, 14.094052, -2.000000, -0.938982, 0.343966, 0.000000

PTMEAS/CART, 57.026587, 18.729920, -2.000000, -0.617292, -0.786734, -0.000000

PTMEAS/CART, 52.210043, 18.908106, -2.000000, 0.557475, -0.830194, -0.000000

GOTO/CART, 53.882467, 16.417524, 12.000000

ENDMES

$$ Measurement points are created through nominal points

CALL/M(EASI_CLEARPLN_GOTO), 0, 59.514507, 29.511326, 12.000000

MEAS/CIRCLE, F(CIR3), 5

GOTO/CART, 59.514507, 29.511326, 12.000000

PTMEAS/CART, 56.826797, 28.178577, -2.000000, 0.895903, 0.444249, 0.000000

PTMEAS/CART, 61.097194, 25.943726, -2.000000, -0.145657, 0.989335, 0.000000

PTMEAS/CART, 64.542289, 29.314508, -2.000000, -0.985924, 0.167193, 0.000000

PTMEAS/CART, 62.401078, 33.632616, -2.000000, -0.463678, -0.886004, -0.000000

PTMEAS/CART, 57.632642, 32.930573, -2.000000, 0.699356, -0.714774, -0.000000

GOTO/CART, 59.730709, 30.786251, 12.000000

ENDMES

$$ Measurement points are created through nominal points

CALL/M(EASI_CLEARPLN_GOTO), 0, 53.643634, 43.799987, 12.000000

MEAS/CIRCLE, F(CIR4), 5

GOTO/CART, 53.643634, 43.799987, 12.000000

PTMEAS/CART, 51.319847, 41.902616, -2.000000, 0.774596, 0.632457, -0.000000

PTMEAS/CART, 55.980459, 40.673980, -2.000000, -0.362139, 0.932124, -0.000000

PTMEAS/CART, 58.589169, 44.726816, -2.000000, -0.998410, -0.056372, -0.000000

PTMEAS/CART, 55.540829, 48.460242, -2.000000, -0.254912, -0.966964, 0.000000

PTMEAS/CART, 51.048141, 46.714791, -2.000000, 0.840865, -0.541244, 0.000000

GOTO/CART, 53.570737, 45.091058, 12.000000

ENDMES

$$ Measurement points are created through nominal points

CALL/M(EASI_CLEARPLN_GOTO), 0, 39.317008, 49.637723, 12.000000

MEAS/CIRCLE, F(CIR5), 5

GOTO/CART, 39.317008, 49.637723, 12.000000

PTMEAS/CART, 37.454303, 47.286057, -2.000000, 0.620902, 0.783888, -0.000000

PTMEAS/CART, 42.269977, 47.085735, -2.000000, -0.553653, 0.832747, -0.000000

PTMEAS/CART, 43.948620, 51.603811, -2.000000, -0.963078, -0.269222, 0.000000

PTMEAS/CART, 40.170404, 54.596457, -2.000000, -0.041562, -0.999136, 0.000000

PTMEAS/CART, 36.156695, 51.927939, -2.000000, 0.937391, -0.348278, 0.000000

GOTO/CART, 38.968869, 50.883106, 12.000000

ENDMES

$$ Measurement points are created through nominal points

CALL/M(EASI_CLEARPLN_GOTO), 0, 24.957294, 43.541345, 12.000000

MEAS/CIRCLE, F(CIR6), 5

GOTO/CART, 24.957294, 43.541345, 12.000000

PTMEAS/CART, 23.465430, 40.938588, -2.000000, 0.497288, 0.867586, -0.000000

PTMEAS/CART, 28.257266, 41.457394, -2.000000, -0.671452, 0.741048, -0.000000

PTMEAS/CART, 29.244611, 46.175020, -2.000000, -0.912268, -0.409593, 0.000000

PTMEAS/CART, 25.062989, 48.571868, -2.000000, 0.107640, -0.994190, 0.000000

PTMEAS/CART, 21.491258, 45.335575, -2.000000, 0.978793, -0.204850, 0.000000

GOTO/CART, 24.427638, 44.721024, 12.000000

ENDMES

$$ Measurement points are created through nominal points

CALL/M(EASI_CLEARPLN_GOTO), 0, 18.900513, 29.077712, 12.000000

MEAS/CIRCLE, F(CIR7), 5

GOTO/CART, 18.900513, 29.077712, 12.000000

PTMEAS/CART, 17.265548, 26.562381, -2.000000, 0.544988, 0.838444, -0.000000

PTMEAS/CART, 22.078886, 26.812627, -2.000000, -0.628997, 0.777408, -0.000000

PTMEAS/CART, 23.328291, 31.467714, -2.000000, -0.933730, -0.357979, 0.000000

PTMEAS/CART, 19.287128, 34.094470, -2.000000, 0.051920, -0.998651, 0.000000

PTMEAS/CART, 15.540146, 31.062808, -2.000000, 0.965818, -0.259221, 0.000000

GOTO/CART, 18.437600, 30.285144, 12.000000

ENDMES

$$ Measurement points are created through nominal points

CALL/M(EASI_CLEARPLN_GOTO), 0, 24.564365, 14.932909, 12.000000

MEAS/CIRCLE, F(CIR8), 5

GOTO/CART, 24.564365, 14.932909, 12.000000

PTMEAS/CART, 22.000874, 13.374539, -2.000000, 0.854497, 0.519457, -0.000000

PTMEAS/CART, 26.447223, 11.514209, -2.000000, -0.229979, 0.973196, -0.000000

PTMEAS/CART, 29.590500, 15.168064, -2.000000, -0.996631, 0.082011, -0.000000

PTMEAS/CART, 27.086802, 19.286601, -2.000000, -0.385973, -0.922510, 0.000000

PTMEAS/CART, 22.396156, 18.178142, -2.000000, 0.758087, -0.652154, 0.000000

GOTO/CART, 24.670416, 16.221680, 12.000000

ENDMES



$$ Set.OutputCtrl.Circle(XYD)

$$ Set.Term.Delete

OUTPUT/FA(CIR1)

OUTPUT/FA(CIR2)

OUTPUT/FA(CIR3)

OUTPUT/FA(CIR4)

OUTPUT/FA(CIR5)

OUTPUT/FA(CIR6)

OUTPUT/FA(CIR7)

OUTPUT/FA(CIR8)

DID(PDFDEVICE) = DEVICE/incr,'G:\rationalDMIS\报告\test??.pdf'

OPEN/DID(PDFDEVICE), FDATA, V(DEFAULTFORMAT), OUTPUT, OVERWR

CLOSE/DID(PDFDEVICE)



ENDDO
1.       下面的例子将提示语句循环执行4次,每次提示循环到第几遍

DO/KNPTN1,1,4,1

$$将数字转化为字符并与提示合并

KNPTC1=ASSIGN/CONCAT('这是第',STR(KNPTN1),'遍循环')

TEXT/OPER, KNPTC1

ENDDO

2. 下面的程序控制机器在500X500的范围内走S形轨迹

DECL/LOCAL,REAL,XPOS,YPOS

DECL/LOCAL,INTGR,XN,YN

DO/YN,0,500,100

$$RL函数将整数转换为实数

YPOS=ASSIGN/RL(YN)

DO/XN,0,500,100

XPOS=ASSIGN/RL(XN)

GOTO/XPOS,YPOS,50

ENDDO

ENDDO

RationalDMIS 2020 Do循环应用实例_循环语句_02