2016-08-17 3 views
0

뷰어에 시간당 2 번만로드하려는 여러 모델 (최대 20 개 모델)이 있습니다. 새로운 모델을로드하기 전에 뷰어를 지우거나로드 된 모델을 제거 할 수있는 방법이 있습니까?불필요한 모델 제거

현재 모든 모델을 먼저 숨 깁니다.

function hideAllModels() { 
    for (var i = 0; i < loadedModels.length; i++) { 
    var instanceTree = loadedModels[i].getData().instanceTree; 
    var rootId = instanceTree.getRootId(); 
    var vm = new Autodesk.Viewing.Private.VisibilityManager(viewer.impl, loadedModels[i]); 
    vm.hide(rootId); 
    vm.setNodeOff(rootId, true); 
    } 
} 

그런 다음 원하는 항목을 표시하십시오.

var vm = new Autodesk.Viewing.Private.VisibilityManager(viewer.impl, viewer.model); 
vm.setNodeOff(rootId, false); 
vm.show(rootId); 

이 숨기기 및 표시는 여러 모델에서 매우 느립니다. 또한 개별 객체에 대해로드 된 모델을 검색하는 것은 매우 느립니다. 두 모델을로드/표시하기 전에 전체 뷰어를 항상 initiliaze하는 유일한 방법입니까? getState() 및 restoreState()를 사용하여 시도했지만보기 만 저장합니다. 뷰어에서 모델을 지우지 않습니다. 이 aggregate sample

답변

1

this github (direct link)의 소스 코드를 찾을 수 있습니다,이 기능을 구현하지만 나는 아래에 복사 해요 :

deleteModel (model, fireEvent = true) { 
delete this.modelCollection[model.modelId] 
if(Object.keys(this.modelCollection).length === 0){ 
    this.firstModelLoaded = null 
} 
if(fireEvent) { 
    this.emit('model.delete', model) 
} 
this._viewer.impl.unloadModel(model) 
} 
관련 문제