1

すべての dbId 要素のプロパティを取得したいと考えています。この目的のために、dbIds の配列を単純にループし、 Forge ViewergetPropertiesによって提供される関数を使用します。

  someFunction() {

    const instanceTree = this.viewer.model.getData().instanceTree;

    const allDbIds = Object.keys(instanceTree.nodeAccess.dbIdToIndex);

    console.log('all DbIds');
    console.log(allDbIds);

    // This will give the correct Properties
    // this.viewer.getProperties(5, (result) => {
    //   console.log(result)
    // })

    allDbIds.forEach((dbId) => {

      this.viewer.getProperties(dbId, (result) => {
        console.log('result:');
        console.log(result);

      }, (err) => {
        console.log('err');
        console.log(err);
      });
    });
  }

特定の dbId に直接アクセスすると、正しいプロパティ配列が取得されます。ただし、すべての dbId をループしてgetProperties関数を呼び出すと、最初の 2 つの dbId のみがプロパティを返し、他のすべての dbId は空の配列のみを返します。さらに、最初の 2 つの配列は大きすぎて、他のプロパティが含まれているようです。-->コンソール出力へのリンク

誰かが私がここで間違っていることを知っていますか? もうありがとう!

4

1 に答える 1

0

クライアント ページでプロパティを反復処理する代わりに、Model Derivative API を使用してすべてのプロパティを一度にクエリする方がよい場合があります。次の参考文献を参照してください。

https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-GET/

https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-guid-properties-GET/

于 2016-12-14T19:22:04.103 に答える