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