首页 > 解决方案 > 如何为每个模型制作一个单独的窗口?

问题描述

我希望将我的模型加载到两个单独的显示区域,但我怀疑我选择的路径的正确性。我认为我需要为每个模型创建自己的单独“viewerDiv”,并​​使用“new Autodesk.Viewing.Private.GuiViewer3D (viewerDiv, {});”方法将其加载到那里。还有另一种方法可以实现这一目标吗?但是,在实现这个想法时,我费了很大的劲,到目前为止还没有结果,因为我无法更改必要块的研磨,因为它位于viewer3D.min.js的文件中。我尝试下载此文件并在本地更改所需的属性,但结果证明此文件与我还需要下载的其他文件一起使用。不幸的是,我无法下载这些文件。

标签: autodesk-viewer

解决方案


不要下载 Viewer 库或修改其代码,因为这违反了用户许可,并且在技术上难以将库及其所有动态依赖项和资源全部本地化 - 始终在其 CDN 地址引用库。

查看此实时示例以了解多个共同居住的 Viewer 实例 - 只需将您的 Viewer 实例分别初始化为其相应的容器,并通过其类名调整画布的大小adsk-viewing-viewer

<style>
.adsk-viewing-viewer{width:50%!important}
</style>
<script>
var viewer1 = new Autodesk.Viewing.Private.GuiViewer3D(viewerDiv1);
var viewer2 = new Autodesk.Viewing.Private.GuiViewer3D(viewerDiv2);
...
</script>

或者,自从 Viewer 6+ 以来,该库提供了一个内置的分屏扩展,使用多个模型的子画布:

var options = {  viewports: [
            modelId => modelId == 1,
            modelId => modelId == 2, 
            modelId => modelId == 3,  
            modelId => modelId == 4]
     };
viewer.start();
viewer.loadExtension('Autodesk.SplitScreen', options).then(()=>{
    viewer.loadModel(svf1);
    viewer.loadModel(svf2);
    ...
})

推荐阅读