ZoomWindow 扩展在没有 GUI 的情况下中断?

ZoomWindow extension breaks without GUI?

使用查看器的 v2.13,ZoomWindow 扩展依赖于启用默认 GUI。有没有解决的办法?加载方式为:

proto.load = function() {
    var viewer = this.viewer;
    var toolbar = viewer.getToolbar(true);
    //var toolbar = viewer.getToolbar ? viewer.getToolbar(true) : undefined;

    // Init & Register tool
    this.tool = new namespace.ZoomWindowTool(viewer);
    viewer.toolController.registerTool(this.tool);

    // Add the ui to the viewer.
    this.createUI(toolbar);
    return true;
};

失败,因为 getToolbar 未定义。

从注释掉的那一行看似乎已经考虑过,但没有实施。

实现解决方法的最佳方法是什么 - 我应该用新名称复制整个扩展,还是可以在运行时替换加载方法?

编辑:希望使用无头查看器,但似乎最简单的方法就是用 css 隐藏 UI。

我不清楚您是在使用 GuiViewer3D 还是想使用 Viewer3D(没有 Autodesk 自定义的查看器)UI。如果您使用 GuiViewer3D,您可以在加载 ZoomWindow 扩展之前简单地等待工具栏加载,这需要创建工具栏控件以便向其添加按钮。

viewer.addEventListener(Autodesk.Viewing.TOOLBAR_CREATED_EVENT, function () {

   viewer.loadExtension('Autodesk.Viewing.ZoomWindow')
})

这是我不久前写的一篇关于在查看器中使用事件的博文。它不是最新的当前版本,但仍然有效: http://adndevblog.typepad.com/cloud_and_mobile/2015/10/event-watcher-extension-for-view-data.html

正如 Zhong 提到的那样,如果您想使用没有 UI 的无头查看器并仍然使用该扩展程序,您可能必须按照您的建议复制和自定义它。但更简单的解决方法是使用 GuiViewer3D 并简单地使用 css 隐藏现有的工具栏,这样 js 代码仍然有效。例如,在 div id="guiviewer3d-toolbar" 上或在 adsk-control class.

上设置 display:none

希望对您有所帮助