构件筛选方法

Viewer3D中多个接口提供了按条件筛选构件的功能,以便于对构件进行隐藏、隔离、获取构件列表等操作,用户可利用相应的字段来实现筛选。

筛选条件

筛选条件支持两种情况:

  • 交集:既满足条件A,又满足条件B;
  • 并集:满足条件A,或者满足条件B。

筛选示例

1. 构件信息

为便于用户进行构件筛选,BIMFACE针对三维模型构件定义了objectData,包含了5个字段,分别为categoryId、levelName、specialty、family及familyType。

用户可通过Viewer3D类中的getObjectDataById的方法获取构件的objectData信息。

{
  "objectId": "924639232728032.45851200",
  "fileId": "924639232728032",
  "elementId": "45851200",
  "objectData": {
    "categoryId": -2001340,
    "levelName": "F01",
    "specialty": "AR",
	"family": "Single Window",
	"familyType": "Standard"
  },
  "boundingBox": {
    "min": {
      "x": 20174.197245435877,
      "y": 60867.47840650141,
      "z": 2946.249999999989
    },
    "max": {        
      "x": 20824.197245435877,        
      "y": 61517.47840650142,        
      "z": 3046.249999999989    
    }
  }
}
2. 交集

交集的条件筛选格式是一个包含多个字段的JSON对象。

  • 如果想要隔离出 categoryId = -2001340,且 levelName = "F01" 的构件(交集),则条件输入如下:
[
  {
    "categoryId": -2001340,
    "levelName": "F01"
  }
]
3. 并集

并集的条件筛选格式是一个包含多个JSON对象的数组。

  • 如果要隔离出 categoryId = -2001340,且 levelName = "F01" 的构件(交集),或者 levelName = "F02" 的构件(并集),则条件输入如下:
[
  {
    "categoryId":-2001340,
    "levelName":"F01"
  },
  {
    "levelName":"F02"
  }
]

更多关于条件筛选的用法,可参考示例Demo中的以下内容: