经验反馈——一些常用的 PDMS 命令
这里提供一些常用的 PDMS 命令,可能有些只适用于台山项目。
Q abore
------查询元件的公称直径
Q aod
------查询元件的外径
Q P1 bore ------查询元件 P1 点的直径,包括设备上的 Nozzle
Q P3 bore ------查询元件 P3 点的直径,包括设备上的 Nozzle
Mark ce
------为当前元素做标记,可以是 Pipe,Branch,members, Equipment
等,标记的内容是它本身的名称。
Mark with 'RPE1567' ce ------对当前元素标记’RPE1567’, 引号里面可以是任意内容
Q Att
------查询当前元素的参数
Q :ims-qcl ------查询 Pipe 或 Branch 的等级,当前元素要放在 Pipe 或 Branch 层上,
Q name
------查询名称,如果知道这个名称,直接敲入命令行就可以找到改元
素。
Q lastmodif ------查询最后修改时间
Q usermod ------查询最后修改的用户
Q usermod :ims-qcl ------查询最后修改:ims-qcl 这个参数的用户
Q var !!ce.ppos[0].wrt(world)
------查询阀门的设计重心
Q var !!ce.ppos[999].wrt(world)
------查询阀门的设计者自己定义的重心
Q var !!ce.gcof.wrt(world)
------查询阀门的重心(不考虑负体积如挖孔等)
Q var !!ce.ncof.wrt(world)
------查询阀门真正的重心(这是 PDMS 自带的功能)
q var !!ce.poss.wrt(world)
Q var !!ce.hstub.attribute(':ep') ------查询 branch 头部的壁厚,当前元素放在 branch
上
Q var !!ce.lstub.attribute(':ep')
------查询选定元件下面管子的壁厚
Q var !!ce.spref.attribute(':ep')
或 Q :ep of spref ------查询所选元件的壁厚
上边的:ep 可以换成其他的参数,如:de(外径)
Q cllength
------查询 branch 的长度
Q var !!ce.spref.attribute(':matiere')[1].name
------查询管道的材料
Q spref
------查询元素的制造规格,比如,对于支吊架来说,得出的结果就可
能是 spref /MDP/PR09-100
Q :mtoarea
------查询安装分区信息
------查询元件 P1 点坐标,例如预埋板
Q p1 pos wrt world
Q pos wrt world
------查询元件在世界中的坐标
Q poss wrt world
------查询 Beam 的头部的中心点坐标
Q pose wrt world
------查询 Beam 的尾部的中心点坐标
Q :mdsancref
------查询 ATTA、STRU 以及 Anchor plate 之间的链接关系
Q :prop desc
------查询 Beam 截面信息
Q Dtxr
------查询元件的 catalogue 详细参数
Q Prop code
------查询支吊架的详细类型
Q angle/radius
------查询弯头和三通的角度和半径
Enhance ce col red
------对当前元素着色, 也可以是 green,pink , cyan 等其他颜
色
Enhance ce transl >5
------改透明度
Add all within vol ce ------添加当前元素空间内的所有元素
Add all STRU within vol ce 300 Col 4
------添加当前元素周围 300 空间内的所有
STRU 并以 yellow 显示,其中的 STRU、
300 和 col 4 是可变的参数
Add ce auto ce
------添加当前元素并居中显示
Add href cref
------添加 branch 头部和尾部相连的管道
Add cref
------添加三通相连的管道
Add all bran with :ims-ssno eq 'HRA_RPE_03' ------添加具有相同属性的管道,其中
的:ims-ssno 和 HRA_RPE_03 是可变参数
Add all bran with matchw(:ims-ssno,'HRA_RPE_03') ------添加具有相同属性的管道
add all bran with matchwild(:ims-ssno,'HRA_PTR_53') and Hbore gt 50 ------
Aid text num 2 (name of owner) at at hpos of owner ------辅助标记,其中的 num 2、
name of owner 和 hpos of owner 是可变参数,比如改成 num 3、TSN、ce/p0 等都可
以。
Aid clear text 2
------清除标号为 2 的辅助标记
Pin 5 at ce/end
------做数字标记
Pin 5 off
------取消数字标记
Dir to next
------与下一个元件对齐
Savework
------保存
改变数据库:
Var !mdb eval(name) for all mdb
Q var !mdb
Mdb noup
/HK_work_TEMP (这个名字是从前面查询得来的)
定义一个空间:
!From = E490120 N88265 D4120
!to = E506570 N94043 D1260
!volume = !from.string() & ' to ' & !to.string()
接下来就可以对这个空间进行操作,如:
var !bran collect branch within $!volume
测量两条异面管道之间的最短距离:
!p1 = !!ce.ppos[0].wrt(world)
------对管道 1 的管件 1 的坐标赋值
!p2 = !!ce.ppos[0].wrt(world)
------对管道 1 的管件 2 的坐标赋值
!line1 = object line(!p1,!p2)
!line1.draw(1001,1,2)
------对管道 1 的中心做辅助线
!p3 = !!ce.ppos[0].wrt(world)
------对管道 2 的管件 1 的坐标赋值
!p4 = !!ce.ppos[0].wrt(world)
------对管道 2 的管件 2 的坐标赋值
!line2 = object line(!p3,!p3)
!line2.draw(1001,1,2)
------对管道 2 的中心做辅助线
!dist = !line1.distance(!line2)
------求出距离
Q var !dist
以下命令可以查询管部件关键点坐标
在输入命令前,选中管部件。
Origin 点(弯头虚拟点,三通中心点):
q pos
管线流向第一点:
q p1 pos
管线流向第二点:
q p2 pos
支管或三通第三点:
q p3 pos
阀门重心点:
q p999 pos
在 PDMS 中查询管部件质量的命令
:
在输入命令前,选中管部件。
q cweight of cmpref of spref
以下命令可以查询管线状态
Q: MMSSTATUS
添加计算单元
add all bran with matchwild(:ims-ssno,'*HRA_NSSS_LB_RPE_02*')
IDL 中的关系运算符包括 EQ、NE、GE、GT、LE、LT 几个,关系运算符返回的
是真“True”或假“False”。
EQ(Equal to)
等运算符,如果运算符两边相同则返回真,否则返回假;
IDL> print,2 EQ 2.0
1
IDL> var = [2,3]
IDL> print,var eq 2
10
NE(Not Equal to)
不等运算符,如果运算符两边不等则返回真,否则返回假;
IDL> print,2 NE 2.0
0
IDL> print,2 NE 1
1
IDL> var = [2,3]
IDL> print,var ne 2
01
GE(Greater than or equal to)
大于等于运算符,如果运算符两边左边大于等于右边则返回真,否则返回假;
IDL> print,2 GE 1
1
IDL> var = [2,3]
IDL> print,var ge 2
11
GT(Greater than)
大于运算符,如果运算符两边左边大于右边则返回真,否则返回假;
IDL> print,2 GT 1
1
IDL> var = [2,3]
IDL> print,var gt 2
01
LE(Less than or equal to)
小于等于运算符,如果运算符两边左边小于等于右边则返回真,否则返回假;
IDL> print,2 LE 1
0
IDL> print,2 LE 12
1
IDL> var = [2,3]
IDL> print,var le 3
11
LT(Less than)
小于运算符,如果运算符两边左边大于右边则返回真,否则返回假;
IDL> print,2 LT 1
0
IDL> print,2 LT 12
1
IDL> print,2 LT 2
0
IDL> var = [2,3]
IDL> print,var lt 3
10
Oracle 的逻辑运算符也是用在 SQL 语句中必不可少的因素,一共有三个
逻辑运算符
意义
and
双值运算符,如果左右两个条
件都为真,则得到的值就为真
or
双值运算符,只要左右两个条
件有一个为真,则得到的值就
为真
单指运算符,如果原条件为
真,则得到真,如果元条件为
假,反之如果原条件为假,则
结果为真
not
下面使一些例子:
Select * from emp where sal > 2000 and job = ‘SALESMAN’;
寻找那些工资高于 2000 的且职位为销售的职员。
Select * from emp where job = ‘CLERK’ or deptno = 20;
寻找那些工作为 CLERK 或者所在部门标号为 20 的职员的列表
Select * from emp where not (sal > 3000 or sal < 1500);
寻找那些工资既不大于 3000 也不小于 1500,也即在 1500 到 3000 范围的员
工,相当于:select * from emp where sal between 1500 and 3000;
结合到前面所列出的各类运算符,在这里汇总一下 oracle 中所有运算符的优先级
运算符
级别
算术运算符(即‘+’,‘-’,
‘*’,‘/’)
连接运算符(即‘||’)
1
比较运算符(即‘>’,‘>
=’,‘<’,‘<=’,
‘<>’)
Is [not] null,[not] like,[n
ot] in
[not] between-and
3
not
6
2
4
5
and
or
通常使用‘()’可以改变运算符的优先级。
需要注意的是 and 的优先级要优于 or,也就是说
下面的语句
Select * from emp where sal < 1500 or sal >= 2000 and job = ‘ANALYST’;
等价于
Select * from emp where sal < 1500 or (sal >= 2000 and job = ‘ANALYST’);
而不是你所预期的
Select * from emp where (sal < 1500 or sal >= 2000) and job = ‘ANALYST’;
一般我们即使我们要表达第一个语句所要表达的意思,为了避免误解,都不采取第一种写法,
而是用括号来表明我们要先算后面的部分。