[ブログに戻る](/ja/blog) # BOMマネージャーの概要

Andrii Morozov 7月 11, 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) マネージャーは、図面内のBOMテーブル、部品、およびコンポーネントのインターフェースを提供するサービス (サービスクラス) です。BOMマネージャーは、BOM行とそのデータ (部品データまたはコンポーネントデータを反映または含む行) のインターフェースも提供します。

このトピックには、次のセクションが含まれています。

- BOMマネージャーの機能と例
- すべてのBOMテーブルを取得
- 名前でBOMテーブルを取得
- IDで部品データを取得
- BOM行または部品リストグループアイテムのアイテムデータをIDで取得

#### BOMマネージャーの機能と例

部品表は、機械構造と部品からのすべてのデータを収集し、すべてのデータをテーブル形式で表現します。BOMマネージャーは、BOM行やデータエントリなど、さまざまなデータソースと連携します。

BOMマネージャーは次のように作成および呼び出すことができます。

OdRxClassPtr pService = odrxServiceDictionary()-&gt;getAt(L"AcmBOMManager");  
AcmBOMManagerPtr pBOMMgr = pService-&gt;create();` `

部品表は特別な辞書です。AcmBOMエントリは、BOMテーブルのリストにあるAcmDictionaryセクションで見つけることができます。

![image1](/files/inline-images/image001_2.png)図1 – BOMテーブルのリスト

BOMマネージャーは、開いている図面またはデータベース内のオブジェクトと連携し、通常はOdDbObjectIdをパラメータとして受け取ります。

#### すべてのBOMテーブルを取得

次の図では、サンプルファイルに3つのBOMタイプが示されています。

- 「MAIN」という名前のメインBOMテーブル
- 「COMPONENT ASSEMBLY BOM」という名前のアセンブリBOMテーブル
- 「TITLE BORDER BOM」という名前のタイトル枠BOMテーブル

```


 
```

![image2](/files/inline-images/image002_0.png)図面全体のすべてのBOMテーブル、およびオプションで外部参照ファイルからのBOMテーブルを取得するには、getAllBomTables() メソッドを使用します。

```
OdResult getAllBomTables(OdDbObjectIdArray& bomIds, bool xrefed, OdDbDatabase * pHostDb);

```

最初のパラメータ bomIds は、BOMテーブルのIDを持つOdDbObjectId要素の配列です。2番目のパラメータ xrefed は、外部参照ファイルからBOMテーブルを取得するかどうかを定義します。最後のパラメータ pHostDb は、BOMテーブルを検索するデータベースを指定します。

getAllBomTables() メソッドの使用例:

```

OdDbObjectIdArray objIdArr; 
pBOMMgr->getAllBomTables(objIdArr, useXrefs, pDb);
```

getAllBomTables() メソッドの出力例:

```

List of BOM tables (objIdArr) for the above example file will contain IDs of the BOM Tables:
MAIN                                                                                                                    
COMPONENT ASSEMBLY BOM                                                                                                  
TITLE BORDER BOM
```

#### 名前でBOMテーブルを取得

BOMテーブルを取得するには、指定された名前のBOMテーブルのOdDbObjectIdを返すgetBomTable()メソッドを使用します。

```
OdResult getBomTable(const OdString& name, OdDbObjectId& bomTableId, OdDbDatabase * pDb);

```

最初のパラメータ名にはBOMテーブル名が指定されます。2番目のパラメータbomTableIdは、対応するBOMテーブルオブジェクトIDの戻り値を受け取ります。3番目のパラメータpDbは、BOMテーブルが配置されているデータベースへのポインタです。

getBomTable()メソッドの使用例：

```

OdString bomName(L"MAIN");
OdDbObjectId bomTableId;
OdResult result = pBOMMgr->getBomTable(bomName, bomTableId, pDb);
if (result == eOk)
{
  AcmBomPtr pBom = AcmBom::cast(bomTableId.safeOpenObject());
  odPrintConsoleString(pBom->getBomName());
  odPrintConsoleString(L"\n");
  odPrintConsoleString(pBom->getDbHandle().ascii());
  odPrintConsoleString(L"\n");
  return eOk;
}
```

getBomTable()メソッドの出力例：

```
MAIN                                                                                              
34B
```

#### IDによる部品データの取得

IDで部品データを取得するには、部品参照を扱うgetPartData()メソッドを使用します。

```
OdResult getPartData(const OdDbObjectId& referenceId, OdUInt32& numOfItems, OdMapStringToString& valueMap);

```

最初のパラメータreferenceIdは部品参照オブジェクトIDです。2番目のパラメータnumOfItemsは、アイテム数（QTYフィールド）の戻り値を取得します。3番目のパラメータvalueMapは、プロパティ値のマップを取得します。

getPartData()メソッドは、部品参照および部品参照データエントリに含まれるデータを取得します。入力パラメータとして部品参照のOdDbObjectIdを受け取り、出力パラメータとしてアイテム数（QTYフィールド）とプロパティ値のマップを持ちます。getPartData()メソッドはBOM標準をチェックし、プロパティが空の場合、デフォルトのBOM標準値（存在する場合）を返します。

getPartData()メソッドの使用例：

```

OdUInt32 numOfItems;
OdMapStringToString valueMap;
result = pBOMMgr->getPartData(partRefObjId, numOfItems, valueMap);
```

getPartData()メソッドの出力例（valueMapの内容）：

```

BOM_UNITS : ea                                                                                                         
DESCR : description is missing                                                                                          
MATERIAL : Stainless                                                                                                    
NAME : OP9101SL                                                                                                         
STANDARD : ISO                                                                                                          
TOTAL_MASS : =IF(ISBLANK(MASS),BLANK,QTY*MASS)
```

#### IDによるBOM行または部品リストグループアイテムのデータ取得

IDでBOM行または部品リストグループアイテムのデータを取得するには、getItemData()メソッドを使用します。

```

OdResult getItemData(const OdDbObjectId& itemId, OdString& itemNo, OdUInt32& numOfItems, OdMapStringToString& valueMap, const OdDbObjectId& bomStdId);
```

最初のパラメータitemIdは、アイテムデータを取得するオブジェクトのIDです。2番目のパラメータitemNoは、アイテム番号の戻り値を取得します。3番目のパラメータnumOfItemsは、アイテム数（QTYフィールド）の戻り値を取得します。4番目のパラメータvalueMapは、プロパティ値のマップを取得します。5番目のパラメータbomStdIdは、デフォルトのBOM標準値を取得する標準のIDです。  
ワークフローはgetPartData()と似ています。getItemData()メソッドは、アイテムデータを取得したいオブジェクト（BOM行または部品リストグループアイテム）のOdDbObjectIdを入力パラメータとして受け取ります。アイテム番号、アイテム数（QTY）、およびプロパティ値のマップは出力パラメータです。

getItemData()メソッドの使用例：

```

OdString itemNo;
OdUInt32 numOfItems;
OdMapStringToString valueMap;
pBOMMgr->getItemData(bomRowId, itemNo, numOfItems, valueMap);
```

getItemData()メソッドの出力例：

```

itemNo: 1
numOfItems: 4 
valueMap contents:
BOM_UNITS : ea
DESCR : description is missing
MATERIAL : Stainless
NAME : OP9101SL
STANDARD : ISO
```

BOM関連のその他の例は、Examples|TmBomExプロジェクトで見つけることができます。

詳細については、[弊社のドキュメント](https://docs.opendesign.com/mech/mech_BOM_manager_overview.html)をご覧ください。

## 今すぐ始める

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

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