【问题标题】:ZoomWindow extension breaks without GUI?ZoomWindow 扩展在没有 GUI 的情况下中断?
【发布时间】:2017-07-19 22:46:53
【问题描述】:

使用查看器的 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。

【问题讨论】:

  • getToolbar是Autodesk.Viewing.GuiViewer3D的一个功能,用Autodesk.Viewing.GuiViewer3D应该不错。您是否使用 Autodesk.Viewing.Viewer3D 的无头查看器?如果是这样,我认为你不能像加载一样简单地使用“ZoomWindow”扩展,如果你检查代码,扩展中有很多 UI 处理,你可能需要覆盖扩展。
  • 到目前为止,如果在 load() 中跳过 this.createUI(toolbar),似乎不会调用 UI 代码。
  • 您能否在下面查看我的答案,如果我遗漏了什么,请告诉我,如果是,请解释我们如何在该主题上进一步帮助您,否则请接受作为答案。谢谢

标签: autodesk-forge autodesk-viewer


【解决方案1】:

我不清楚您是使用 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

正如钟所说,如果您想使用没有 UI 的无头查看器并仍然使用扩展程序,您可能必须按照您的建议复制和自定义它。但更简单的解决方法可能是使用 GuiViewer3D 并简单地使用 css 隐藏现有工具栏,因此 js 代码仍然有效。例如,在 div id="guiviewer3d-toolbar" 或 adsk-control 类上设置 display:none。

希望有帮助

【讨论】:

    猜你喜欢
    • 2013-06-27
    • 2014-03-03
    • 2014-05-05
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多