[ブログに戻る](/ja/blog) # Teigha Mechanical: OdDbDatabaseにおける部品表の物理データモデル

Andrii Morozov 10月 31, 2017 [\#mechanical](/ja/blog/tag/mechanical) [\#getting started](/ja/blog/tag/getting-started)

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

部品表は、すべての部品とコンポーネントを対応するデータと属性とともに保持するテーブルです。論理表現は非常に理解しやすいですが、BOMテーブルの物理データモデルは、コンポーネント、部品、データコンテナを含む複雑な概念です。

#### メカニカル辞書

Teigha Mechanicalに関連するすべての共通データは、いくつかの辞書、特にAcmDictionaryに格納されています。

![image1](/files/inline-images/image001_17.png)データベース内のAcmDictionary

AcmDictionaryは、部品表に関連するデータ（AcmBOM辞書とAcmDataDictionary）を保持します。また、この辞書には、標準辞書などの共通データも含まれています。

![image2](/files/inline-images/image002_10.png)BOM辞書

#### メカニカルデータ辞書

もう1つの重要な辞書はAcmBOMDATA辞書です。この辞書はAcmDataDictionaryに関連しています。基本的に、AcmBOMDATAはBOM行とBOMテーブルのデータコンテナを保持します。

データコンテナは、DataEntry、DataEntryPart、またはDataEntryBlockのいずれかのタイプにすることができます。AcmDataDictionaryクラスはBOMデータを処理し、次のように動作します。

```
OdResult  append(AcmDataEntryPtr pDataEntry, OdDbObjectId& newObjId);
OdResult createDataEntryFor(AcmBomPtr& pBom, const OdDbObjectId& targetId, OdDbObjectId& objId);
OdResult  createDataEntryFor2DCompDef(const OdDbObjectId& targetId, OdDbObjectId& objId);
OdResult  createDataEntryFor(const OdDbBlockTableRecordPtr& pBlockTableRecord, OdDbObjectId& objId);
OdResult getDataEntryByCompDefId(const OdDbObjectId& compDefId, OdDbObjectId& dataEntryId) const;

```

- append(AcmDataEntryPtr pDataEntry, OdDbObjectId&amp; newObjId) — 既存の辞書に新しいデータエントリコンテナを追加します。
- createDataEntryFor() — このメソッド群は新しいデータエントリコンテナを作成します。
- getDataEntryByCompDefId(const OdDbObjectId&amp; compDefId, OdDbObjectId&amp; dataEntryId) — コンポーネント定義オブジェクトのデータエントリコンテナを返します。

![image3](/files/inline-images/image003_11.png)BOMData辞書とDataEntries

#### DbInfoサービス クラス

AcadmDbInfoは、AcmDataDictionaryと連携するサービス クラスです。このサービス クラスは、Teigha Mechanical辞書をより簡単に操作できるように設計されています。

```
OdDbObjectId acmDictionaryId();
OdDbObjectId bomDictionaryId();
OdDbObjectId dataDictionaryId();
OdDbObjectId createBomDictionary();

```

- acmDictionaryId() — 現在のデータベースのAcmDictionary OdDbObjectIdを返します。
- bomDictionaryId() — 現在のデータベースのAcmBOM OdDbObjectIdを返します。
- dataDictionaryId() — 現在のデータベースのAcmBOMDATA OdDbObjectIdを返します。
- createBomDictionary() — 現在のデータベースにAcmBOM辞書がない場合、新しいAcmBOM辞書を作成します。

#### BOMオブジェクト

AcmBomクラスは、部品表テーブルオブジェクトを表します。AcmBomオブジェクトは、BOMテーブルに適したデータと、BOM項目を表すBOM行を含むデータエントリコンテナを保持します。

```
OdString                          name() const;
OdDbHardPointerId                 dataEntryId() const;
void                              setDataEntryId(OdDbHardPointerId objId);
void                              setName(OdString name);
bool                              isExpandedBOM() const;
OdInt16                           itemNumberStep() const;
OdString                          itemNumberStart() const;
void                              setItemNumberStart(const OdString& itemNumberStart);
void                              setItemNumberStep(OdInt16 itemNumberStep);

```

- dataEntryId() — BOMテーブルのデータコンテナを返します。
- setDataEntryId(OdDbHardPointerId objId) — BOMテーブルのデータコンテナを設定します。
- name() — BOMテーブルの名前を返します。
- setName(OdString name) — BOMテーブルの名前を設定します。
- isExpandedBOM() — BOMが展開されている場合はtrue、構造化されている場合はfalseを返します。
- itemNumberStep() — BOMテーブルの項目属性の番号ステップを返します。
- itemNumberStart() — BOMテーブルの属性の最初の番号を返します。
- setItemNumberStart(const OdString&amp; itemNumberStart) — BOMテーブルの項目番号ステップを設定します。
- setItemNumberStep(OdInt16 itemNumberStep) — BOMテーブルの最初の番号を設定します。

#### BOM行

AcmBomRowクラスはBOMテーブルの項目を表します。BomRowはデータコンテナも保持します。

```
OdString                 getItemName() const;
OdDbHardPointerId        getDataEntryId() const;
virtual bool             isVisible() const;
bool                     isToExpand() const;
OdInt32                  getSortPriority();
void                     setSortPriority(OdInt32 priority);

```

- getItemName() — 項目名を返します。
- getDataEntryId() — データコンテナを返します。
- isVisible() — 項目が表示されている場合にtrueを返します。
- isToExpand() — 項目が展開されたBOM内にある場合にtrueを返します。
- getSortPriority() — ソート優先度を返します。
- setSortPriority(OdInt32 priority) — 項目のソート優先度を設定します。

![image4](/files/inline-images/image004_9.png)BomRowとBom

#### 結論

部品表（Bill Of Materials）は、BOM項目（行）のサブセットとデータコンテナ（データエントリ）を持つ辞書のセットです。行とエントリは互いに接続されており、行はコンポーネントに接続されています。

## 今すぐ始める

**ODAソフトウェアを60日間無料でお試しください。  
リスクなし、クレジットカード不要。**

[無料で試す](https://www.opendesign.com/ja/free-trial)
