DIMS语言简明教程新.docx

上传人:b****6 文档编号:8474106 上传时间:2023-01-31 格式:DOCX 页数:11 大小:25.41KB
下载 相关 举报
DIMS语言简明教程新.docx_第1页
第1页 / 共11页
DIMS语言简明教程新.docx_第2页
第2页 / 共11页
DIMS语言简明教程新.docx_第3页
第3页 / 共11页
DIMS语言简明教程新.docx_第4页
第4页 / 共11页
DIMS语言简明教程新.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

DIMS语言简明教程新.docx

《DIMS语言简明教程新.docx》由会员分享,可在线阅读,更多相关《DIMS语言简明教程新.docx(11页珍藏版)》请在冰豆网上搜索。

DIMS语言简明教程新.docx

DIMS语言简明教程新

DMIS语言简明教程

本教程基于DMIS4.0语言编写,简明地介绍了最常用的DMIS指令,希望本教程能对ARCO用户利用DMIS语言编程时提供一些快速简便的指导。

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——PTMEAS/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——PTMEAS/CART,-28.1699,40.8494,-25.0000,-0.8660,-0.5000,0.0000

4——ENDMES

1——元素定义;2——测量指令;3——要测量点数(最少3点确定一个圆);4——测量结束指令。

以“F”开始的元素定义为理论元素,以“FA”开始的元素定义为测量元素。

序号:

1—元素名称;2—定义指令;3—定义圆元素;4—定义内圆;5—直角坐标系;6—X理论值;7—Y理论值;8—Z理论值;9—I;10—J;11—K;12—定义圆的理论直径

123456789101112

F(CIRC3)=FEAT/CIRCLE,INNER,CART,-32.5000,38.3494,-25.0000,0.0000,0.0000,1.0000,10.0000

FA(CIRC3)=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

“PTMEAS”指令驱动测量机采一个点,它后面包含该测量点的位置(-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

“Endmes”结束元素的测量并计算测量结果。

1.2变量定义

DECL/CHAR,80,TCDIRS——定义字符型变量,变量值为80,变量名称为TCDIRS

DECL/INTGR,TCNSLT——定义整型变量,变量名称为TCNSLT

DECL/DOUBLE,TCDIFX,TCDIFY,TCDIFZ——定义双精度型变量,变量名称分别为TCDIFX;TCDIFY;TCDIFZ

DECL/CHAR,80,RESULTS(10)——定义字符型变量,变量值为80,变量指针名称为RESULTS(10)

通过DECL指令定义变量:

DECL/INTGR,IND——定义整型变量,变量名称为IND

DECL/CHAR,80,RESULTS(10)——定义字符型变量,变量值为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赋值指令

给一个变量赋值,在DMIS中,不能仅使用等号“=”,必须用”ASSIGN/”。

如下举例:

TCDIRS=ASSIGN/'C:

\Programmi\Coord3\ARCO\Data\'—把字符串’C:

\Programmi\Coord3\ARCO\Data\’赋值给变量TCDIRS

TCNSLT=ASSIGN/6——变量TCNSLT的值等于6

1.4信息操作

TEXT/OPER,'MAKESURETHEPARTISONTHEFIXTURE'textOPERmustbeclosedpressingOK

TEXT/MAN,'MEASUPPERHOLE'textMANdisappearautomaticallywhenyoumeasurethe1stpoint

1.5数据和文本输入

TEXT/QUERY,[NMVAR],20,A,L,'Writeyourname'

1.6从测量元素中读取数据

利用OBTAIN指令可以读取测量或理论元素内部的数据.请不要忘记区分‘F’与‘FA’,‘S’与‘SA’,…之间的区别。

F(POI_1)=FEAT/POINT,CART,1.111,2.222,3.333,0,0,0

F(POI_2)=FEAT/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

FA(POI_1)=FEAT/POINT,CART,1.111,2.222,3.333,0,0,0

FA(POI_2)=FEAT/POINT,CART,4.444,5.555,6.666,0,0,0

FA(POI_3)=FEAT/POINT,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.111,2.222,3.333,0,0,0

序号:

12345678

在点元素中,1—“POINT”,2—“CART”,3—-X坐标,4—-Y坐标,5—-Z坐标,6—-I,7—-J,8—K

1.7字符串合并

CONCAT指令用于合并两个或多个字符串或字符串变量

例一:

FILENAME=ASSIGN/CONCAT(PART1,NAME,'.TXT')

例二:

elnm=ASSIGN/CONCAT('newpoi_',STR(i))

1.8SCSNS

用于获得正在使用的测头名称

e.g(举例).

DECL/DOUBLE,PRDIAM——定义双精度型变量PRDIAM

DECL/CHAR,50,SENSOR_NAME——定义字符值为50的字符型变量SENSOR_NAME

SENSOR_NAME=ASSIGN/SCSNS()——给字符型变量SENSOR_NAME赋值测头名称

PRDIAM=OBTAIN/SA(@SENSOR_NAME),10——双精度型变量PRDIAM读取第10个理论测头

1.9文件读写

$$————————————————————————————————————————

$$writepointscoordinatestofile

$$————————————————————————————————————————

DECL/CHAR,50,filnm,elnm

DECL/INTGR,i

DECL/DOUBLE,xx

DECL/DOUBLE,yy

DECL/DOUBLE,zz

TEXT/QUERY,[filnm],50,A,L,'insertfilename'

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/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

FA(POI_1)=FEAT/POINT,CART,1.111,2.222,3.333,0,0,0

FA(POI_2)=FEAT/POINT,CART,4.444,5.555,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]

