在Autodesk Forge上组合模型

问题描述

我在Forge Viewer上有两个关于合并模型的问题(将列表urn加载到1个Viewer):

  1. 当我组合模型时。我只能从该组合的1个主要模型中获取数据。例如, var instanceTree = GlobalViewer.model.getData().instanceTree; var allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex); var list = allDbIdsStr.map(function (id) { return parseInt(id) }); 列表将返回主模型的所有数据,合并后如何访问所有模型的所有数据?
  2. 联合模型中对象的唯一ID是什么。我用dbid做一些功能,我意识到它也可以出现在其他模型中。
  3. 当我将3d模型(revit)与2d模型(autocad)结合在一起时。它有2种情况:如果先加载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' }
});

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...