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

如何获取ACC绘图界面Place Me功能显示的Bounding Box(Autodesk Viewer)

获取ACC绘图界面Place Me功能的Bounding Box

问题背景

在ACC绘图界面使用Place Me功能时,图纸会显示一个Bounding Box,我想了解如何获取该Bounding Box。已查阅过一段2D转3D空间转换的代码,但该代码需要同时加载2D和3D模型,希望找到直接读取该Bounding Box的方法。

相关参考代码:

function sheetToWorld(sheetPos, model2d, model3d) {
  let position = model3d.myData.bbox.max.clone();
  position.x=sheetPos.x;
  position.y=sheetPos.y;
  const viewport = viewportExt.findViewportAtPoint(model2d, position)
  console.log(viewport);
  if (!viewport) {
    return null;
  }
  const sheetUnitScale = model2d.getUnitScale();
  const globalOffset = model3d.getData().globalOffset;
  const matrix = viewport.get2DTo3DMatrix(sheetUnitScale);
  const worldPos = position.clone().applyMatrix4(matrix).sub(globalOffset);
  return worldPos;
}

直接读取Bounding Box的方案

  • 调用ACC Viewer原生API
    ACC的Viewer SDK针对Place Me功能提供了原生接口支持。你可以通过监听工具激活事件,获取当前活跃的Place Me工具实例,直接读取其内置的Bounding Box数据:

    viewer.addEventListener(Autodesk.Viewing.TOOL_ACTIVATED, (event) => {
      if (event.toolName === 'PlaceMeTool') {
        const activeTool = viewer.toolController.getActiveTool();
        if (activeTool?.boundingBox) {
          console.log('Place Me的Bounding Box:', activeTool.boundingBox);
        }
      }
    });
    

    这种方式无需同时加载2D和3D模型,直接从激活的放置工具中获取数据,是最稳定可靠的方案。

  • 通过屏幕坐标转换(备选)
    如果官方API无法满足需求,可尝试定位Place Me的可视化DOM元素,获取其屏幕坐标后,用Viewer的clientToWorld方法转换为模型空间的Bounding Box。但这种方式依赖页面DOM结构,可能随ACC版本更新失效,仅作为备选方案。

内容的提问来源于stack exchange,提问作者A Little Dinosaur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:05:23