-
DMIS
语言简明教程
本教程基于
DMIS 4.0
语言编写
,
简明地介绍了最常用的
DMIS
指令
,
希望本教程能对
ARCO
用户利用<
/p>
DMIS
语言编程时提供一些快速简便的指导。
< br>
1.1
几何元素
几何元素的测量,包括:元素的定义,测量指令,要测量的点以及测量结束指令。
以下用圆元素的测量举例说明:
1
——
F(
CIRC3)=FEAT/CIRCLE,INNER,CART,-32.5000,38.3494,-25
.0000,0.0000,0.0000,1.0000,10.0000
2
——
MEAS/CIRCLE,F(CIRC3),3
3
——
PT
MEAS/CART,-32.5000,33.3494,-25.0000,0.0000,1.0000,
0.0000
3
——
PTMEAS/CART,-36.8301,40.8494,-25.0000,0.8660,
-0.5000,0.0000
3
——
PT
MEAS/CART,-28.1699,40.8494,-25.0000,-0.8660,-0.500
0,0.0000
4
——
ENDMES
1
——元素定义;
p>
2
——测量指令;
3
——要测量点数(最少
3
点确定一个圆)
;
4
——测量结
束指令。
以
“F”
开始的元素定义为理论元素,
以
“FA”
开始的元素定义为测量元素
。
序号:
1
—元素名称;
2
—定义指令;
3
—定义圆元素;
4
—定义内圆;
5
—直角坐标系;
6
—
p>
X
理论值;
7
—<
/p>
Y
理论值;
8
—
Z
理论值;
9
—
I
;
10
—
J
;
11
—<
/p>
K
;
12
—定义
圆的理论直径
1
2
3
4
5
6
7
8
9
10
11
12
F(CIRC3)=FEAT
/CIRCLE,INNER,CART,-32.5000,38.3494,-25.0000,0.000
0,0.0000,1.0000,10.0000
FA
(C
IRC3)=FEAT/CIRCLE,INNER,CART,-32.5000,38.3494,-25.
0000,0.0000,0.0000,1.0000,10.0000
注意:在编
写程序时,元素定义为理论元素,而不定义为测量元素。测量元素是在测量结束后由软件计算
得出。
“
MEAS
”指令启动测量过程,
如果系统是“MODE/AUTO”自动模式
,
测量机即开始自动测量,
按指定的点数采点测
量;如果系统是“MODE/PROG”程序模式,所有的
PTMEAS
采点指令将独立
运行,与指定的点数无关。
MEAS/CIRCLE,F(CIRC3),3
“P
TMEAS
”
< br>指
令
驱
动
测
量
机
采
一
个
点
,
它
p>
后
面
包
含
该
测
量
点
的
位
置
(
< br>-28.1699,40.8494,-25.0000
)和测量方向(
-0.8660,-0.5000,0.0000
)
。
PTMEAS/CART,-28.1699,40.
8494,-25.0000,-0.8660,-0.5000,0.0000
“E
ndmes”
结束元素的测量并计算测量结果。
1.2
变量定义
DECL/CHAR,80,TCDIRS
——
定义字符型变量,变量值为
p>
80
,变量名称为
TCDIRS
DECL/INTGR,TCNSLT
——
定义整型变量,变量名称为
TCNSLT
DECL/DOUBLE,TCDIFX,TCDIFY,TCDIFZ
——
定义
双精度型变量,变量名称分别为
TCDIFX
;
TCDIFY
;
TCDIFZ
DECL/CHAR,80,RESULTS(10)
p>
——定义字符型变量,变量值为
80
,变量
指针名称为
RESULTS(10)
通过
DECL
指令定义变量:
DECL/INTGR,IND
——定义整型变量,变量名称为
IND
DECL/CHAR,80,RESULTS(10)
p>
——定义字符型变量,变量值为
80
,指针
变量名称为
RESULTS(10)
DO/IND,1,10,1
——
执行增量为
1
,变量名称为
IND
,从
1
到
10
的循环程序
RESULTS[IND]=ASSIGN/''
——
指针变量结果赋值
ENDDO
——
结束循环程序
可以定义的变量类型:
BOOL
CHAR
INTGR
逻辑型
字符型
整型
REAL
实型
VECTOR
矢量型
LONG
长整型
DOUBLE
双精度型
变量类型可以是:
COMMON
公共变量
GLOBAL
全局变量
LOCAL
本地变量
1.3
赋值指令
< br>给一个变量赋值
,
在
DMIS<
/p>
中,不能仅使用等号
“=”
,必须用
p>
”
ASSIGN/
”
。如下举例:
TCDIRS=ASSIGN/'C:Pro
grammiCoord3ARCOData'
串
’C:
p>
ProgrammiCoord3ARCOData
’
赋值给变量
TCDIRS
TCNSLT=ASSIGN/6
——
变量
T
CNSLT
的值等于
6
—
把
字
符
1.4
信息操作
TEXT/OPER,'MAKE SURE THE PART IS ON THE
FIXTURE'
text OPER must be
closed pressing OK
TEXT/MAN,'MEAS UPPER HOLE'
text MAN disappear automatically when
you measure the 1
st
point
1.5
数据和文本输入
TEXT/QUERY,[NMV
AR],20,A,L,'Write
your name'
1.6
从测量元素中读取数据
利用
OBTAIN
指令可以读
取测量或理论元素内部的数据
.
请不要忘记区分‘<
/p>
F’与
‘FA’,‘S’与‘SA’,…之间的区别
。
F(POI_1)=FEAT/POINT,C
ART,1.111,2.222,3.333,0,0,0
F(POI_2)=FE
AT/POINT,CART,4.444,5.555,6.666,0,0,0
F
(POI_3)=FEAT/POINT,CART,7.777,8.888,9.999,0,0,0
p>
FA(POI_1)=FEAT/POINT,CART,1.111,2.222,3.3
33,0,0,0
FA(POI_2)=FEAT/POINT,CART,4.44
4,5.555,6.666,0,0,0
FA(POI_3)=FEAT/POIN
T,CART,7.777,8.888,9.999,0,0,0
DECL/INTGR,i
DECL/CHAR,20,elnm
DECL/DOUBLE,xx,yy,zz
DO/i,1,3
elnm=ASSIGN/CONCAT('poi_',STR(i))
xx=
OBTAIN
/FA(@elnm),3
yy=
OBTAIN
/FA(@elnm),4
zz=
OBTAIN
/FA(@elnm),5
elnm=ASSIGN/CONCAT('newpoi_',STR(i))
F(@elnm)=FEAT/POINT,CART,xx,yy,zz,0,0,0
FA(@elnm)=FEAT/POINT,CART,xx,yy,zz,0,0,0
ENDDO
在上面的例子中,
XX=
OBTAIN/FA(POI_1),3
,其中的
3
表示读取
POI_1
元素中的第三项参数。该序号
具
体对应项目,可以参考该元素的定义项目,比如:
F(POI_1)=FEAT/POINT,
CART,
序号:
1
2
3
4
5
6
7
8
1.111,
2.222,
3.333,
0,
0,
0
在点元素中,
1
—
“
POINT
”
, 2
—“
CART
”
, 3
—
-
X
坐标
, 4
—
-Y
坐标
, 5
—
< br>-Z
坐标
,
6
—
-I,
7
—
-J,
8
—
K
1.7
字符串合并
< br>CONCAT
指令用于合并两个或多个字符串或字符串变量
例一:
FILENAME=ASSIGN/
CONCAT(
PART1,NAME,'.TXT')
例二:
elnm=ASSIGN/
CONCAT(
'newpoi_',STR(i))
1.8
SCSNS
用于获得正在使用的测头名称
e.g
(举例)
.
DECL/DOUBLE,PRDIAM
——
定义双精度型变量
PRDIAM
DECL/CHAR,50,SENSOR_NAME
——
定义字符值为
< br>50
的字符型变量
SENSOR_NAME
SENSOR_NAME=ASSIGN/
SCSNS()
——
给字符型变量
< br>SENSOR_NAME
赋值测头名称
PRDIAM=OBTAIN/SA(@SENSOR_NAME),10
——
双精
度型变量
PRDIAM
读取第
10
p>
个理论测头
1.9
文件读写
$$$$
————————————————————————————————————————
$$$$ write points coordinates to file
$$$$
——————————————————————————
——————————————
DECL/CHAR,50,filnm,elnm
DECL/INTGR,i
DECL/DOUBLE,xx
DECL/DOUBLE,yy
DECL/DOUBLE,zz
TEXT/QUERY,[filnm],50,A,L,'insert file
name'
filnm=ASSIGN/CONCAT('C:',filnm,'.TXT']
DID[F1)=DEVICE/STOR,filnm
OPEN/DID[F1],DIRECT,OUTPUT,OVERWR
F(POI_1)=FEAT/POINT,CART,1.
111,2.222,3.333,0,0,0
F(POI_2)=FEAT/POI
NT,CART,4.444,5.555,6.666,0,0,0
F(POI_3
)=FEAT/POINT,CART,7.777,8.888,9.999,0,0,0
< br>FA(POI_1)=FEAT/POINT,CART,1.111,2.222,3.333,0,0 ,0
FA(POI_2)=FEAT/POINT,CART,4.444,5.55
5,6.666,0,0,0
FA(POI_3)=FEAT/POINT,CART
,7.777,8.888,9.999,0,0,0
DO/i,1,3
elnm=ASSIGN/CONCAT('poi_',STR(i))
xx=OBTAIN/FA(@elnm),3
yy=OBTAIN/FA(@elnm),4
zz=OBTAIN/FA(@elnm),5
WRITE/DID[F1],xx
WRITE/DID[F1],yy
WRITE/DID[F1],zz
ENDDO
CLOSE/DID[F1]
$$$$
——————————————
——————————————————————————
$$$$ read from file
$$$$
< br>————————————————————————————————————————
DECL/CHAR,50,filnm
-
-
-
-
-
-
-
-
-
上一篇:UG-后处理技巧说明
下一篇:Web开发文档