[返回博客](/cn/blog) # 将通用数据访问与 BimRv SDK 结合使用（第 2 部分，共 2 部分）

Ilya Kovaldov 十二月 12, 2019 [\#rfa](/cn/blog/tag/rfa) [\#rvt](/cn/blog/tag/rvt) [\#CDA](/cn/blog/tag/cda)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

这是关于将通用数据访问 (CDA) 与 BimRv SDK 结合使用系列文章中的第二篇。要阅读第一篇文章，[请点击此处](https://www.opendesign.com/blog/2019/november/using-common-data-access-bimrv-sdk-part-1-2)。

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();
OdArray<propertyinfo>propInfo =  pSomeNode->getProperties();</propertyinfo>
```

有关 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 属性的表示。

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
