Autodesk forge 不支持文件扩展名:null错误代码:13。加载多个模型时
我正在尝试将2个模型加载到Autodesk的Forge Viewer中 我正在使用以下代码进行尝试:Autodesk forge 不支持文件扩展名:null错误代码:13。加载多个模型时,autodesk-forge,Autodesk Forge,我正在尝试将2个模型加载到Autodesk的Forge Viewer中 我正在使用以下代码进行尝试: const urn1 = <urn> const urn2 = <urn> Autodesk.Viewing.Initializer( options, () => { const viewerDiv = document.getElementById('MyViewerDiv');
const urn1 = <urn>
const urn2 = <urn>
Autodesk.Viewing.Initializer(
options,
() => {
const viewerDiv = document.getElementById('MyViewerDiv');
viewer = new Autodesk.Viewing.Private.GuiViewer3D(viewerDiv);
this.loadDoc(this.props.urns[1], true);
window.setTimeout(e => {
this.loadDoc(this.props.urns[2], false);
}, 4000);
},
);
loadDoc(urn: string, initializeAndLoad: boolean) {
Autodesk.Viewing.Document.load(urn,
(doc) => {
const viewables = Autodesk.Viewing.Document
.getSubItemsWithProperties(doc.getRootItem(), {'type': 'geometry'}, true);
if (viewables.length === 0) {
return;
}
const initialViewable = viewables[0];
const svfUrl = doc.getViewablePath(initialViewable);
const modelOptions = {
globalOffset: {x: 0, y: 0, z: 0}, // to align the models
sharedPropertyDbPath: doc.getPropertyDbPath(),
};
if (initializeAndLoad) {
viewer.start(svfUrl, modelOptions,
() => {},
() => {console.log('load model error');},
);
} else {
viewer.loadModel(urn, modelOptions,
() => {},
(e) => {
console.warn(e);
});
}
},
() => {}
);
}
const urn1=
常数urn2=
Autodesk.Viewing.Initializer(
选项,
() => {
const viewerDiv=document.getElementById('MyViewerDiv');
查看器=新的Autodesk.Viewing.Private.GuiViewer3D(viewerDiv);
this.loadDoc(this.props.urns[1],true);
设置超时(e=>{
this.loadDoc(this.props.urns[2],false);
}, 4000);
},
);
loadDoc(urn:string,initializeAndLoad:boolean){
Autodesk.Viewing.Document.load(urn,
(doc)=>{
const viewables=Autodesk.Viewing.Document
.getSubItemsWithProperties(doc.getRootItem(),{'type':'geometry'},true);
如果(viewables.length==0){
返回;
}
const initialViewable=viewables[0];
const svfUrl=doc.getViewablePath(initialViewable);
常量模型选项={
globalOffset:{x:0,y:0,z:0},//用于对齐模型
sharedPropertyDbPath:doc.getPropertyDbPath(),
};
如果(初始化加载){
viewer.start(svfUrl、modelOptions、,
() => {},
()=>{console.log('load model error');},
);
}否则{
viewer.loadModel(urn、modelpoptions、,
() => {},
(e) =>{
控制台。警告(e);
});
}
},
() => {}
);
}
超时的基本原理是在加载第一个模型后,使用loadModel
加载第二个模型。我还尝试从查看器.start
的onSuccess
回调加载第二个模型
无论如何,我都会收到文件扩展名不受支持:null ErrorCode:13。
错误消息(在控制台和弹出窗口中)
我很确定这条消息是误导性的,因为两个URN都有有效的SVF派生(我可以在它们之间切换,无论哪一个先加载,都显示得很好)
注意:我使用的是以下版本:
''
作为补充说明,我已尝试使用Autodesk.Viewing.ViewingApplication和selectItem
。使用这种方法,我可以加载多个模型,但我似乎无法用这种方法设置模型选项(特别是全局偏移量)。该方法需要一个带有一些已知文件扩展名(例如.svf
)的URL,但您使用URN(翻译文档的base64编码标识符)调用它。这就是它找不到文件扩展名的原因
< Btw. >如果你想在第一个模型被完全加载后延迟加载第二个模型,考虑使用而不是超时。