Autodesk forge Forge Viewer作为另一个查看器的扩展

Autodesk forge Forge Viewer作为另一个查看器的扩展,autodesk-forge,Autodesk Forge,我们在一个分区中有两个forge查看器。我们在同一时间初始化这些查看器并显示不同的模型。 是否可以将Autodesk Forge viewer初始化为另一个查看器的扩展,并在该查看器中显示不同的模型 没有官方的扩展来显示一个Forge查看器和另一个Forge查看器,但是实现这一功能是可能的。您可以重用查看器的其中一个UI组件(例如,本文中也对其进行了说明),并在其中托管第二个查看器 下面是这样一个扩展的样子: class MyExtension extends Autodesk.Viewing.

我们在一个分区中有两个forge查看器。我们在同一时间初始化这些查看器并显示不同的模型。
是否可以将Autodesk Forge viewer初始化为另一个查看器的扩展,并在该查看器中显示不同的模型

没有官方的扩展来显示一个Forge查看器和另一个Forge查看器,但是实现这一功能是可能的。您可以重用查看器的其中一个UI组件(例如,本文中也对其进行了说明),并在其中托管第二个查看器

下面是这样一个扩展的样子:

class MyExtension extends Autodesk.Viewing.Extension {
    constructor(viewer, options) {
        super(viewer, options);
        this._group = null;
        this._button = null;
        this._panel = null;
    }

    load() {
        return true;
    }

    unload() {
        return true;
    }

    onToolbarCreated() {
        this._group = new Autodesk.Viewing.UI.ControlGroup('allMyAwesomeExtensionsToolbar');
        this._button = new Autodesk.Viewing.UI.Button('MyExtensionButton');
        this._button.setToolTip('My Extension Button');
        this._group.addControl(this._button);
        this._panel = new MyPanel(this.viewer, this.viewer.container, 'MyPanel', 'My Panel Title');
        this._button.onClick = (ev) => {
            this._panel.setVisible(true);
        };
        this.viewer.toolbar.addControl(this._group);
    }
}

class MyPanel extends Autodesk.Viewing.UI.DockingPanel {
    constructor(viewer, container, id, title, options) {
        super(container, id, title, options);
        this.viewer = viewer;
        this.secondViewer = null;
        this.container.style.width = '640px';
        this.container.style.height = '480px';
        this.container.style.left = '1em';
        this.container.style.top = '1em';
    }

    setVisible(show) {
        super.setVisible(show);
        if (show && !this.secondViewer) {
            this.secondViewer = new Autodesk.Viewing.GuiViewer3D(this.container);
            this.secondViewer.start();
            Autodesk.Viewing.Document.load(
                'urn:<your model urn>',
                this.onDocumentLoadSuccess.bind(this),
                this.onDocumentLoadFailure.bind(this)
            );
        }
    }

    onDocumentLoadSuccess(doc) {
        const viewables = doc.getRoot().getDefaultGeometry();
        this.secondViewer.loadDocumentNode(doc, viewables);
    }

    onDocumentLoadFailure(viewerErrorCode) {
        console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode);
    }
}

Autodesk.Viewing.theExtensionManager.registerExtension('MyExtension', MyExtension);
MyExtension类扩展了Autodesk.Viewing.Extension{
构造函数(查看器、选项){
超级(查看器、选项);
该组为空;
此按钮为空;
此参数为.\u panel=null;
}
加载(){
返回true;
}
卸载(){
返回true;
}
onToolbarCreated(){
this._group=new Autodesk.Viewing.UI.ControlGroup(“allMyAwesomeExtensionsToolbar”);
此.u按钮=新建Autodesk.Viewing.UI.button('MyExtensionButton');
此.u按钮.setToolTip(“我的扩展按钮”);
此._组.addControl(此._按钮);
this.panel=newmypanel(this.viewer,this.viewer.container,'MyPanel','MyPanel Title');
此._button.onClick=(ev)=>{
此._panel.setVisible(真);
};
this.viewer.toolbar.addControl(this.\u组);
}
}
类MyPanel扩展了Autodesk.Viewing.UI.DockingPanel{
构造函数(查看器、容器、id、标题、选项){
超级(容器、id、标题、选项);
this.viewer=查看器;
this.secondViewer=null;
this.container.style.width='640px';
this.container.style.height='480px';
this.container.style.left='1em';
this.container.style.top='1em';
}
设置可见(显示){
super.setVisible(show);
if(显示&&!this.secondViewer){
this.secondViewer=new Autodesk.Viewing.GuiViewer3D(this.container);
this.secondViewer.start();
Autodesk.Viewing.Document.load(
“urn:”,
this.onDocumentLoadSuccess.bind(this),
this.onDocumentLoadFailure.bind(this)
);
}
}
onDocumentLoadSuccess(文档){
const viewables=doc.getRoot().getDefaultGeometry();
this.secondViewer.loadDocumentNode(文档,可查看文件);
}
onDocumentLoadFailure(视图错误代码){
错误('onDocumentLoadFailure()-errorCode:'+viewerErrorCode);
}
}
Autodesk.Viewing.theExtensionManager.registerExtension('MyExtension',MyExtension);

好的,谢谢。但这并不能解决我的问题。我有一些问题,如果你能回答的话,那就太好了。我相信我的回答确实解决了原来的问题。请随意编辑您的问题并添加更多详细信息,或向我们发送电子邮件至
forge(dot)help(at)autodesk(dot)com
,我们可以从那里开始。您是对的,事实上您的答案是我问题的解决方案,但我意识到这不是我问题的解决方案。我补充了另一个关于我的问题的问题。请看看他。