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

如何基于Autodesk Forge获取指定dbId坐标及CAD List命令等效信息

获取Autodesk Forge中指定dbId的坐标及类似CAD「list」命令的信息

一、获取元素坐标信息

1. 快速获取包围盒中心点(世界坐标系)

直接通过元素的fragment计算整体包围盒,取中心点:

const fragList = viewer.model.getFragmentList();
const fragIds = fragList.fragments.dbId2fragIds[dbId];
let bbox = new THREE.Box3();
for (const fragId of fragIds) {
  fragList.getWorldBounds(fragId, bbox);
}
const center = bbox.getCenter(new THREE.Vector3());
// center就是元素在Viewer世界坐标系下的中心点坐标

2. 获取CAD原生本地坐标系坐标

如果需要CAD软件里显示的原始坐标,要把世界坐标转成元素本地坐标系:

// 先拿第一个fragment的变换矩阵(多fragment元素需统一处理)
const matrix = fragList.getWorldMatrix(fragIds[0]);
const localCenter = center.clone().applyMatrix4(new THREE.Matrix4().getInverse(matrix));
// localCenter就是CAD本地坐标系下的位置

二、获取类似CAD「list」命令的详细信息

1. 扩展Viewer的属性获取能力

默认viewer.getProperties()返回的信息不全,开启全属性加载:

  • 加载模型时指定propDbPath参数,确保拉取全部属性:
const loadOptions = {
  propDbPath: `https://developer.api.autodesk.com/modelderivative/v2/designdata/${urn}/metadata/${modelGuid}/properties`
};
viewer.loadModel(urn, loadOptions);
  • 调用getProperties时传true获取完整属性:
viewer.getProperties(dbId, (props) => {
  console.log(props); // 包含更多CAD原生属性,接近list命令的内容
}, true);

2. 调用Model Derivative API直接获取原始属性

如果Viewer端还是拿不到足够信息,直接调用API:

  • 发送GET请求到:/modelderivative/v2/designdata/{urn}/metadata/{guid}/properties/{dbId}
  • 请求头带上Authorization: Bearer {你的访问令牌}
  • 返回结果包含元素的几何参数、材质、所属图层等所有CAD原生属性,完全对应「list」命令的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:48:09