首页/文章/ 详情

RationalDMIS 7.0特征任意测量次数求均值

2天前浏览4

主要利用DO循环实现数据的取值以及连续求和。


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


DO…ENDDO语句块


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


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


$$ DMIS语句


ENDDO



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


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


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


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


示例:圆1测量任意次,求直径平均值。


$$/*  Header

DMISMN/'Created by [爱科腾瑞科技(北京)有限公司] on 星期四, 八月 01, 2019', 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

F(PLN1)=FEAT/PLANE,CART,33.4981,36.5016,0.0000,0.0000,0.0000,1.0000

$$ Measurement points are created through actual points

MEAS/PLANE, F(PLN1), 4

  PTMEAS/CART,  3.7133, 58.9487, -0.0000, 0.0000, 0.0000, 1.0000

  PTMEAS/CART,  7.1867,  9.0106, -0.0000, 0.0000, 0.0000, 1.0000

  PTMEAS/CART, 60.5709,  5.0389, -0.0000, 0.0000, 0.0000, 1.0000

  PTMEAS/CART, 62.5214, 73.0081, -0.0000, 0.0000, 0.0000, 1.0000

ENDMES

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

F(LN1)=FEAT/LINE,BND,CART,6.9280,0.0000,-2.8142,59.9460,0.0000,-3.0830,0.0000,-1.0000,0.0000

$$ Measurement points are created through actual points

MEAS/LINE, F(LN1), 2

  PTMEAS/CART,  6.9280, 0.0000, -2.8142, 0.0000, -1.0000, 0.0000

  PTMEAS/CART, 59.9460, 0.0000, -3.0830, 0.0000, -1.0000, 0.0000

ENDMES

F(PT1)=FEAT/POINT,CART,0.0000,5.6942,-3.5011,-1.0000,0.0000,0.0000

MEAS/POINT, F(PT1), 1

  PTMEAS/CART, 0.0000,5.6942,-3.5011,-1.0000,0.0000,0.0000

ENDMES

D(CRD2) = DATSET/FA(PLN1), ZDIR, ZORIG, FA(LN1), XDIR, YORIG, FA(PT1), XORIG

D(CRD2) = TRANS/ZORIG, -0, YORIG, -0, XORIG, -0

$$ Set.CAD2PCS.CADM_1

$$ Set.CADViewCenter.CADM_1

MODE/AUTO,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,INTGR,I

DECL/COMMON,INTGR,NUM

DECL/COMMON,CHAR,255,C1


NUM = PROMPT/'要测量特征多少次', 500, 2


DECL/COMMON,REAL,DD[NUM]


DO/I,1,NUM,1


C1 = ASSIGN/CONCAT('J','-',STR(I))


F(@C1)=FEAT/CIRCLE,INNER,CART,15.9115,22.5000,-2.0000,0.0000,0.0000,1.0000, 10.0000


$$ Empty Meas Block

MEAS/CIRCLE, F(@C1), 5


ENDMES


DD[I]= OBTAIN/FA(@C1),10


ENDDO


DECL/COMMON,INTGR,J

DECL/COMMON,REAL,AVERAGE

DECL/COMMON,CHAR,255,C2


AVERAGE = ASSIGN/DD[1]


DO/J,2,NUM,1


AVERAGE = ASSIGN/AVERAGE+DD[J]


ENDDO


AVERAGE = ASSIGN/(AVERAGE+DD[J])/NUM

 

C2 = ASSIGN/CONCAT('总共测量',STR(NUM),'次,','实测平均值:',STR(AVERAGE))


TEXT/OUTFIL, C2


TEXT/OPER, C2


 


来源:山涧果子
ACTUGUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-03
最近编辑:2天前
山涧果子
大专 签名征集中
获赞 204粉丝 51文章 702课程 0
点赞
收藏
作者推荐

RationalDMIS 7.0 High Level Language (HLL)赋值语句

变量定义后就可以给它分配数据。DMIS语言中可用于赋值的命令包括:ASSIGN、VALUE、PROMPT、READ。注意:每执行一次赋值命令,变量中存储的原数据都会被覆盖掉。把数据分配给已定义的变量里,格式如下: 变量名称=ASSIGN/表达式 变量名称:一个已定义的变量名。表达式:一个数字常量,一个字符串,一个算术表达式,一个逻辑表达式或一个内部函数。 1.DMIS赋值的主字为ASSIGN不像C语言中,赋值直接变量 = 表达式子,DMIS的语法为Varname = assign/表达式.例如,假设之前声明过一个整型变量Tempint,赋值的语句为Tempint = assign/50或者表达式Tempint = assign/25*2或者包含其它函数的Tempint = assign/sqrt(2500)结果都是把50这个值赋给了变量Tempint.例如前面声明了字符串变量TempstrTempstr = assign/'helloworld'或者其它函数的表达式Tempstr = assign/concat('hello','world') concat是字符串联接函数运行结果,Tempstr的值为字符串helloworld. DMIS提供先前声明的变量的赋值。变量可以从定义参数(例如,OBTAIN)获得,设置为测量结果(例如,VALUE),或者分配值(例如,ASSIGN)。 先前声明和赋值的变量可以替换任何DMIS语句中正确数据类型的任何参数(例如数值,文字文本字符串或标签)。字符串(类型CHAR)变量可以替换DMIS语法中的任何单引号(撇号)字符串。EXAMPLE $$$$ The following example demonstrates substituting a character variable for a$$ literal text string parameter$$DECL/GLOBAL,CHAR,80,MYTEXTMYTEXT=ASSIGN/'This is my text message to the operator'TEXT/OPER,MYTEXT2.赋值运算符 (1)数学赋值运算符 数学赋值运算符提供用数学运算符来给变量赋值的能力。 数学赋值语句使用下列数学运算符:a) + Addition 加b) - Subtraction or negation 减c) * Multiplication 乘d) / Division 除 e) ** Exponentiation 乘方 一个数学表达式还可以包括由圆括号包围的其他数学表达式构成的项。DMIS允许在数学表达式中实数和整数类型混合出现。对于混合的运算,DMIS在执行运算前把整数转换成实数。运算结果的变量必须声明成希望的数据类型。 (2)关系运算符 对于向量,只允许使用比较算符.EQ.和.NE.。(3)逻辑运算符逻辑赋值运算符提供了用逻辑关系运算符来给变量赋值的能力。逻辑赋值语句使用下列逻辑算符:Note: A logical expression may also contain elements consisting of other expressions enclosed in parentheses.Examples of the use of the logical assignment statements are as follows:DECL/GLOBAL,BOOL,OutTol,Y,quitDECL/GLOBAL,INTGR,P,QDECL/GLOBAL,REAL,CirDiaexecutable statementsOutTol=ASSIGN/(CirDia .GT. 0.02)quit=ASSIGN/.FALSE.Y=ASSIGN/.NOT.(P .LT. Q)IF/(P .LT. Q)executable statementsENDIF(4)字符赋值运算符字符赋值运算符用于把字符串或子串给一个变量赋值。字符赋值语句能够使用下列字符函数:ASSIGN语句例子1. 把一个变量(OldVar)里的数据拷贝到另一个变量(NewVar)里。NewVar=ASSIGN/OldVar如果拷贝的变量类型不同则需要添加转换函数。DECL/LOCAL,REAL,RealVarDECL/LOCAL,CHAR,50,CharVar$$把实数变量转换成字符型变量CharVar=ASSIGN/STR(RealVar)$$把字符转换成实数RealVar=ASSIGN/VAL(CharVar)2. 把数字输入变量Number=ASSIGN/33. 把字符输入变量$$注意用单引号CharVar=ASSIGN/’ABcd’4. 把数学公式的计算结果输入到变量$$计算半径Radius的圆面积Area=ASSIGN/3.1415*(Radius* Radius)5. 把逻辑判断结果输入到变量$$如果FormVar大于0.05得到1否则得到0OutOfTolVar=ASSIGN/(FormVar.GT.0.05) 打开自学习,记录程序。1.变量数据区双击变量名称,输入数值或字符,自学习会生成赋值语句:2.如果字符串赋值要写到单引号里面3.如果想转换变量类型需要调用一些特殊函数,可以在变量数值输入框里右键就会弹出各种函数.例子$$输出正弦值(里面的函数是将度转化为弧度) KNPTR1 = ASSIGN/SIN(DTOR(30))$$输出正切值(里面的函数是将度转化为弧度)KNPTR1 = ASSIGN/TAN(DTOR(45))$$算平方根KNPTR1 = ASSIGN/SQRT(4)$$3.5取整,无4舍5入,结果是3KNPTN1 = ASSIGN/INT(3.5)$$3.5取整,有4舍5入,结果是4KNPTN2 = ASSIGN/NINT(3.5)$$求最小值KNPTR1 = ASSIGN/MN(4,3,2,1)$$求最大值KNPTR1 = ASSIGN/MX(1,2,3,4)例子$$输入ascII码,输出字母,65对应AKNPTC1 = ASSIGN/CHR(65)$$合并字符串,输出123456789 KNPTC1 = ASSIGN/CONCAT('123','456','789')$$字符串用分隔符分开,取第2个,这里第2个是b 。KNPTC3 = ASSIGN/ELEMNT(2,'\','a\b\c\d\e\f') $$后一个字符串在前一个内部的起始位置 KNPTN1 = ASSIGN/INDX('12345678','45')来源:山涧果子

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