Расширение Forge Viewer для панели инструментов: как добавить настраиваемое поле со списком

Я пытаюсь добавить настраиваемое поле со списком на панель инструментов в средстве просмотра кузницы. Ниже приведен его код. Я могу успешно добавлять кнопки, и они работают. Но поле со списком - нет. Он добавляет поле со списком, но показывает всплывающее меню, когда я нажимаю на него. Не уверен, что делаю не так. помощь!

function BuildingToolbarExtension(viewer, options) {
    Autodesk.Viewing.Extension.call(this, viewer, options);
}

BuildingToolbarExtension.prototype = Object.create(Autodesk.Viewing.Extension.prototype);
BuildingToolbarExtension.prototype.constructor = BuildingToolbarExtension;

BuildingToolbarExtension.prototype.load = function () {
    // Set background environment to "Infinity Pool"
    // and make sure the environment background texture is visible
    this.viewer.setLightPreset(6);
    this.viewer.setEnvMapBackground(true);

    // Ensure the model is centered
    //this.viewer.fitToView();

    return true;
};

BuildingToolbarExtension.prototype.unload = function () {
    // nothing yet
    if (this.subToolbar) {
        this.viewer.toolbar.removeControl(this.subToolbar);
        this.subToolbar = null;
    }
};

BuildingToolbarExtension.prototype.onToolbarCreated = function (toolbar) {
    alert('TODO: customize Viewer toolbar');
    var viewer = this.viewer;

    // Button 1
    var button1 = new Autodesk.Viewing.UI.Button('show-env-bg-button');
    button1.onClick = function (e) {
        viewer.setEnvMapBackground(true);
    };
    button1.addClass('show-env-bg-button');
    button1.setToolTip('Show Environment');

    // Button 2
    var button2 = new Autodesk.Viewing.UI.Button('hide-env-bg-button');
    button2.onClick = function (e) {
        viewer.setEnvMapBackground(false);
    };
    button2.addClass('hide-env-bg-button');
    button2.setToolTip('Hide Environment');

    var comboButton = new Autodesk.Viewing.UI.ComboButton('buildings');
    comboButton.setToolTip('buildings');
    this.floors = new Autodesk.Viewing.UI.ControlGroup('my-custom-toolbar1');
    this.floors.addControl(button1);
    this.floors.addControl(button2);
    comboButton.addControl(this.floors);
    comboButton._isCollapsed = true;
    comboButton.onClick = function (e) {

        this.setCollapsed(false);
    }
    
    
    // SubToolbar
    this.subToolbar = new Autodesk.Viewing.UI.ControlGroup('my-custom-toolbar');
    this.subToolbar.addControl(button1);
    this.subToolbar.addControl(button2);
    this.subToolbar.addControl(comboButton);
    toolbar.addControl(this.subToolbar);
};

Autodesk.Viewing.theExtensionManager.registerExtension('BuildingToolbarExtension', BuildingToolbarExtension);

введите описание изображения здесь


person InsaneKarma    schedule 17.07.2020    source источник


Ответы (1)


ControlGroup не нужен в вашем случае, пожалуйста, обратитесь к следующему, чтобы добавить кнопки в ComboButton

var comboButton = new Autodesk.Viewing.UI.ComboButton('buildings');
comboButton.setToolTip('buildings');

// Button 1
var button1 = new Autodesk.Viewing.UI.Button('show-env-bg-button');
button1.onClick = function (e) {
    viewer.setEnvMapBackground(true);
};
button1.addClass('show-env-bg-button');
button1.setToolTip('Show Environment');
comboButton.addControl(button1);

// Button 2
var button2 = new Autodesk.Viewing.UI.Button('hide-env-bg-button');
button2.onClick = function (e) {
    viewer.setEnvMapBackground(false);
};
button2.addClass('hide-env-bg-button');
button2.setToolTip('Hide Environment');
comboButton.addControl(button2);

Вот снимки:

  • Перед открытием  введите описание изображения здесь

  • После открытия  введите описание изображения здесь

person Eason Kang    schedule 20.07.2020
comment
Спасибо, что сработало! Вы знаете, могу ли я добавить тест к этим кнопкам в раскрывающемся списке? - person InsaneKarma; 20.07.2020
comment
Могу я узнать, какой тест вы хотите добавить? Вы можете добавить действие нажатия кнопки, присвоив функцию Button. onClick - person Eason Kang; 21.07.2020