0

我正在尝试获取与转换后的 rvt 文件一起使用的所有 2d 和 3d 模型的列表。

查看较旧的示例: LmvNavTest他们会执行类似的操作来访问“文档” rootItem

Autodesk.Viewing.Document.load(fullUrnStr, function(document) {
    _loadedDocument = document; // keep this in a global var so we can reference it in other spots

        // get all the 3D and 2D views (but keep in separate arrays so we can differentiate in the UX)
    _views3D = Autodesk.Viewing.Document.getSubItemsWithProperties(document.getRootItem(), {'type':'geometry', 'role':'3d'}, true);
    _views2D = Autodesk.Viewing.Document.getSubItemsWithProperties(document.getRootItem(), {'type':'geometry', 'role':'2d'}, true);

据我了解,现在首选的方法是使用 loadModel

oViewer =new Autodesk.Viewing.Private.GuiViewer3D ($("#viewerContainer") [0], {}) ;
oViewer.loadModel (url , [],  onLoadSuccess, onLoadFail) ;

如果我以 loadModel 方式执行此操作,我如何访问文档以便调用它的 getSubItemsWithProperties 方法

4

1 回答 1

2

您提出问题的方式有点令人困惑,如果您对离线加载的内容不是很明确,则很难理解您的工作流程。

以下是我认为可能的两种情况:

1/ 您使用 URN 从 Autodesk Cloud 在线加载模型:在这种情况下,您需要首先调用Autodesk.Viewing.Document.load,此调用实际上会返回清单数据,您可以从那里检索 3D 和 2D 可查看项目正如您所指出的,使用Autodesk.Viewing.Document.getSubItemsWithProperties 。一旦您选择了 - 以编程方式或通过用户交互 - 要在查看器中加载的路径,您可以使用viewer.loadModel(_views2D[idx])

2/ 您已经在本地下载了模型的整个包,在这种情况下,您应该已经知道现有的 2D 和 3D 视图是什么,因为您有一些逻辑可以解析资源并存储每个可视项。通常,您需要将此信息存储在 .json 或类似文件中。

在这种情况下您不需要使用Autodesk.Viewing.Document.load,您可以直接使用viewer.loadModel('path/of/the/view/you want to load on your local disk')

一旦您使模型脱机,就无法“知道”现有视图是什么,除非您的代码创建了一个包含此数据的 .json。

查看这篇文章,了解有关如何以编程方式提取与翻译的 Forge 模型相关联的资源的更多详细信息:Node.js 中的 Forge SVF Extractor

希望澄清事情,如果您有不同的情况,请解释您如何进行。

于 2016-09-28T21:40:49.250 回答