在 Forge Viewer 裏有兩個監聽選擇集變動的事件能夠在鼠標選中或未選中構件時與 Viewer 交互,一個是單模型模式下使用的 Autodesk.Viewing.SELECTION_CHANGED_EVENT
,另外一個則是多模型模式下使用的 Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT
,這兩個事件都是 Viewer
的鼠標交互事件,二者雖都是在鼠標點擊時會被觸發,但二者的回調函數(Callback Function)接受的參數很不同,如下以代碼的方式來講明二者的不一樣:node
1、 二者相同的部份 - 事件監聽數組
// 單模型的選擇集變動事件的監聽方式 viewer.addEventListener( Autodesk.Viewing.SELECTION_CHANGED_EVENT, //!<<<< 事件名稱 function( event ) { //!<<<< 回調函數(匿名函數) console.log( event ); }); // 多模型的選擇集變動事件的監聽方式 viewer.addEventListener( Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT, //!<<<< 事件名稱 function( event ) { //!<<<< 回調函數(匿名函數) console.log( event ); });
2、二者不一樣的部份 - 回調函數接收的參數結構函數
// 單模型的選擇集變動事件回調函數接收到的參數結構,也就是上面 event 變量是一個物件(Object)長像這個樣子: var event = { fragIdsArray //!<<<< 已選中構件的 mesh id dbIdArray //!<<<< 已選中構件的 dbId nodeArray //!<<<< 已選中構件的 dbId model //!<<<< 當前選中構件所屬的 RenderModel }; // 多模型的選擇集變動事件回調函數接收到的參數結構是上面單模型狀況的 Object 數組: var event = [ { fragIdsArray1, //!<<<< 在第一個 model 裏已選中構件的 mesh id dbIdArray1, //!<<<< 在第一個 model 裏已選中構件的 dbId nodeArray1, //!<<<< 在第一個 model 裏已選中構件的 dbId model1, //!<<<< 已選中的第一個 model }, { fragIdsArray2, //!<<<< 在第二個 model 裏已選中構件的 mesh id dbIdArray2, //!<<<< 在第二個 model 裏已選中構件的 dbId nodeArray2, //!<<<< 在第二個 model 裏已選中構件的 dbId model2, //!<<<< 已選中的第二個 model }, . . . . . ];