Three.js Autodesk forge viewer api v7.*对齐多个二维dwg模型

Three.js Autodesk forge viewer api v7.*对齐多个二维dwg模型,three.js,autodesk-forge,dwg,Three.js,Autodesk Forge,Dwg,我正在项目中使用Autodesk Forge viewer v7.*。在这个项目中,我必须显示从上传到BIM360的.dwg文件中删除的多个二维模型。我可以在每个模型中加载,它们堆叠在一起,但它们的对齐方式似乎完全错误。我尝试了各种loadOptions,也尝试了对模型的整体转换进行后期调整,但它们的对齐仍然是随机的。以下是代码的一部分: onDocumentLoaded=(文档、id、解析、拒绝)=>{ //文档包含对三维和二维几何图形的引用。 让geometries=doc.getRoot(

我正在项目中使用Autodesk Forge viewer v7.*。在这个项目中,我必须显示从上传到BIM360的
.dwg
文件中删除的多个二维模型。我可以在每个模型中加载,它们堆叠在一起,但它们的对齐方式似乎完全错误。我尝试了各种
loadOptions
,也尝试了对模型的整体转换进行后期调整,但它们的对齐仍然是随机的。以下是代码的一部分:

onDocumentLoaded=(文档、id、解析、拒绝)=>{
//文档包含对三维和二维几何图形的引用。
让geometries=doc.getRoot().search({'type':'geometrics'})
if(geometrics.length==0){
console.error('文档不包含几何图形')
返回
}
//选择任意一个可导航的几何图形
设initGeom=几何体[0]
让ops={
placementTransform:new window.THREE.Matrix4(),
模型空间:对,
全局偏移:{x:0,y:0,z:0},
applyRefPoint:true,
isAEC:true,//要对齐模型,
}
//加载选定的几何图形
设svfUrl=doc.getViewablePath(initGeom)
this.viewerApp.loadModel(svfUrl,ops,(model)=>this.onModelLoaded(model,id,resolve,reject),(error)=>reject(error))
}
如您所见,我尝试了一些加载选项,但在加载二维模型时,它们似乎都无关紧要。它们确实会影响三维(.ifc、.rvt、.nwd)模型

我还尝试在加载模型后更新转换:

transformModel=(查看器、模型、转换)=>{
让translation=newwindow.THREE.Vector3();
让旋转=新窗口。三。四元数();
让scale=newwindow.THREE.Vector3();
变换。分解(平移、旋转、缩放);
函数转换FRAGPROXY(fragId){
var fragProxy=viewer.impl.getFragmentProxy(
模型
弗拉基德);
fragProxy.getAnimTransform();
fragProxy.position=平移;
fragProxy.scale=比例;
fragProxy.quaternion._x=旋转.x;
fragProxy.quaternion._y=旋转.y;
fragProxy.quaternion._z=旋转.z;
fragProxy.quaternion._w=旋转.w;
fragProxy.updateAnimTransform();
}
var fragCount=model.getFragmentList().fragments.fragId2dbId.length;
//fragIds的范围从0到fragCount-1
对于(变量fragId=0;fragId{
如果(!model.isLoadDone()){
//等待加载完成,即使调用onModelLoaded,二维模型也不会完全加载
setTimeout(this.onModelLoaded,0.1,model,id,resolve)
}否则{
//完成加载
//力变换
this.transformModel(this.viewerApp,model,new window.THREE.Matrix4());
this.viewerApp.impl.sceneu已更新(true);
//…这里是rest操作代码
}
}

如果所有其他操作都失败,请尝试使用
placementTransform
选项手动应用翻译:

const mat4 = new THREE.Matrix4()
mat4.makeTranslation(10,10,10)
//...
NOP_VIEWER.loadDocumentNode(document, geometry, {
   placementTransform: mat4, 
   keepCurrentModels: true
})

尝试加载模型-它应该对齐模型,但如果这不起作用,您能否将有问题的模型上载到GDrive/weTransfer/Dropbox等,并删除指向autodesk.com上forge.help的链接,以便我们可以尝试重现该问题?谢谢@BryanHuang
loadDocumentNode
是否可能从查看器中清除以前加载的模型?如果我第二次执行
loadDocumentNode
,则第一次加载的模型将从视图中清除。很抱歉,忘了提及您需要在模型加载选项中设置
{keepCurrentModels:true}
,以加载多个模型。