与 ACC Forge Viewer 相比,在 Forge Viewer 中获取不同的对象 ID

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

我正在开发一个 React 应用程序,它启动 Forge Viewer(版本 7.*)以查看存储在 ACC 上的模型。我的任务是使用模型衍生元数据 API 从模型中检索对象 ID,从而在查看器中显示特定材料。

我正在元数据属性中搜索特定关键字,如果找到,则存储对象 ID 以在查看器中隔离对象。但是,与 ACC 网站上使用的 Forge Viewer 相比,我在过滤元数据属性后检索到的对象 ID 将我的 React 项目中使用的 Forge Viewer 中的不同对象隔离开来。

此外,当我在 ACC Forge 查看器页面上执行 NOP_VIEWER.search 时,它会打印元数据中存在的对象 ID。但是,在我的项目中,它会打印元数据中不存在的不同对象 ID。造成这种差异的可能原因是什么?此外,在我的 React 项目中,NOP_VIEWER 在控制台中不起作用,我需要将查看器实例保存在 window 对象中以便从控制台访问它。

/* global Autodesk */
import { getForgeAccessToken } from '@apis/services';

async function getAccessToken(callback) {
  try {
    const { data } = await getForgeAccessToken();
    callback(data.access_token, data.expires_in);
  } catch (e) {
    console.error(e);
  }
}

export function initViewer(container, extensions) {
  return new Promise(function (resolve, reject) {
    Autodesk.Viewing.Initializer({ getAccessToken }, function () {
      const viewer = new Autodesk.Viewing.GuiViewer3D(container, { extensions });
      viewer.start();
      resolve(viewer);
    });
  });
}

export function loadModel(viewer, urn, guid) {
  guid = undefined;
  return new Promise(function (resolve, reject) {
    function onDocumentLoadSuccess(doc) {
      const viewable = guid ? doc.getRoot().findByGuid(guid) : doc.getRoot().getDefaultGeometry();
      resolve(viewer.loadDocumentNode(doc, viewable));
    }
    function onDocumentLoadFailure(code, message, errors) {
      reject({ code, message, errors });
    }
    Autodesk.Viewing.Document.load('urn:' + urn, onDocumentLoadSuccess, onDocumentLoadFailure);
  });
}

autodesk-forge autodesk-viewer autodesk revit-api autodesk-model-derivative
© www.soinside.com 2019 - 2024. All rights reserved.