You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autodesk Forge Viewer无法按楼层生成爆炸视图,求助解决全元素爆炸问题

按楼层生成Autodesk Forge Viewer爆炸视图解决方案
  • 步骤1:按楼层分组元素
    先遍历模型元素,通过Level属性将元素按楼层归类:

    const floorElements = new Map();
    const tree = viewer.model.getInstanceTree();
    const iterator = tree.nodeIterator();
    let node;
    while ((node = iterator.next())) {
      const props = await viewer.getProperties(node.dbId);
      const levelProp = props.properties.find(p => p.displayName === 'Level');
      if (levelProp) {
        const levelName = levelProp.displayValue;
        if (!floorElements.has(levelName)) floorElements.set(levelName, []);
        floorElements.get(levelName).push(node.dbId);
      }
    }
    
  • 步骤2:为每层应用爆炸位移
    对每个楼层的元素设置统一的偏移量,实现分层爆炸效果:

    const explodeGap = 60; // 每层爆炸间距,单位匹配模型坐标系
    let offsetZ = 0;
    viewer.impl.explodeEnabled = true;
    // 按楼层名称排序,保证分层顺序正确
    const sortedLevels = Array.from(floorElements.keys()).sort();
    sortedLevels.forEach(levelName => {
      const dbIds = floorElements.get(levelName);
      dbIds.forEach(dbId => {
        const transform = new THREE.Matrix4();
        transform.makeTranslation(0, 0, offsetZ);
        viewer.impl.setExplodeTransform(dbId, transform);
      });
      offsetZ += explodeGap;
    });
    viewer.impl.invalidate(true);
    
  • 重置爆炸视图
    如果需要恢复原状,执行:

    viewer.impl.clearExplodeTransforms();
    viewer.impl.invalidate(true);
    
  • 注意事项

    • 部分模型的楼层属性字段可能为英文(如"Level Name"),需根据实际属性调整筛选逻辑
    • 可根据模型坐标系调整位移方向(如X/Y轴)和间距数值

内容的提问来源于stack exchange,提问作者voltus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:53:20