我正在开发一个 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);
});
}