PML文法擷取元素主要有以下 兩種方法:
- collect關鍵字
- COLLECTION對象
collect
var !elementList collect [收集對象] [條件] [範圍]
收集對象
對象主要指的是要收集的元素類型,如:
- all FRMW (所有的FRMW對象)
- all BRAN member (所有管件,包括直管)
- BRAN member (所有管件,不包括直管)
- all (所有元素,包括自身)
條件
條件是可選項,一般使用with作為開始,後面需要是一個布爾表達式。如:
- all ZONE with (Match(Name, ‘A3B’) Gt 0)
- all BOX with (Xlen Gt 100)
範圍
邏輯範圍指的是PDMS目錄樹,一般使用for作為開始,後面是PDMS的具體層次。如:
- for /siteName (收集指定層次)
- for ce (從目前層次收集)
- for world (收集整個DB)
如果沒有for語句,表示從整個MDB下收集。
空間範圍指的是PDMS的3D空間,如:
- all PIPE within W 8000 N 1000 U 0 to E 1000 N 2000 U 1000
- all PIPE exclusive within volume /equi 1500 (收集某個裝置空間1500之内的管線)
傳回值
collect語句傳回值是一個數組,是符合條件的元素的REF的集合。數組元素資料類型是STRING。
COLLECTION
執行個體化
!objCollect = object COLLECTION()
收集對象
!objCollect.type('ZONE')
!objCollect.addType('STRU')
條件
條件主要是利用
Filter
方法實作,該方法的參數是
EXPRESSION
表達式。
-
方法可以連續使用,其關系為Filter
。and
-
表達式可以寫任意複雜。EXPRESSITION
範圍
使用
Scope
方法,該方法經過多個重載,可實作不同的功能。利用
appendScope
可進行範圍追加,利用
clearScope
,可清空範圍
!objCollect.scope(!!ce) $*從目前對象收集
!objCollect.scope(!dbrefList) $*從dbref數組中收集
!objCollect.scope(!collection) $*從另一個collection對象中收集
傳回值
傳回是符合條件的元素的
REF
的集合。數組元素資料類型是
DBREF
。