Autodesk forge js 查看器加载多个窗口位置不正确

问题描述 投票:0回答:1

我们正在尝试加载两个模型。这两个模型是从一个大模型中拆分出来的。
但是,我们无法使用 autodesk js 查看器正确恢复它们的位置,但 autodesk acc 模型协调可以。

urns.map((m)=>{
      Autodesk.Viewing.Document.load(`urn:${m.urn}`, (doc) => {
        let viewables = doc.getRoot().getDefaultGeometry();
        let viewerConf = {
          keepCurrentModels: true,
        }

        this.viewer.loadDocumentNode(doc, viewables, viewerConf).then(() => console.log('multiple model loaded'));
      })
    })

谁能提供有用的信息吗?
Autodesk Acc 模型协调
我们的尝试

我们尝试了文档中的方法(上面),但没有成功

autodesk-forge autodesk-viewer autodesk autodesk-bim360
1个回答
0
投票

您可以参考此博客 - https://aps.autodesk.com/blog/loading-multiple-models-forge-viewer-v7

代码笔设置 - https://codepen.io/autodesk-platform-services/pen/bGQQEdV

import { initViewer } from "https://aps-codepen.autodesk.io/utils.js";

function addViewable(viewer, urn, xform, offset) {
  return new Promise(function (resolve, reject) {
    function onDocumentLoadSuccess(doc) {
      const viewable = doc.getRoot().getDefaultGeometry();
      const options = {
        //  preserveView: true,
        keepCurrentModels: true
      };
      if (xform) {
        options.placementTransform = xform;
      }
      if (offset) {
        options.globalOffset = offset;
      }
      viewer
        .loadDocumentNode(doc, viewable, options)
        .then(resolve)
        .catch(reject);
    }
    function onDocumentLoadFailure(code) {
      reject(`Could not load document (${code}).`);
    }
    Autodesk.Viewing.Document.load(
      "urn:" + urn,
      onDocumentLoadSuccess,
      onDocumentLoadFailure
    );
  });
}

const viewer = await initViewer(document.getElementById("viewer"), {
  extensions: ["Autodesk.DocumentBrowser"]
});

await addViewable(
  viewer,
  "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YXBzLWNvZGVwZW4tYmFja2VuZC8wMV9yYWNfYmFzaWNfc2FtcGxlX3Byb2plY3QucnZ0"
);

await addViewable(
  viewer,      
  //"dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YXBzLWNvZGVwZW4tYmFja2VuZC8wMl9qZXRfZW5naW5lX21vZGVsLnppcA",
  "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YXBzLWNvZGVwZW4tYmFja2VuZC8wNV9zcGFjZXNoaXAuZjNk",
  new THREE.Matrix4().makeRotationX(0.5 * Math.PI).scale(new THREE.Vector3(2.5, 2.5, 2.5))
);
© www.soinside.com 2019 - 2024. All rights reserved.