这是关于将通用数据访问 (CDA) 与 BimRv SDK 结合使用系列文章中的第二篇。要阅读第一篇文章,请点击此处。
ODA 通用数据访问 (CDA) 是一个平台中立的框架,用于以通用方式访问所有 ODA 支持格式的模型结构和属性信息。例如,这个由两部分组成的系列文章重点介绍如何将 CDA 与 BimRv SDK 结合使用。
数据库层次结构和属性缓存示例
要获取整个数据库元素属性缓存和层次结构树中的结构信息,请使用 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() 获取节点名称。
- OdRxModelTreeBaseNode::getUniqueSourceID() 获取 ODAUniqueID 对象的属性值。此属性返回一个 ID。目前,此句柄将树节点链接到几何体,例如用于选择目的。
- OdRxModelTreeBaseNode::getNodeType() 获取节点类型。类型标识符是该节点从结构角度来看的“层次级别”。它可以将对象描述为层次结构树中的数据库、块、模型、块引用或单个实体。
- OdRxModelTreeBaseNode::getProperties() 获取 PropertyInfo 结构数组中节点的缓存属性。
// 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 模块支持两种 BmElements 参数表示模板:Customer 和 BuiltIn。BuiltIn 属性表示模板默认是关闭的。要将其打开,请添加下一个预处理器定义:BUILTINPROPENABLE。
应用示例 (ODA Viewer)
以下示例演示了如何在 ODA Viewer 应用程序中使用该模块。左侧的对象浏览器表示使用 RxCommonDataAccessModule 和 TB_CDAProperties 形成的数据库结构。右侧的属性面板显示了 BuiltIn 和默认 Customer 模板中单个 Window BmElement 属性的表示。