如何按条件筛选构件?_文档_BIMFACE_BIM应用二次开发平台

如何按条件筛选构件?

Viewer3D提供了多个按条件筛选构件的Method,以便于对构件进行隐藏、隔离、获取构件列表等操作,用户在不同的Method中可利用相应的字段来实现筛选。其中,构件隐藏、隔离等操作可用的字段有categoryId、levelName和specialty(见示例1),获取构件列表操作可用的字段有categoryId、family和famliyType(见示例2)。
另外,筛选条件支持两种情况:交集、并集:
1)交集:即满足条件A,又满足条件B;
2)并集:满足条件C,或者满足条件D。

示例1(构件隐藏、隔离等)

以下是一个构件(Component)的详细信息

{
    "objectId":"924639232728032.45851200",
    "fileId":"924639232728032",
    "elementId":"45851200",
    "objectData":{
        "categoryId":-2001340,
        "levelName":"F01",
        "specialty":"AR"
    },
    "boundingBox":{
        "min": {
            "x": 20174.197245435877,
            "y": 60867.47840650141,
            "z": 2946.249999999989
            },
        "max": {        
            "x": 20824.197245435877,        
            "y": 61517.47840650142,        
            "z": 3046.249999999989    
        }
    }
}

objectData 有3个字段:categoryId、levelName、specialty
如果要隔离出 categoryId = -2001340,且 levelName = “F01” 的构件(交集),则条件输入如下:

{
    "categoryId":-2001340,
    "levelName":"F01"
}

如果要隔离出 categoryId = -2001340,且 levelName = “F01” 的构件(交集),或者 levelName = “F02” 的构件(并集),则条件输入如下:

[
    {
        "categoryId":-2001340,
        "levelName":"F01"
    },
    {
        "levelName":"F02"
    }
]

综上:交集的条件是一个Json对象中的多个字段,而并集的条件是多个Json对象的数组。

示例2(获取构件列表)

以下是一个构件(Component)的详细信息

{
    "boundingBox": {
        "min": {
            "x": 28282.62,
            "y": -22220.13,
            "z": 0
        },
        "max": {
            "x": 37249.69,
            "y": -22020.13,
            "z": 8000
        }
    },
    "elementId": "211702",
    "name": "常规 - 200mm",
    "properties": [
        {
            "group": "基本属性",
            "items": [
                {
                    "key": "categoryId",
                    "value": "-2000011"
                },
                {
                    "key": "family",
                    "value": "基本墙"
                },
                {
                    "key": "familyType",
                    "value": "常规 - 200mm"
                }
            ]
        }
    ]
}

基本属性有3个字段:categoryId、family、familyType
如果要获取出 categoryId = -2000011,且 family = “基本墙” 的构件列表,则条件输入如下:

{
	"categoryId":-2000011,
	"family":"基本墙"
}

如果要隔离出 categoryId = -2000011,且 family = “基本墙” 的构件列表,或者 family = “楼板” 的构件(并集),则条件输入如下:

[
    {
        "categoryId":-2000011,
        "family":"基本墙"
    },
    {
        "family":"楼板"
    }
]