Autodesk forge 基于autodeskforge的组合模型

Autodesk forge 基于autodeskforge的组合模型,autodesk-forge,autodesk-viewer,Autodesk Forge,Autodesk Viewer,关于forge viewer上的合并模型(将列表urn加载到1个查看器),我有几个问题: 当我组合模型时。我只能从该联合收割机的1个主要模型中获取数据。比如说, var instanceTree=GlobalViewer.model.getData().instanceTree var allDbIdsStr=Object.keys(instanceTree.nodeAccess.dbIdToIndex) var list=alldbidssr.map(函数(id){return parseIn

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

  • 当我组合模型时。我只能从该联合收割机的1个主要模型中获取数据。比如说,
    var instanceTree=GlobalViewer.model.getData().instanceTree
    
    var allDbIdsStr=Object.keys(instanceTree.nodeAccess.dbIdToIndex)
    
    var list=alldbidssr.map(函数(id){return parseInt(id)})
    列表将返回主模型的所有dbid,合并时如何访问所有模型的所有数据
  • 联合收割机模型中对象的唯一id是什么。我用dbid做了一些功能,我意识到它也可以出现在其他模型中
  • 当我将三维模型(revit)与二维模型(autocad)相结合时。它有两种情况:如果先加载三维模型,我可以像正常情况一样旋转;如果先加载二维模型,我不能再旋转模型。我怎样才能强迫它始终可以旋转
  • Autocad单元与查看器中的模型似乎不同。与模型相比,它总是按比例缩小。我怎样才能解决这个问题
  • 感谢您对#1:
    viewer.model的评论。

    显然只引用了其中一个模型(我相信这是您最后加载的一个),但是您可以使用
    viewer.getVisibleModels()
    viewer.getHiddenModels()
    来获取其他加载的模型

    关于#2:
    dbid
    仅在单个模型中是唯一的;许多查看器方法都接受一个附加参数,该参数指定要操作的模型,例如,您可以说
    viewer.select([123456],OfMyModels之一)

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

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

    viewer.loadDocumentNode(文档,可查看{
    应用程序缩放:{to:'mm'}
    });
    
    关于#3:在我再次检查之后。在2D模式和3D模式之间似乎是随机的。我尝试先加载3D模型,但它仍然显示2D模式,有时我再次重新加载查看器,它显示3D模式。使用
    viewer.navigation.setIs2D(false)手动禁用导航逻辑中的2D模式。我找到了它随机的原因。我忘记了
    loadDocumentNode
    是承诺,所以尽管我已经将列表urn按顺序排列,但它仍然不工作。另外,我在文档中找不到方法
    viewer.navigation.setIs2D()
    ,它也返回标识。感谢您确保您使用的是最新版本的查看器(7.*)。
    setIs2D
    方法可能在早期版本中不可用。