练习代码来自于AVEVA官方,笔者进行了简单解释和部分勘误!
1、一个简单的 Macro
–新建设备FREDNEW EQUIP /FRED
–新建立方体NEW BOX
–设置属性值
XLEN 300 YLEN 400 ZLEN 600
–新建圆柱并设置直径和高
NEW CYL DIA 400 HEI 600
–将圆柱的P1点和前一个元素(立方体)的P1相连
CONN P1 TO P2 OF PREV
2、参数化宏Parameterized Macro
NEW EQUIP /$1
NEW BOX
XLEN $2 YLEN $3 ZLEN $4
NEW CYL DIA $3 HEI $4
CONN P1 TO P2 OF PREV
将以上内容存在文件file.mac中,使用以下方法调用该文件:
$m file.mac ‘FRED’ 300 400 500
那么$1 = ‘FRED’
$2 = 30 0
$3 = 400
$4 = 500
3、变量给属性赋值
New Pipe
Desc ‘My Description’
Temp 100
Pspec /A3B
Purp PIPI
新建管道,设置Desc Temp Pspec Purp属性值
!desc = desc
!temp = temp
!pspec = pspec
!purp = purp
!desc、!temp、!pspec、!purp 为变量,pml语法中,以!开头的字符串为变量,字符串仅能包括英文字母和数字且不可以数字开头,大小写不区分。以!!开头的为全局变量。
New Pipe
Desc ‘$!desc’
Temp $!temp
!pspec $!pspec
!purp $!purp
新建管道,将!desc、!temp、!pspec、!purp 赋给其各属性
4、字符串方法实例
!line = ‘hello how are you’
!newline = !line.after(‘hello’).trim().upcase()
!newline设置为!line“hello”之后的字符串,且设置为大写
q var !newline
在命令行中显示 !newline
!newline = !newline.replace(‘how’,’ where’).replace(‘you’,’ you?’)
有误,应修改如下:
!newline = !newline.replace(‘HOW’, ‘WHERE’).replace(‘YOU’, YOU?’)
将HOW替换为WHERE,YOU替换为YOU?
5、定义函数
define function !!Area( !Length is REAL, !Width is REAL ) is REAL
!Area = !Length * !Width
return !Area $*函数!!Area有两个参数一个返回值
Endfunction
将上述代码拷贝到一个名为Area.pmlfunc的文件中,并将文件存储在pdms目录的pmlib中,便可调用该函数。
6、新建函数计算园的面积,测试函数
define function !!circleArea( !radius is REAL) is REAL
!Area = PI * pow(!radius,2)
return !Area
Endfunction
7、条件判断语句(If Construct)
–获取当前元素的类型
!Type = Type
–获取当前元素所属者的类型
!OwnType = Type of Owner
–如果类型是BRAN
IF (!Type eq ‘BRAN’) THEN
–$P为在命令行中打印
$P CE is Branch.
–再者如果所属者类型是BRAN
ELSEIF (!OwnType eq ‘BRAN’) THEN
$P CE is Branch member.
–其他情况
ELSE
$P CE is $!Type,Pls select Branch.
ENDIF
8、条件判断
!n = 0
!type = type
if(!type eq ‘BRAN’) then
–href为头部连接对象,tref为尾部连接元素
!href = href
!tref = tref
if(!href.set()) then
!n = !n + 1
–在graphicView中显示头部连接元素
add href
endif
if(!tref.set()) then
!n = !n + 1
add tref
endif
endif
if(!type eq ‘NOZZ’) then
–cref为管口连接元素
!cref = cref
if(!cref.set()) then
!n = !n + 1
add cref
endif
endif
$p Total $!n reference
9、循环赋值
!Total = 0
Do !x From 1 To 100 By 1
!Total = !Total + !x
Enddo
Do …enddo构成一个循环
10、中断循环 Break
!Total = 0
Do !x From 1 To 100
!Total = !Total + !x
If(!Total gt 500) then
Break $*或者Break if(!Total gt 500)
Endif
Enddo
Break为中断循环
11、用skip 跳过奇数
Do !x From 1 To 100
If(Int(!x / 2) NE (!x / 2)) then
Skip $*或者Skip If(Int(!x / 2) NE (!x / 2))
Endif
!Total = !Total + !x
Enddo
从1到100循环,!x/2后的取整之不等于!x/2则为奇数,skip为直接跳到do的位置,skip以下语句不再执行。
欢迎关注微信公众号 长远数智实验室 了解更多资讯!