在同一查看器中加载多个URN

Car*_*nes 0 autodesk autodesk-viewer autodesk-forge

如何在查看器中加载多个URN或URN数组,以及如何使用第一个URN的GlobalOffest在同一查看器中加载第二个URN

Eas*_*ang 5

很简单,基本方案来自此官方博客的 loadModel函数。

Autodesk.Viewing.GEOMETRY_LOADED_EVENT根据我的经验,您可以在被解雇时加载第二个模型,并将第一个模型的GlobalOffest应用于第二个模型。这是这种情况的示例:

 function _onGeometryLoaded( event ) {
   if( urns.length <= 0 ) {
       viewer.removeEventListener(
         Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
         _onGeometryLoaded
       );
       return;
   }

   viewer.loadModel( urns[0], { globalOffset: event.model.getData().globalOffset } );
   urns.splice( 0, 1 );
 }

 viewer.addEventListener(
   Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
   _onGeometryLoaded
 );

 viewer.loadModel( urns[0] );
 urns.splice( 0, 1 );
Run Code Online (Sandbox Code Playgroud)

如果用于viewer.start()在查看器初始化中加载第一个模型,则这些代码将更改为:

 function _onGeometryLoaded( event ) {
   if( urns.length <= 0 ) {
       viewer.removeEventListener(
         Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
         _onGeometryLoaded
       );
       return;
   }

   viewer.loadModel( urns[0], { globalOffset: event.model.getData().globalOffset } );
   urns.splice( 0, 1 );
 }

 viewer.addEventListener(
   Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
   _onGeometryLoaded
 );

 // Change here
 viewer.start( urns[0], options, onSuccessCallback, onErrorCallback );
 urns.splice( 0, 1 );
Run Code Online (Sandbox Code Playgroud)