[返回博客](/cn/blog) # BimRv SDK：创建元素组

Yury Lebedev 六月 09, 2023 [\#rfa](/cn/blog/tag/rfa) [\#rvt](/cn/blog/tag/rvt)

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

您可以使用 newGroup() 方法创建元素组。

创建 OdBmElementGroup 实例后，在将 ElementGroup 添加到数据库之前启动一个事务。只有在 ElementGroup 位于数据库中之后，才应调用 newGroup() 方法。下面是一个示例实现：

```
OdBmElementGroupPtr pElementGroup = OdBmElementGroup::createObject();
ODBM_TRANSACTION_START(t, pDb)
  pDb->addElement(pElementGroup);
  pElementGroup->newGroup(arrElementIds, L"Group 1");
ODBM_TRANSACTION_COMMIT();

```

传入的成员不应属于任何其他元素组或装配体。此外，未来的组名不应在现有的 OdBmElementGroup 实例中使用。

创建的 ElementGroup 取决于传入的元素列表：

- 对于常规的与视图无关的元素，将创建模型组（属于 OST\_IOSModelGroups 类别）。
- 如果没有常规元素，但至少有一个视图特定但非注释元素（例如 FilledRegion），则会创建一个详细信息组（属于 OST\_IOSDetailGroups 类别）；其他注释元素也会添加到此组中。
- 如果还存在可以与之关联的注释元素，则除了模型组之外，还会创建一个附加组（属于 OST\_IOSAttachedDetailGroups 类别）。
- 如果传入的元素列表仅包含注释，则组创建将因 eEmptySet 错误而失败。

模型组和详细信息组成员可以根据初始元素列表进行扩展，添加其他元素。例如，详细信息组可以根据视图扩展 Sketch 和 SketchPlane 元素，FilledRegion 可以拥有默认不可见的依赖尺寸和曲线元素，等等。

此外，在创建元素组时，还会向数据库添加几个新元素：

- 如果存在注释，则为注释附加 ElementGroup 实例。
- 为每个 ElementGroup 创建 ElementGroupType 实例。
- 每个成员元素和 ElementGroup 实例的隐藏克隆，用于组织所谓的“定义”组。

上述“定义”组表示初始 ElementGroup 状态的快照，以防将来通过新增或排除成员对其进行更改。这些“定义”组可通过 getDefiningGroupInstId() 方法访问。“定义”组及其成员元素标有非空的 UnplacedOwnerId 标头字段。isUnplaced() 方法对其元素标头返回 true。所有此类元素都应从任何元素处理例程中排除，因为它们仅供内部使用。

## 今天就开始行动

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

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