【问题标题】:How to set model.getDocumentNode when loading multiple documents?加载多个文档时如何设置model.getDocumentNode?
【发布时间】:2019-02-15 01:11:05
【问题描述】:

我从查看器中的多个转换后的 revit 文件加载多个模型。 在这些模型中的每一个中,我都将点与所选元素相关联。 为了以后能够重用这些点,我需要:

  1. 它来自哪个 revit 文档 -> models[x].myData.urn : ok
  2. Revit 文档中的哪个视图(模型)取自它 -> model.getDocumentNode 返回 null(当我使用 viewerApp 加载单个模型时不是这种情况)。这导致 node.model.getDocumentNode().data.guid 是视图的 guid 无法访问。哥
  3. Dbid -> 出现在选择事件中:好的
  4. Guid -> 我构建了一个 2 路映射表 (dbidguid) 来获得我需要的东西:好的(对更直接的方法开放,但是好的)

主要问题是第二点,在查看器中加载多个模型时如何设置model.getDocumentNode?​​p>

谢谢你,

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    您可以在加载过程中收集文档 URN 和模型 GUID:

    function load(urn) {
        viewerApp.loadDocument(
            'urn:' + urn,
            function onDocumentLoadSuccess(doc) {
                const viewables = viewerApp.bubble.search({ 'type': 'geometry' });
                if (viewables.length > 0) {
                    const path = doc.getViewablePath(viewables[0].data);
                    const viewer = viewerApp.getCurrentViewer();
                    const options = { /* your options */ };
                    viewer.loadModel(path, options, function onModelLoadSuccess(model) {
                        model._myURN = urn;
                        model._myGUID = viewables[0].data.guid;
                    });
                }
            }
        );
    }
    

    【讨论】:

    • 在加载时是一个选项。谢谢。是否有任何 API 计划会在未来版本中淘汰此方法?
    • 好问题@Fabien。由于该方法仅使用公共且非常常用的 API,因此我认为它不会很快被淘汰。
    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    相关资源
    最近更新 更多