从 Forge 查看器的上下文菜单中删除项目
Removing items from context menu in Forge viewer
我想从 V.7.38 添加的上下文菜单中删除 显示属性 项,并保留菜单中的其他选项。
虽然我可以删除旧选项,例如 隔离或隐藏所选内容,但我无法从中删除显示属性菜单。
viewer.registerContextMenuCallback('id', function (menu, st) {
//remove the item from menu
})
此代码示例适用于旧选项。有没有其他方法可以删除 Show properties
等新添加的选项?
谢谢
由于以下两个原因,今天删除特定菜单项有点棘手:
不同的查看器扩展程序可能会在 之前或 您的回调之后注册它们自己的菜单回调。
当查看器遍历所有要执行的菜单回调时,它只使用 for (const callbackId in viewer.contextMenuCallbacks) { ... }
(其中 contextMenuCallbacks
是一个 JavaScript 对象),它意味着执行顺序是不确定的。
对于“显示属性”菜单项,该菜单项由名为 propertiesmanager
的上下文菜单回调添加,由名为 Autodesk.PropertiesManager
的内置查看器扩展添加。话虽如此,有几个选项可以删除菜单条目,例如:
- 使用
viewer.unregisterContextMenuCallback('propertiesmanager')
删除 propertiesmanager
菜单回调
- 尝试尽可能晚地注册您自己的菜单回调,以增加在
propertiesmanager
回调之后调用它的机会,因此它可以删除运行时“显示属性”;我能够通过在 Autodesk.Viewing.GEOMETRY_LOADED_EVENT
之后注册我自己的菜单回调来实现这一点,但同样,我不能保证这将始终有效,因为对象键的枚举(在上面的第 2 点)是不确定的。
- 修改
Autodesk.PropertiesManager
扩展的行为,例如,修改其处理菜单回调的 _onContextMenu
方法;虽然这很老套...
我想从 V.7.38 添加的上下文菜单中删除 显示属性 项,并保留菜单中的其他选项。
虽然我可以删除旧选项,例如 隔离或隐藏所选内容,但我无法从中删除显示属性菜单。
viewer.registerContextMenuCallback('id', function (menu, st) {
//remove the item from menu
})
此代码示例适用于旧选项。有没有其他方法可以删除 Show properties
等新添加的选项?
谢谢
由于以下两个原因,今天删除特定菜单项有点棘手:
不同的查看器扩展程序可能会在 之前或 您的回调之后注册它们自己的菜单回调。
当查看器遍历所有要执行的菜单回调时,它只使用
for (const callbackId in viewer.contextMenuCallbacks) { ... }
(其中contextMenuCallbacks
是一个 JavaScript 对象),它意味着执行顺序是不确定的。
对于“显示属性”菜单项,该菜单项由名为 propertiesmanager
的上下文菜单回调添加,由名为 Autodesk.PropertiesManager
的内置查看器扩展添加。话虽如此,有几个选项可以删除菜单条目,例如:
- 使用
viewer.unregisterContextMenuCallback('propertiesmanager')
删除 - 尝试尽可能晚地注册您自己的菜单回调,以增加在
propertiesmanager
回调之后调用它的机会,因此它可以删除运行时“显示属性”;我能够通过在Autodesk.Viewing.GEOMETRY_LOADED_EVENT
之后注册我自己的菜单回调来实现这一点,但同样,我不能保证这将始终有效,因为对象键的枚举(在上面的第 2 点)是不确定的。 - 修改
Autodesk.PropertiesManager
扩展的行为,例如,修改其处理菜单回调的_onContextMenu
方法;虽然这很老套...
propertiesmanager
菜单回调