天天看點

PDMS元素收集collectCOLLECTION

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

繼續閱讀