BOMマネージャーの概要

部品表 (BOM) マネージャーは、図面内のBOMテーブル、部品、およびコンポーネントのインターフェースを提供するサービス (サービスクラス) です。BOMマネージャーは、BOM行とそのデータ (部品データまたはコンポーネントデータを反映または含む行) のインターフェースも提供します。

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

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

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

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

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

OdRxClassPtr pService = odrxServiceDictionary()->getAt(L"AcmBOMManager");  
AcmBOMManagerPtr pBOMMgr = pService->create();

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

image1

図1 – BOMテーブルのリスト

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

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

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

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

 


 
image2

図面全体のすべての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プロジェクトで見つけることができます。

詳細については、弊社のドキュメントをご覧ください。 

今すぐ始める

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

無料で試す