PDMS元素收集

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表达式可以写任意复杂。
!objCollect.Filter(object EXPRESSION('PURP Eq |PIPE|'))

范围

使用Scope方法,该方法经过多个重载,可实现不同的功能。利用appendScope可进行范围追加,利用clearScope,可清空范围

!objCollect.scope(!!ce) $*从当前对象收集
!objCollect.scope(!dbrefList) $*从dbref数组中收集
!objCollect.scope(!collection) $*从另一个collection对象中收集

返回值

!list = !collection.Results()

返回是符合条件的元素的REF的集合。数组元素数据类型是DBREF

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值