在 Autodesk Forge 上组合模型

combine model on Autodesk Forge

我有几个关于 Forge 查看器上的组合模型的问题(将列表 urn 加载到 1 个查看器):

  1. 当我组合模型时。我只能从该联合收割机中的 1 个主要模型获取数据。例如, var instanceTree = GlobalViewer.model.getData().instanceTree; var allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex); var list = allDbIdsStr.map(function (id) { return parseInt(id) }); 列表将 return 主模型的所有 dbid,当我组合时如何访问所有模型的所有数据?
  2. 组合模型中对象的唯一 ID 是什么。我用 dbid 做了一些功能,我意识到它也可以出现在其他模型中。
  3. 当我将 3d 模型 (revit) 与 2d 模型 (autocad) 结合使用时。它有两种情况:如果首先加载 3d 模型,我可以像正常一样旋转,如果首先加载 2d 模型,我就不能再旋转模型了。我怎样才能强制它总是可以旋转?
  4. Autocad 单位似乎与查看器中的模型不同。与模型相比,它总是按比例缩小。我该如何解决?

感谢任何评论,

关于 #1:viewer.model 显然只引用了其中一个模型(我相信这是你加载的最后一个模型),但你可以使用 viewer.getVisibleModels()viewer.getHiddenModels() 来获取其他模型也加载了模型。

关于 #2:dbIDs 仅在单个模型中是唯一的;许多查看器方法接受一个额外的参数来指定要操作的模型,例如,您可以说 viewer.select([123, 456], oneOfMyModels).

关于#3:这是个好问题;加载 2D 模型首先将查看器置于 2D 查看模式(仅允许缩放和平移);如果您知道自己将使用 3D 模型,我建议始终先加载这些模型

关于#4:是的,每个加载的模型可以有不同的单位;使用 loadDocumentNode 方法加载模型时,您可以指定其他选项(例如,加载几何体的放置变换),其中之一是名为 applyScaling 的对象,例如,如下所示:

viewer.loadDocumentNode(doc, viewable, {
    applyScaling: { to: 'mm' }
});