これは、BimRv SDKで共通データアクセス(CDA)を使用する方法に関するシリーズの2番目の記事です。最初の記事については、こちらをクリックしてください。
ODA共通データアクセス(CDA)は、すべてのODAサポート形式でモデル構造とプロパティ情報に共通の方法でアクセスするためのプラットフォームに依存しないフレームワークです。例として、この2部構成のシリーズでは、BimRv SDKでのCDAの使用に焦点を当てています。
データベース階層とプロパティキャッシュの例
データベース要素のプロパティキャッシュ全体と階層ツリー内の構造情報を取得するには、RxCommonDataAccessModuleライブラリを使用します。次の例は、オブジェクトプロパティキャッシュを使用してデータベース階層ツリーを取得する方法を示しています。
#include "RxModelHierarchyTreeBase.h"
::odrxDynamicLinker()->loadModule(RxCommonDataAccessModuleName);
OdRxModelHierarchyTreeBasePtr pTreeBase = OdRxModelHierarchyTreeBase::createObject();
pTreeBase->createDatabaseHierarchyTree(m_pDatabase, true);
データベースの構造ツリーをナビゲートするには、ノードメソッド OdRxModelTreeBaseNode::getChildren() および OdRxModelTreeBaseNode::getParents() を使用します。
#include "RxModelTreeBaseNode.h"
OdRxModelTreeBaseNodePtr pDBNode = pTreeBase->getDatabaseNode();
// getting db childes
OdRxModelTreeBaseNodePtrArray pChildes = pDBNode->getChildren();
OdRxModelTreeBaseNodePtr pSomeNode = pChildes.at(0);
OdRxModelTreeBaseNodePtrArray pParents = pSomeNode->getParents();
ノードに関する情報を取得するには、以下を使用します。
- ノード名を取得するには OdRxModelTreeBaseNode::getNodeName() を使用します。
- ODAUniqueID オブジェクトのプロパティ値を取得するには OdRxModelTreeBaseNode::getUniqueSourceID() を使用します。このプロパティはIDを返します。現在、このハンドルは、選択目的などでツリーノードをジオメトリにリンクします。
- ノードタイプを取得するには OdRxModelTreeBaseNode::getNodeType() を使用します。タイプ識別子は、構造的な観点から見たそのノードの「階層レベル」です。階層ツリー内のオブジェクトをデータベース、ブロック、モデル、ブロック参照、または単一のエンティティとして記述できます。
- PropertyInfo 構造体配列内のノードのキャッシュされたプロパティを取得するには OdRxModelTreeBaseNode::getProperties() を使用します。
// node methods example
OdString strNodeName = pSomeNode->getNodeName();
OdUInt64 uId = pSomeNode->getUniqueSourceID();
HierarchyTreeObjectType nodeType = pSomeNode->getNodeType();
OdArraypropInfo = pSomeNode->getProperties();
CDA階層ツリーシステムに関する詳細については、以下のヘッダーファイルを参照してください。
- Kernel\Include\RxModelHierarchyTreeBase.h
- Kernel\Include\RxModelTreeBaseNode.h
BmElements プロパティ表現
TB_CDAPropertiesモジュールは、CustomerとBuiltInの2つのBmElementsパラメータ表現テンプレートをサポートしています。BuiltInプロパティ表現テンプレートはデフォルトでオフになっています。これをオンにするには、次のプリプロセッサ定義を追加します: BUILTINPROPENABLE。
アプリケーション例 (ODA Viewer)
次の例は、ODA Viewerアプリケーションでモジュールを使用する方法を示しています。左側のオブジェクトエクスプローラーは、RxCommonDataAccessModuleとTB_CDAPropertiesを使用して形成されたデータベースの構造を表しています。右側のプロパティパネルには、BuiltInおよびデフォルトのCustomerテンプレートでの単一のWindow BmElementプロパティ表現が表示されます。