DMIS初级教程-高级语言篇(不断更新)
DMIS语言的高级语句部分,和大多数编程语言类似,包含变量声明、表达式、结构、输入输出、宏等等,如网友有编程经验,会很快熟悉这一部分。
从一个简单常用的例子说起,循环可能是我们在高级应用服务中运用最多的语句,DMIS标准中的循环语句为主字DO
语法格式为
DO/变量,启始值,终止值,步幅
那么一个语句如果为DO/I,1,10,1的意义就为,执行一个循环,I的值+1,增加10次之后,循环结束.
来看一个实例.
假设我的工件有一个孔,名为CIR1,我需要把它测量5次,取其中的最小值.那么测量部分的循环语句即为
AUTO/AUTO,PROG,MAN
字符串长度1是什么意思
DO/I,1,5
MEAS/CIRCLE,CIR1,4
ENDMES
ENDDO
运行这段语句,测量机就会自动去测量圆CIR1,直到5次结束后位置.
需要注意的地方: 1. 所有的变量在使用前都必须声明,上面的I是一个整型变量,每循环一次,I+1
2.每一个DO语句都必须跟一个ENDDO表示该循环的结束.
3.步幅表示每次循环I的增量,如果步副是2,那么下次I就为3,再循环一个为5,以此类推.
__________________________________________________________________________________________________
一.变量的声明.
上面的循环手动测量圆,用到了一个变量I,在DMIS中,所有的变量在使用前都需要经过声明,声明这个变量的名称,类型,作用范围.
变量声明的函数为
DECL/var_1 var_2 var_3
定义变量的作用范围
其中 Var_1 为COMMON 普通
或者GLOBAL 全局变量
或者LOCAL 局部变量
或者不存在
定义变量的类型
Var_2 为BOOL 布尔型
或者INTGR 整数型
或者LONG 长整型
或者REAL 实数型
或者DOUBLE 双精度型
或者CHAR,n 字符型
或者VECTOR 向量型
Var_3 为Varname 变量名称
相同类型的变量可以在同一个DECL语句中声明。
比如: DECL/COMMON,INTGR,I
这个语句就表示声明了一个整数型变量,名称为I.后面程序中表达式所需要整数的就可以用I来
替代.
再或者DECL/COMMON,CHAR,20,TEMPSTR
这个语句声明一个字符串变量,名称为TEMPSTR,长度为20,表示这个变量所存储的字符长度最大为20,如果超过20,后面的字符将不读入变量.
变量的名称由1到16个字母数字、下划线组成,名称的第一个字符只能为希腊字母。变量名称不能使用DMIS预留字,预留字包括DMIS主字、次字、常用函数等等。如果这里不指定Var_1,DMISMN声明的程序块用GLOBAL为默认值,在MACRO声明的程序块中用LOCAL为默认值。
变量数组的声明例子为:
DECL/COMMON,DOUBLE,RAPLUS[3,3]
这个语句表示声明了一个2维的数组RPLUS[3,3],此次一共声明了9个变量,分别为
RAPLUS[1,1] RAPLUS[1,2] RAPLUS[1,3]
RAPLUS[2,1] RAPLUS[2,2] RAPLUS[2,3]
RAPLUS[3,1] RAPLUS[3,2] RAPLUS[3,3]
DMIS中变量数组的起始从1开始,而其它常用的高级编程语言如C从0开始。
二、结构语句。
介绍三个常用的DMIS语句,DO和CASE.
DO循环在DMIS语句编程中是常用的语句,其语法为:
DO/index,initial,limit,increment
循环体
ENDDO
语句中,index是一个整型变量,initial是这个变量的起始值,limit是这个变量的结束值,increment是这个变量的增幅。例如语句
DO/I,2,30,3
循环体
ENDDO
意义即为 I开始的值为2,运行第一遍循环后I的值变为5,第2遍后变为8,第三遍后变为11…………,到I的值大于30后结束循环
最后一个参数increment可以不写,默认为1。
------------------------------------------------------------------------------------------
CASE为条件分支选择,语法为:
CASE/arg_1
其中arg_1为整数或者字符串,用一个例子来说明,输出两个圆CIR1、CIR2的距离,选择是输出最大距离、最小距离还是两个圆心的距离。
decl/common,char,20,dist_cir
tempchar = prompt/text,'输出距离类型',list,dist_cir,'最大距离','最小距离','圆心距离'
tempchar = prompt/text,'输出距离类型',list,dist_cir,'最大距离','最小距离','圆心距离'
select/dist_cir
case/'最大距离'
T(cir_dis) = TOL/DISTB,LIMIT,20,21,PT2PT,MAX
endcas
case/'最小距离'
T(cir_dis) = TOL/DISTB,LIMIT,20,21,PT2PT,MIN
endcas
case/'圆心距离'
T(cir_dis) = TOL/DISTB,LIMIT,20,21,PT2PT,AVG
endcas
endsel
OUTPUT/FA(CIR1),FA(CIR2),TA(cir_dis)
上面的语句用CASE做条件选择,选择定义的距离公差是最大、最小还是平均。
三.输入部分
DMIS可以从用户界面上取得输入值,也是在HLL中常用的主字PROMPT,后面的功能语法有
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论