【问题标题】:How to make for each model a separate window?如何为每个模型制作一个单独的窗口?
【发布时间】:2019-09-15 14:14:14
【问题描述】:

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

【问题讨论】:

    标签: autodesk-viewer


    【解决方案1】:

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

    请参阅this live sample 了解多个共存的 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+ 开始,该库提供了一个内置的 Split Screen extension,使用多个模型的子画布:

    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);
        ...
    })
    

    【讨论】:

    • 非常感谢您的建议。我查看了第一个示例,注意到当您更改第一个窗口中的位置时,第二个窗口中的位置也会更改。我需要第一个窗口中的更改不影响第二个窗口。如果你告诉我这是怎么可能的,我会很高兴(如果一般来说这是可能的)。
    • 将容器 ID 组合到您的选择器中以单独指定样式,例如 #myContainerID .adsk-viewing-viewer。请咨询对前端开发有更多了解的朋友/同事,以帮助您了解基础知识。
    • 也许你的意思是it?在这种情况下,第一个块中的移动会改变第二个块中的位置,我不需要。
    • 不是它不会改变第二个 - 请参阅here。由于这超出了 Viewer 库本身的范围,您能否像我之前建议的那样咨询对前端开发有更多了解的朋友/同事?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多