簡體   English   中英

獲取在 ifcgroup 中分組的元素的 guid

[英]Get the guid of the elements grouped in an ifcgroup

IFCJS 的 API 中是否有 function 以獲取在 ifcgroup 中分組的元素的 guid? 例如,如果我將一列與一堵牆組合在一起

getElementsFromIfcGroup(guidGroup) ---> return [guidWall, guidColumn]

根據 IFC 架構, IfcGroup實例使用稱為IfcRelAssignsToGroup的間接關系 object 將元素組合在一起。 這意味着您可以像這樣檢索該組中包含的元素:

import { IFCRELASSIGNSTOGROUP as REL } from 'web-ifc';

async function getItemsOfGroup(modelID, groupID) {
  const manager = ifcLoader.ifcManager;
  const relIDs = await manager.getAllItemsOfType(modelID, REL);

  for(relID of groupsIDs) {
    const groupRel = await manager.getItemProperties(modelID, relID);
    if(groupRel.RelatingGroup.value === groupID) {
     return groupRel.RelatedObjects;
    }
  }

  return [];
}

根據安東尼奧的回答,它看起來像這樣:

    async function getItemsOfGroup(modelID, groupID) {
        const manager = viewer.IFC.loader.ifcManager
        // Get all ifcgroups
        const relIDs = await manager.getAllItemsOfType(modelID, IFCRELASSIGNSTOGROUP);
        let relID, relObj, props;
        var guIDs = [];
        for(relID of relIDs) {
            const groupRel = await manager.getItemProperties(modelID, relID);
            // Find the groupID
            if(groupRel.GlobalId.value === groupID) {
                // Search all related objects 
                for(relObj of groupRel.RelatedObjects) {
                    //get object properties 
                    props = await manager.getItemProperties(modelID, relObj.value);
                    //Add guid to array
                    guIDs[guIDs.length] = props.GlobalId.value;
                }
                return guIDs;
            }
        }
        return guIDs;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM