Я ищу способ отобразить кнопки расширения сборки forge-viewer на другой панели инструментов.
Например. Autodesk.DocumentBrowser
или Autodesk.LayerManager
.
Я нашел способ добавить кнопку управления на настраиваемую панель инструментов, запросив идентификатор управления в событии Autodesk.Viewing.UI.ControlGroup.Event.CONTROL_ADDED
, удалив элемент управления с исходной панели инструментов и добавив его в anthoer.
Но когда я это делаю, некоторые функции с кнопки управления больше не доступны.
Например. когда я загружаю Autodesk.DocumentBrowser
на другую панель инструментов, я могу использовать ее как обычно. Но после переключения просматриваемых объектов кнопка управления остается активированной навсегда. Панель переключается после нажатия кнопки, но кнопка остается активной.
Я также пытался передать параметры этому методу, но это ни на что не влияет:
viewer.loadExtension("Autodesk.DocumentBrowser",{parentControl:"custom-toolbar"})
Есть ли лучший способ добиться этого? Есть идеи?
К сожалению, встроенные расширения средства просмотра не предоставляют какой-либо конфигурации относительно того, на какую панель инструментов следует добавлять их кнопки. Более того, расширения часто ссылаются на основную панель инструментов (this.viewer.toolbar
) в своем коде, поэтому, даже если вы вручную переместите их кнопки на другую панель инструментов, вы, скорее всего, начнете сталкиваться со всевозможными странными действиями.
Я считаю, что самым безопасным подходом было бы полностью создать новые кнопки панели инструментов и попытаться повторно использовать как можно больше функций расширения. Например, в случае расширения Autodesk.DocumentBrowser
вы можете попробовать создать подкласс класса DocumentBrowser
и переопределить объект UiController
, который он использует внутри, чтобы добавить пользовательский интерфейс панели инструментов. Конечно, это потребует больше или меньше усилий в зависимости от того, как реализовано расширение.