如何在 forge viewer V7* 中使用 .impl 方法

Posted

技术标签:

【中文标题】如何在 forge viewer V7* 中使用 .impl 方法【英文标题】:how to use the .impl methods in forge viewer V7* 【发布时间】:2021-10-10 09:31:04 【问题描述】:

我一直在 V6* 中使用以下 .impl 方法

viewerApp.getCurrentViewer().impl.invalidate viewerApp.getCurrentViewer().impl.matman()._materials

如何继续使用 V7*

谢谢

编辑:



      var options = 
        env: 'AutodeskProduction',
        api: 'derivativeV2',
        getAccessToken: function(onTokenReady) 
          var token = accessToken;
          var timeInSeconds = 3600; 
          onTokenReady(token, timeInSeconds);
        
      ;
    
      var documentId = "urn:" + urn;
    
      Autodesk.Viewing.Initializer(options, function() 
    
        var htmlDiv = document.getElementById('forgeViewer');
        viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv);
        var startedCode = viewer.start();
    
        if (startedCode > 0) 
            console.error('Failed to create a Viewer: WebGL not supported.');
            return;
        
    
        console.log('Initialization complete, loading a model next...');
        Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
      );

... 然后我使用 impl 方法如下..


     var mats = viewer.impl.matman()._materials;

但我仍然得到错误

无法读取 null 的属性“impl”

不知道为什么,但可能是我的全局 viewer 变量为 null ,不知道为什么会发生这种情况或我做错了什么。

【问题讨论】:

这可能是时间问题 - 也许您正尝试在全局查看器变量初始化之前访问它。尝试在初始化 viewer 变量的行上放置一个断点,看看它是否被及时调用。 【参考方案1】:

impl 下的任何内容通常被视为内部实现,因此不应依赖于生产代码。话虽如此,impl 属性仍然可用,如果需要,您可以在 Forge Viewer 版本 7.* 中使用它,如下所示:

const viewer = new Autodesk.Viewing.GuiViewer3D(...);
viewer.impl.invalidate();
viewer.impl.matman();

【讨论】:

谢谢,还有一件事forge.autodesk.com/blog/placing-custom-markup-dbid教程只支持viewer V7*? 我相信这个特殊功能也应该适用于 v6(从查看器 API 的角度来看,唯一需要的是将世界坐标转换为画布坐标,v6 绝对可以也这样做),但可能需要进行一些小的调整。 嗨@Petr,尽管对于V7 *,我收到以下错误,“无法读取未定义的属性'impl'”我正在尝试的是,var mats = viewerApp.impl.matman()。 _材料;' 我明白了。从 v6 迁移到 v7 时,您确实需要更改一些内容(请参阅 migration guide)。 impl 对象仍然存在,但不是通过“查看器应用程序”(viewerApp.impl) 访问它,您需要通过“Viewer3D”(viewer.impl) 的实例访问它。 嗨@Petr,我仍然收到错误,所以我用我的代码sn-p更新了OP。

以上是关于如何在 forge viewer V7* 中使用 .impl 方法的主要内容,如果未能解决你的问题,请参考以下文章

Autodesk forge viewer api v7.* 对齐多个 2d dwg 模型

Autodesk Forge Viewer v7 - setThemingColor

Forge Viewer v7* 中的 SELECTION_CHANGED_ EVENT 问题

Autodesk Forge Viewer PDF 捕捉和缩放问题

如何使用Forge Viewer在revit文件中显示项目?

如何在 forge-viewer 中从最新版本的 three.js 添加几何图形?