微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 Forge 查看器的上下文菜单中删除项目

如何解决从 Forge 查看器的上下文菜单中删除项目

我想从 V.7.38 添加的上下文菜单删除 显示属性 项,并在菜单中保留其他选项。

虽然我可以删除旧的选项,例如隔离或隐藏所选,但我无法从菜单删除显示属性

viewer.registerContextMenuCallback('id',function (menu,st) {
    //remove the item from menu
})

代码示例适用于较旧的选项。有没有其他方法可以删除添加的选项,例如 Show properties ? 谢谢

解决方法

今天删除特定菜单项有点棘手,原因有两个:

  1. 不同的查看器扩展可能会在您的回调之前之后注册他们自己的菜单回调。

  2. 当查看器遍历所有要执行的菜单回调时,它只需使用 for (const callbackId in viewer.contextMenuCallbacks) { ... }(其中 contextMenuCallbacks 是一个 JavaScript 对象),这意味着执行顺序不是确定性。

在“显示属性”菜单条目的情况下,此菜单项由名为 propertiesmanager 的上下文菜单回调添加,由名为 Autodesk.PropertiesManager 的内置查看器扩展程序添加。话虽如此,有几个选项可以删除菜单项,例如:

  • 使用 propertiesmanager 删除 viewer.unregisterContextMenuCallback('propertiesmanager') 菜单回调
  • 尝试尽可能晚地注册您自己的菜单回调,以提高在 propertiesmanager 回调之后被调用的机会,因此它可以删除“显示属性”运行;我可以通过在 Autodesk.Viewing.GEOMETRY_LOADED_EVENT 之后注册我自己的菜单回调来实现这一点,但同样,我不能保证这将始终有效,因为对象键的枚举(在上面的第 2 点中)不是确定性的。
  • 修改 Autodesk.PropertiesManager 扩展的行为,例如,通过修改其处理菜单回调的 _onContextMenu 方法;虽然这很hacky...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。