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カテゴリ)は、通常のビューに依存しない要素のために作成されます。
- 詳細グループ(OST_IOSDetailGroupsカテゴリ)は、通常の要素がなく、FilledRegionのようなビュー固有だが注釈ではない要素が少なくとも1つある場合に作成されます。他の注釈要素もこのグループに追加されます。
- アタッチされたグループ(OST_IOSAttachedDetailGroupsカテゴリ)は、関連付け可能な注釈要素も存在する場合に、モデルグループに加えて作成されます。
- 渡された要素リストに注釈のみが含まれている場合、グループの作成はeEmptySetエラーで失敗します。
モデルグループと詳細グループのメンバーは、初期の要素リストに応じて他の要素で拡張できます。たとえば、詳細グループはビューに応じてSketchおよびSketchPlane要素で拡張でき、FilledRegionはデフォルトで非表示の依存する寸法および曲線要素を持つことができます。
また、要素グループの作成時にいくつかの新しい要素がデータベースに追加されます。
- 注釈用の添付されたElementGroupインスタンス(存在する場合)。
- 各ElementGroup用のElementGroupTypeインスタンス。
- いわゆる「定義」グループを整理するための、各メンバー要素およびElementGroupインスタンスの非表示クローン。
前述の「定義」グループは、将来新しいメンバーが追加されたり除外されたりしてElementGroupの状態が変更された場合に備えて、初期のElementGroup状態のスナップショットを表します。これらの「定義」グループは、getDefiningGroupInstId()メソッドを介してアクセスできます。「定義」グループとそのメンバー要素は、空でないUnplacedOwnerIdヘッダーフィールドでマークされます。isUnplaced()メソッドは、それらの要素ヘッダーに対してtrueを返します。これらの要素は内部使用のみを目的としているため、すべての要素処理ルーチンから除外する必要があります。