ODA SDKにおける共通データアクセスを使用する(パート1/2)

ODA共通データアクセスAPIは、ODA Visualizeのようなビューアアプリケーションによって、インポートされた(開かれた)データベースの構造情報とオブジェクトプロパティにアクセスするために使用されます。構造はツリーとして提供され、少なくともシートのノードは一意のIDを介してインポートされたグラフィックと接続されます。ツリー内の階層の特定のレベルはドメインに依存し、この認識された階層とデータベースコンテンツとの接続も同様です。目的は、ユーザーがデータベースファイル(図面やモデル)を簡素化された普遍的な形式で表示するための手段を提供することです。この情報の取得は、RxPropertiesメカニズム(非COMプロパティ)に基づいています。この機能はRxCommonDataAccess.txモジュールに実装されています。

 

Common Data Access in ODA Viewer

 

RxPropertiesレベルでの共通データアクセスツリーの要件

共通データアクセスAPIを使用して階層構造を作成するには、データベースは以下のプロパティと属性のセットを持っている必要があります。

  • 階層ツリーノードには、OdUInt64型の値を持つODAUniqueIDプロパティが必要です。ODAUniqueIDは、ツリーノードを視覚化ジオメトリにリンクするために使用されます。
  • 階層ツリーで必要とされるすべてのオブジェクトは、HierarchyLevel属性を持つプロパティを持つか、親オブジェクトのCollectionPropertyに含まれている必要があります。このプロパティには、子オブジェクト(またはCollectionPropertyの場合は複数のオブジェクト)への参照が含まれている必要があります。不要なオブジェクトやサービスオブジェクトは除外することをお勧めします。
  • オブジェクトがネストされたオブジェクトを持つ場合、プロパティはCollectionProperty型である必要があり、それぞれこれらのオブジェクトへの参照の配列を返します。
  • HierarchyLevel属性は、次の値に設定できます。
    • Entity — 階層ツリーのリーフ要素。
    • Block — ツリー内で複数回使用できる階層構造の要素のセット。
    • BlockReference — 「Block」タイプの階層要素への参照として機能する要素。
    • Model — 階層ツリー内で論理的に分離できる階層構造の要素のセット。
    • Database — 外部データベースへの参照を含む要素。
    • Hidden — 重要なプロパティを持たず、ビューアアプリケーションでツリーを表示する際に非表示にできるユーティリティ要素。
  • ほとんどの場合、オブジェクトのタイプをそのIDで決定するには、OdRxHierarchyLevelAttributeクラスを継承し、関数 virtual OdString value(OdRxValue& value); をオーバーライドする必要があります。
  • 階層ツリーの形成に関与するオブジェクトおよびプロパティキャッシュのDisplayAsAttributeが空の文字列を返さないことをお勧めします。

例:

データベースオブジェクトには、HierarchyLevel属性を持つCollectionProperty型のModelプロパティ(例)が含まれています。この属性の値はModelです。このプロパティには、オブジェクト(モデル)への参照のコレクションが含まれています。

各モデルオブジェクトには、HierarchyLevel属性を持つCollectionProperty型のEntityプロパティ(例)が含まれています。属性の値はEntityです。アイテムの正確なタイプを決定するには、OdRxHierarchyLevelAttributeクラスのオーバーロードされた関数 virtual OdString value(OdRxValue& value); が必要です。

この2部構成シリーズの次の記事では、Common Data Accessツリーから階層情報を取得する例を紹介します。

今すぐ始める

ODAソフトウェアを60日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す