Autodesk Forge Viewer:如何获取文档

时间:2016-09-21 15:22:30

标签: autodesk-forge autodesk-viewer

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

查看较旧的example : 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方法

1 个答案:

答案 0 :(得分:2)

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

以下是我认为可能的2个场景:

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

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

在这种情况下,您不需要使用 Autodesk.Viewing.Document.load ,您可以直接使用 viewer.loadModel('path / / / view /你想在本地磁盘上加载')

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

有关如何以编程方式提取与已翻译的Forge模型关联的资源的详细信息,请查看此文章:Forge SVF Extractor in Node.js

希望澄清事情,如果你有不同的情况,请解释你如何继续。