物料清单是一个表格,其中包含所有零件和组件以及相应的数据和属性。其逻辑表示很容易理解,但 BOM 表的物理数据模型是一个复杂的概念,包括组件、零件和数据容器。
机械字典
所有与 Teigha Mechanical 相关的通用数据都位于几个字典中,特别是 AcmDictionary。
数据库中的 AcmDictionary
AcmDictionary 包含与物料清单相关的数据:AcmBOM 字典和 AcmDataDictionary。此外,该字典还包含一些通用数据,例如标准字典。
BOM 字典
机械数据字典
另一个重要的字典是 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) — 返回组件定义对象的数据条目容器。
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 字典,则创建一个新的。
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) — 设置项目的排序优先级。
BomRow 和 Bom
结论
物料清单是一组字典,其中包含 BOM 项(行)和数据容器(数据条目)的子集。行和条目相互连接,行与组件连接。