0

2 つのモデルをロードし、モデルがロードされた直後にいくつかのノードを非表示にしたいと考えています。

GEOMETRY_LOADED_EVENT と OBJECT_TREE_CREATED_EVENT にイベント リスナーを追加して、読み込みがいつ終了するかを確認します。読み込みは非同期で行われるため、モデルのいずれかを最後に読み込むことができます。

そこで、ノードをアクティブから非表示にするモデルを設定します。その後、非表示にしたいノードを非表示にします。

viewer.modelstructure.setModel(instanceTree);

これは時々機能しますが、常に機能するとは限りません。ロードが完了したことを知るためにリッスンする必要がある他のイベントはありますか? または、 setModel(instanceTree) が終了したことを確認する方法またはイベントはありますか?

4

1 に答える 1

1

イベントが発生するモデルを特定することについての質問ですか?

ビューアー API の最新バージョンでは、viewer.loadModelは、ロードされているモデル インスタンスを返すコールバックを受け取ります。これにより、他の 2 つのイベントが発生する前にモデルを知ることができます。

Viewer3D.prototype.loadModel = function(url, options, onSuccessCallback, onErrorCallback, onWorkerStart) {

 // ...

 function onSuccess(model) {
  self.model = model;
  self.impl.addModel(self.model);

  if (self.loadSpinner)
    self.loadSpinner.style.display = "None";

  if (self.model.is2d())
    self.activateLayerState("Initial");

  registerDimensionSpecificHotkeys();

  if (onSuccessCallback) {
    onSuccessCallback(self.model);
  }
 }

 // ...
}

また、イベント ハンドラーの引数には、イベントが発生するモデル インスタンスも含まれます。

this.viewer.addEventListener(
  Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT, (args) => {
    console.log(args)
  })

this.viewer.addEventListener(
  Autodesk.Viewing.GEOMETRY_LOADED_EVENT, (args) => {
    console.log(args)
  })

ここに画像の説明を入力

何か不足している場合はお知らせください。うまくいかない場合は、ワークフローを示すコードを提供してください。

ありがとう

于 2016-11-22T15:58:49.033 に答える