iTwin 几何属性获取_oda getgeomextents
面积体积半径
获取几何属性,如面积,体积,半径,可以使用getMassProperties这个接口
async onGetMassProperty(){ const vp = IModelApp.viewManager.selectedView; const iModel = vp?.iModel; if (!iModel) return; console.log(\"iModel.selectionSet.elements\", iModel.selectionSet.elements); const volumeResult = await iModel.getMassProperties({ operation: MassPropertiesOperation.AccumulateVolumes, candidates: Array.from(iModel.selectionSet.elements), }); const areaResult = await iModel.getMassProperties({ operation: MassPropertiesOperation.AccumulateAreas, candidates: Array.from(iModel.selectionSet.elements), }); const lengthResult = await iModel.getMassProperties({ operation: MassPropertiesOperation.AccumulateLengths, candidates: Array.from(iModel.selectionSet.elements), }); console.log(\"volumeResult\", volumeResult); console.log(\"areaResult\", areaResult); console.log(\"lengthResult\", lengthResult); },
位置相关
range,origin,rotation等
async getPlacement(){ const vp = IModelApp.viewManager.selectedView; const iModel = vp?.iModel; if (!iModel) return; const placements = await iModel.elements.getPlacements( iModel.selectionSet.elements ); console.log(\"placements\", JSON.stringify(placements)); },
placements [{\"origin\":[34.199960548813415,7.3376951500380025,0],\"angles\":{\"roll\":136.25855192488035,\"yaw\":-2.6355965215330106},\"bbox\":{\"low\":[-3.329577892100504,-3.329577892100506,-3.3295778921005064],\"high\":[3.3295778921005077,3.329577892100506,3.3295778921005064]},\"elementId\":\"0x20000000047\"}]
几何图元具体信息
GeometryStreamIterator
// 打开snapshot测试import { IModelHost, SnapshotDb, StandaloneDb} from \"@itwin/core-backend\"import { GeometryStreamIterator } from \"@itwin/core-common\";IModelHost.startup();const iModel = SnapshotDb.openFile(\"../assets/geometry.bim\");const value = iModel.elements.getElementProps({ id: \'0x20000000049\', wantGeometry: true });console.log(\"ElementProps\",JSON.stringify(value));const it = new GeometryStreamIterator(value.geom, value.category);const primitiveGeometry = []; for (const entry of it) { primitiveGeometry.push(entry.primitive);}console.log(\"PrimitiveGeometry:\", JSON.stringify(primitiveGeometry));
Tips:5.0后不可以直接用snapshot,上述仅为实例