Tutorial: 如何实现二维图纸和三维模型的构件联动?

如何实现二维图纸和三维模型的构件联动?

  • 1、点击二维图纸的构件能定位三维模型对应的构件并高亮显示
  • 2、点击三维模型的构件能定位二维图纸对应的构件并高亮显示

下面代码是实现二三维联动的关键方法。

  • 第一步正常加载二维图纸、三维模型
  • 第二步点击二维图纸的构件ID能转换出对应的三维模型ID,传入到三维模型里进行定位和高亮
  • 第三步点击三维模型的构件ID能转换出对应的二维图纸ID,传入到二维图纸里进行定位和高亮
viewerDrawing.addEventListener(Glodon.Bimface.Viewer.ViewerDrawingEvent.ComponentsSelectionChanged,function(el){
     if(el.length > 0){
          //二维图纸的构件ID能转换出对应的三维模型ID
         var rid = viewerDrawing.toModelId(el[0]);
         //三维模型构件取消隔离                            
         viewer3D.clearIsolation();
         //隔离构件时,其他构件可设置成半透明    
         viewer3D.isolateComponentsById([rid], Glodon.Bimface.Viewer.IsolateOption.MakeOthersTranslucent);
         //选中构件,并缩放到改构件     
         viewer3D.setSelectedComponentsById([rid]);
         viewer3D.zoomToSelectedComponents();
}
})
Viewer3D.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked,function(el){
    //点击三维模型的构件ID能转换出对应的二维图纸ID
    var did = viewerDrawing.toDrawingId(el.objectId);
    if(did){
        //缩放到二维图纸构件
        viewerDrawing.zoomToObject(did);
}
})