并行加载3D格式DXF模型报错及支持性咨询
DXF 3D模型并行加载问题
使用loadDocumentNode并行加载多份3D格式DXF文件时会抛出错误,报错相关代码如下:
const viewable3d = viewerDocument.getRoot().search({ type: "geometry", role: "3d" })
当前存在以下现象:
- 使用
viewerDocument.getRoot().getDefaultGeometry()可正常加载,但仅能加载2D模型; - 逐一加载3D模型无报错,但加载速度较慢且会触发重渲染。
请问:
- DXF是否支持并行加载3D模型?
- 如何实现3D格式DXF文件的并行加载?
附完整代码实现:
export function initViewer( container: any, getAccessTokenFn: (callback: (accessToken: string, expires: number) => void) => void ) { return new Promise(function (resolve, reject) { Autodesk.Viewing.Initializer( { env: "AutodeskProduction2", api: "streamingV2", getAccessToken: getAccessTokenFn, }, function () { const config = { extensions: ["Autodesk.DocumentBrowser"], }; const viewer = new Autodesk.Viewing.GuiViewer3D(container, config); viewer.start(); resolve(viewer); } ); }); } function loadModel(viewer:any, urn:string) { return new Promise(function (resolve, reject) { function onDocumentLoadSuccess(viewerDocument: any) { // const viewable3d = viewerDocument.getRoot().search({ type: "geometry", role: "3d" })[0]; // Loading 3D models will throw error const viewable3d = viewerDocument.getRoot().getDefaultGeometry(); // Successfully load 2D models const options: any = { keepCurrentModels: true, preserveView: false, globalOffset: { x: 0, y: 0, z: 0 }, }; viewer .loadDocumentNode(viewerDocument, viewable3d, options) .then((model: any) => { resolve(model); }) .catch(reject); } function onDocumentLoadFailure(code: any) { reject(`Could not load document (${code}).`); } Autodesk.Viewing.Document.load("urn:" + urn, onDocumentLoadSuccess, onDocumentLoadFailure); }); } export function loadDXFModels(viewer:any, urns: string[]) { return new Promise(function (resolve, reject) { const promises = urns.map(urn => loadModel(viewer, urn)); Promise.allSettled(promises) .then(models => { resolve(models); }) .catch(reject); }); }
内容的提问来源于stack exchange,提问作者Jiqi Li
相关产品推荐
相关产品推荐

