Teigha Mechanical: BOMテーブルの作成

部品表 (BOM) は、すべての部品とコンポーネントを対応するデータと属性とともに保持するテーブルです。論理的な表現は行を持つテーブルであり、各行は部品またはコンポーネントを参照します。

BOMテーブルを作成するには、次の3つの方法があります。

  • メイン BOM テーブル — モデル空間全体の BOM テーブル。
  • アセンブリ BOM テーブル — 子コンポーネントを内部に保持するコンポーネントの BOM テーブル。
  • 境界 BOM テーブル — タイトル境界、ブロック参照の BOM テーブル。

アセンブリおよびメイン BOM の BOM テーブル署名を作成します。

OdResult createBomTable(OdDbObjectId& aNewBomTableId, const OdDbObjectId targetId, const OdString& name, bool addToBrowse, OdDbDatabase * pHostDb);

メイン BOM の作成

ほとんどの場合、メイン BOM は一般的な目的に最適です。部品やコンポーネントを操作し、BOM テーブルを作成できるサービスである BOM マネージャーを使用して作成できます。

まず、BOM マネージャーサービス クラスを作成します。

AcmBOMManagerPtr pBomMng = getAcmBomMgr();

次に、AcmBOMManager::createBomTable メソッドを次のパラメータで呼び出します。

  • aNewBomTableId — 新しい BOM の OdDbObjectId。
  • targetId — ターゲットオブジェクトの OdDbObjectId。メイン BOM の場合は、空の Id — OdDbObjectId::kNull を渡します。
  • Name — BOM テーブル名を含む OdString オブジェクト(「MAIN」で問題ありません)。
  • pDb — データベースへのポインタ。
OdDbObjectId newBomTbl;
pBomMng->createBomTable(newBomTbl, OdDbObjectId::kNull, L"MAIN", true, pDb);

アセンブリ BOM の作成

アセンブリは、他の(折り畳まれた)コンポーネントを保持する特殊なコンポーネントです。この場合、アセンブリの BOM も AcmBOMManager::createBomTable メソッドで作成できますが、他のパラメータを使用します。OdDbObjectId::kNull(メイン BOM の場合)の代わりに、コンポーネント定義オブジェクトを targetId パラメータとして渡す必要があります。

コンポーネント定義を取得します。

OdDbObjectId compDefObjectId = pDb->getOdDbObjectId(compDefHandle);

次に、パラメータと、コンポーネント定義のobjectIdをtargetIdとしてAcmBOMManagerを呼び出します。

pBomMng->createBomTable(newBomTbl, compDefObjectId, L"MAIN", true, pDb);

境界BOMの作成

タイトル境界は、図面の境界を定義する境界です。タイトルは、BlockTableRecordを参照するBlockReferenceとしてデータベースに物理的に表現されます。タイトル境界は独自の部品表(BOM)テーブルを持つことができます。境界BOMテーブルには特別な機能があります。それは、タイトル境界内に配置されているコンポーネントに対してのみBOMエントリ(BOM行)を作成します。この場合、境界のBOMはAcmBOMManager::createBorderBomTableと以下のパラメータを使用して作成できます。

OdResult createBorderBomTable(OdDbObjectId& aNewBomTableId, const OdDbObjectId borderId, OdString name = "", bool populate = false);
  • aNewBomTableId — 新しいBOMのOdDbObjectId。
  • targetId — ターゲットのblockReferenceのOdDbObjectId。
  • Name — BOMテーブル名を含むOdStringオブジェクト(空の場合、デフォルトで命名されます)。
  • populate — BOMのBOM行の作成を許可するboolフラグ。

blockReferenceを取得します。

OdDbObjectId borderId = pDb->getOdDbObjectId(borderHandle);

次に、パラメータと、blockReferenceのobjectIdをtargetIdとしてAcmBOMManagerを呼び出します。

OdDbObjectId newBomTbl;
pBomMng->createBorderBomTable(newBomTbl, borderId, "", true);

BOM作成時のデータベースの変更

BOMを作成すると、いくつかの新しいオブジェクトがデータベースに追加されます。AcmDictionaryでは、折りたたまれたAcmBomRowオブジェクトが辞書「AcmBOM」のAcmBomオブジェクトに追加されます。

image1

AcmDictionaryの状態

今すぐ始める

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

無料で試す