나는 객체의 dbid를 얻고 dbid를 사용하여 Layer로 정의 된 속성에서 객체의 수준을 얻을 것이라고 생각했지만 불행히도 내 객체 중에는 계층이 정의되어 있지 않으므로 식별 할 수있는 다른 방법이 있습니까? 물체가있는 층 또는 층?
모델이 Revit 2018 이상에서 생성 된 RVT 인 dbIds
경우 AecModelData 를 읽어 레벨 데이터 및 레벨 차단기 (예 : 바닥, 천장)를 가져올 수 있습니다. AecModelData가로드되면 Autodesk.AEC.LevelsExtension 을 활용하여 각 레벨의 z 범위를 가져올 수 있습니다.
const floorData viewer.getExtension('Autodesk.Aec.LevelsExtension').floorSelector.floorData;
const currentLevel = floorData[0];
const currentLevelZmin = currentLevel.zMin;
const currentLevelZmax = currentLevel.zMax;
그런 다음 원하는 개체의 z 값을 수준 범위와 비교하여 수준 내에 있는지 확인합니다.
const minZ = currentLevel.zMin;
const maxZ = currentLevel.zMax;
let nodeBox = new Float32Array(6);
instanceTree.getNodeBox(dbId, nodeBox);
const nodeBoxMinZ = nodeBox[2];
const nodeBoxMaxZ = nodeBox[5];
let insideLevel = false;
if ((nodeBoxMinZ >= minZ && nodeBoxMinZ <= maxZ) ||
(nodeBoxMaxZ >= minZ && nodeBoxMaxZ <= maxZ) ||
(nodeBoxMinZ <= minZ && nodeBoxMaxZ >= maxZ)) {
insideLevel = true;
}
if( insideLevel ) {
// Do someting
}
를 사용하여 Autodesk.AEC.LevelsExtension 을로드하면 ifcLevelsEnabled: true
이 확장이 IFC 모델에서도 작동합니다. 즉석에서 IFC 모델에 대한 바닥 데이터를 다시 작성합니다.
viewer.loadExtension('Autodesk.AEC.LevelsExtension', {ifcLevelsEnabled: true});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다