Teigha Mechanical: OdDbDatabaseにおける部品表の物理データモデル

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

メカニカル辞書

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

image1

データベース内のAcmDictionary

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

image2

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

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& 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

BomRowとBom

結論

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

今すぐ始める

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

無料で試す