【问题标题】:combine model on Autodesk Forge在 Autodesk Forge 上组合模型
【发布时间】:2021-01-09 09:37:49
【问题描述】:

我有几个关于 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) }); list 将返回主模型的所有 dbid,当我合并时如何访问所有模型的所有数据?
  2. 组合模型中对象的唯一 ID 是什么。我用 dbid 做了一些功能,我意识到它也可以出现在其他模型中。
  3. 当我将 3d 模型(revit)与 2d 模型(autocad)结合起来时。它有两种情况:如果先加载 3d 模型,我可以正常旋转,如果先加载 2d 模型,我将无法再旋转模型。我怎样才能强制它总是可以旋转?
  4. Autocad 单元似乎与查看器中的模型不同。与模型相比,它总是按比例缩小。我该如何解决?

欣赏任何cmets,

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    关于#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' }
    });
    

    【讨论】:

    • 关于#3:在我再次检查之后。 2D 模式和 3D 模式之间似乎是随机的。我尝试先加载 3D 模型,但它仍然显示 2D 模式,有时我再次重新加载查看器并显示 3D 模式。有点混乱
    • 尝试使用viewer.navigation.setIs2D(false);手动禁用导航逻辑中的2D模式。
    • 我找到了它随机的原因。我忘记了loadDocumentNode 是承诺所以虽然我已经按顺序放置了列表骨灰盒,但它仍然无法正常工作。我在文档中找不到方法viewer.navigation.setIs2D(),它也返回标识。谢谢你
    • 确保您使用的是最新版本的查看器 (7.*)。 setIs2D 方法可能在早期版本中不可用。
    猜你喜欢
    • 2021-12-25
    • 2020-02-10
    • 2019-05-03
    • 2021-10-02
    • 2019-12-23
    • 2020-05-27
    • 2019-10-26
    • 2021-08-16
    • 2019-03-23
    相关资源
    最近更新 更多