$$————————————————————————————————————————

$$readfromfile

$$————————————————————————————————————————

DECL/CHAR,50,filnm

DECL/CHAR,50,xyz

DECL/DOUBLE,xx

DECL/DOUBLE,yy

DECL/DOUBLE,zz

TEXT/QUERY,[filnm],50,A,L,'insertfilename'

filnm=ASSIGN/CONCAT('C:

\',filnm,'.TXT']

DID[F1)=DEVICE/STOR,filnm

OPEN/DID[F1],DIRECT,INPUT

READ/DID[F1],xx

READ/DID[F1],yy

READ/DID[F1],zz

F(POI_10)=FEAT/POINT,CART,xx,yy,zz,0,0,0

FA(POI_10)=FEAT/POINT,CART,xx,yy,zz,0,0,0

READ/DID[F1],xx

READ/DID[F1],yy

READ/DID[F1],zz

F(POI_20)=FEAT/POINT,CART,xx,yy,zz,0,0,0

FA(POI_20)=FEAT/POINT,CART,xx,yy,zz,0,0,0

READ/DID[F1],xx

READ/DID[F1],yy

READ/DID[F1],zz

F(POI_30)=FEAT/POINT,CART,xx,yy,zz,0,0,0

FA(POI_30)=FEAT/POINT,CART,xx,yy,zz,0,0,0

result=ASSIGN/CONCAT(STR[xx],',',STR[yy],',',STR[zz]]

TEXT/OPER,result

CLOSE/DID[F1]

1.10逻辑操作

.AND.与

.OR.或

.NOT.非

1.11关系运算

.EQ.等于

.NE.不等于

.LT.小于

.LE.小于或等于

.GT.大于

.GE.大于或等于

1.12IF语句

IF/[NCYCLE.EQ.10]——如果NCYCLE等于10

$$instructions——结果输出语句

ELSE——否则……

$$instructions——否则的结果输出语句

ENDIF——结束条件如果

1.13DOloop循环语句

DECL/INTGR,i——定义整型变量i

DECL/CHAR,20,elnm——定义字符型变量,变量值为20,变量名称为elnm

DECL/DOUBLE,xx,yy,zz——定义双精度型变量xx,yy,zz

DO/i,1,3,1——变量i等于1开始循环,逐渐加1递增,直到i等于3

elnm=ASSIGN/CONCAT('poi_',STR(i))——合并字符串'poi_',STR(i)赋值给字符变量elnm

xx=OBTAIN/FA(@elnm),3——提取变量元素@elnm的第3项理论值赋值给xx

yy=OBTAIN/FA(@elnm),4——提取变量元素@elnm的第4项理论值赋值给yy

zz=OBTAIN/FA(@elnm),5——提取变量元素@elnm的第5项理论值赋值给zz

elnm=ASSIGN/CONCAT('newpoi_',STR(i))——合并字符串'newpoi_',STR(i)赋值给字符变量elnm

F(@elnm)=FEAT/POINT,CART,xx,yy,zz,0,0,0——变量元素@elnm的实测值定义

FA(@elnm)=FEAT/POINT,CART,xx,yy,zz,0,0,0——变量元素@elnm的理论值定义

ENDDO——结束DO循环

1.14SELECTCASE分支语句

DECL/INTGR,i——定义整型变量i

DECL/CHAR,50,tx——定义字符型变量,变量值为50,变量名称为tx

i=ASSIGN/10——把10赋值给i(i=10)

SELECT/i——选择整型变量i

CASE/10——CASE分支语句,假如i等于10

tx=ASSIGN/CONCAT('THEACTUALVALUEOFXIS:

',STR(i))——合并字符串变量'THEACTUALVALUEOFXIS:

',STR(i)赋值给字符变量tx

TEXT/OPER,tx——程序执行时,字符变量tx的文本信息显示在电脑屏幕上

ENDCAS——结束分支语句

CASE/20——CASE分支语句,假如i等于20

tx=ASSIGN/CONCAT('THEACTUALVALUEOFXIS:

',STR(i))——合并字符串变量'THEACTUALVALUEOFXIS:

',STR(i)赋值给字符变量tx

TEXT/OPER,tx——程序执行时,字符变量tx的文本信息显示在电脑屏幕上

ENDCAS——结束分支语句

DFTCAS——程序命令:

如果并且甚至没有一个CASE声明获得真实值,那么声明从DFTCAS到ENDCAS开始执行;如果声明出现真实值,则在SELECT……ENDSEL区间内的所有CASE……ENDCAS块后必须出现DFTCAS。

TEXT/OPER,'Xisnotequaltothe2cases'——程序执行时,字符串变量'Xisnotequaltothe2cases'的文本信息显示在电脑屏幕上

ENDCAS——结束分支语句

ENDSEL——结束循环SELECT

1.15Jump跳转语句

JUMPTO/[CONTINUEFROMHERE]

$$instructions

$$instructions

[CONTINUEFROMHERE]

$$instructions

$$instructions

1.16数学函数

ABS[X]绝对值

ACOS[X]反余弦

ASIN[X]反正弦

ATAN[X]反正切

ATAN2[Y,X]反正切,根据y/x计算,X和Y的符号代表角度象限

DTOR[X]把角度转换为弧度

RTOD[X]把弧度转换为角度

EXP[X]指数

INT(X]返回一个数的整数部分

NINT(X)返回一个数经过四舍五入后的整数

LEN[str1]返回字符串的长度

INDX[str1,str2]返回字符串的一部分在字符串中的位置

SDATE[]返回当前日期‘yyyy/mm/dd’

STIME[]返回当前时间‘hh:

mm:

ss’

COS[X]RealorDouble[角度为弧度]

SIN[X]RealorDouble[角度为弧度]

TAN[X]RealorDouble[角度为弧度]

SQRT(X]求平方根

STR[X]把一个数值转换为字符串

VAL[X]把一个字符串转化为一个数值

1.17宏(子程序)

宏可以在主程序中,也可以保存在外部程序中。

如果在主程序中,必须把宏写在程序的最前面。

M[foro)=Macro/off_x,off_y,'nome_ci'

DECL/LOCAL,DOUBLE,r_foro,z_mis

r_foro=ASSIGN/6.25

z_mis=ASSIGN/-2.5

F(@nome_ci]=FEAT/CIRCLE,INNER,CART,off_x,off_y,z_mis,0,0,1,r_foro*2

MEAS/CIRCLE,F(@nome_ci],4

GOTO/off_x,off_y,7

PTMEAS/CART,off_x+r_foro,off_y,z_mis,-1,0,0

PTMEAS/CART,off_x,off_y+r_foro,z_mis,0,-1,0

PTMEAS/CART,off_x-r_foro,off_y,z_mis,1,0,0

PTMEAS/CART,off_x,off_y-r_foro,z_mis,0,1,0

GOTO/off_x,off_y,7

ENDMES

ENDMAC

$$instructions

$$instructions

CALL/M[foro],12.5,12.5,[foro1]

$$instructions

$$instructions

通过‘EXTFIL’命令,可以调用保存在外部文件中的宏命令.

EXTFIL/DMIS,'c:

\cim\Macro.dmi'

外部的宏文件也具有“.DMI”后缀名,并以‘DMISMD’指令开头,以‘ENDFIL’指令结尾。

在宏文件中,其语法与常规的DMIS程序完全相同。

DMISMD/'module_name'

M[Macro_1)=Macro/passedtext

TEXT/OPER,CONCAT('Youpassedthefollowingtexttothe宏:

',passedtext]

ENDMAC

M[Macro_2)=Macro/num1,num2

DECL/DOUBLE,sumres

sumres=ASSIGN/num1+num2

TEXT/OPER,CONCAT('Thesumofthe2numbersis:

',STR[sumres]]

ENDMAC

ENDFIL

1.18用变量表示几何元素的名称

要用变量表示元素,测头和坐标系的名称,必须在变量名称之前加上字符串“@”。

F(@nome_po)=FEAT/POINT,CART,off_x-8.25,off_y,0,0,0,1——定义一个变量名称为@nome_po的点元素,其值为off_x-8.25,off_y,0,测量方向为0,0,1

MEAS/POINT,F(@nome_po),1——执行定义的变量名称为@nome_po的点元素指令

PTMEAS/CART,off_x-8.25,off_y,0,0,0,1——测量位置点为off_x-8.25,off_y,0,测量方向为0,0,1

ENDMES——结束测量点

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1