Teigha BIM 支持外部参数定义,这些定义是存储在外部文本文件中且不包含在项目/族文档中但可以导入到文档中的实体。ParamElemExternal 类的参数元素存储外部参数定义的 GUID。
外部参数定义文件结构
这些文件看起来的简单示例如下:
*META VERSION MINVERSION
META 2 1
*GROUP ID NAME
GROUP 1 1
GROUP 2 2
GROUP 3 Exported Parameters
*PARAM GUID NAME DATATYPE DATACATEGORY GROUP VISIBLE DESCRIPTION USERMODIFIABLE
PARAM f5ff6402-9260-4e5a-9f8e-49d14a351e19 Area AREA 3 1 1
PARAM 1f8f5e6f-f6e9-43a0-a059-d610dfd26402 Param11 TEXT 2 1 Desc1 1
PARAM 844695f1-a33f-40d7-aacf-a0e131d51a97 Param 2 FORCE 1 1 444 1
- META 部分对应于元数据,版本 2 带有 minversion 2 文件,这些文件用于所有现代版本的 .rvt/.rfa 文件。目前,它是 Teigha BIM 中唯一支持的版本。
- Groups 部分表示外部参数定义的组;每个组都有一个名称和 ID(这两个字段都是唯一的)。这些组与 .rvt/.rfa 文档中的参数组或任何其他内容无关,仅用于对外部参数定义进行分组(例如,在“共享参数”对话框中)。
- Params 部分包含外部参数定义。
每个部分都以一个以“*”符号开头的标题字符串开始,并包含一个部分表中的字段列表。标题和实体表中的字段都用制表符分隔。
Teigha BIM 中的外部参数定义
所有用于处理外部参数文件所需的接口都位于 Database/BmExtParamDef.h 文件中。该文件定义了两个类:
- OdBmExtParamDef — 表示外部参数定义。
- OdBmExtParamDefFile — 表示用于存储外部参数和组的文件。
OdBmExtParamDef 类
此类表示外部参数定义,其字段对应于 PARAM 部分中实体的字段:
- OdString m_name; — 参数名称,对应于 OdBmParamDef 的 caption 字段。
- OdBm::ParameterType m_dataType; — 参数类型,定义将使用 OdBmParamDef 的哪个子类以及 ParamDefValue 的 unitType。
- OdInt64 m_dataCategory; — 定义族类型类别(仅适用于族类型参数)。
- OdUInt32 m_groupId; — 参数所属组的 ID。
- bool m_isVisible; — 可见性标志,对应于 OdBmParamDef 的 IsUserVisible 字段。
- OdString m_description; — 描述,对应于 ParamElemExternal 的 description 字段。
除了获取和设置方法之外,该类还包含一个用于创建参数定义的方法,该方法可用于创建数据库参数 (ParamElemExternal),即,将外部定义导入到数据库中;该类还包含一个构造函数,用于使用 OdBmParamDef 创建外部定义,该定义将参数从数据库导出到共享参数文件。
OdBmParamDefPtr getParamDef(const OdBmDatabasePtr& pDb) const;
OdBmExtParamDef(const OdBmParamDefPtr& pParamDef, OdUInt32 groupId, const OdString& description);
OdBmExtParamDefFile 类
此类表示外部参数定义的数据库(文件),并提供用于从流加载和保存数据库以及添加、删除等参数定义和组的接口。
- getGroups — 以常量引用形式返回组的 ID-字符串名称映射。
- addGroup — 添加一个组。如果传入负 ID,接口将自行分配一个 ID 并返回。
- deleteGroup — 删除一个组。只有当组不包含参数定义时才能删除。
- renameGroup — 重命名一个组。
- isValidGroup — 验证数据库中是否存在具有传入 ID 的组。
- getParams — 以常量引用形式返回参数定义 guid-OdBmExtParamDef 映射。
- getParamsByGroup — 返回属于某个组的参数定义映射。
- getParamByGUID — 按 GUID 返回参数定义。
- addParam — 将参数定义添加到数据库。如果 GUID 不唯一或数据类型或组无效,则返回带有参数名称的错误 ID。
- deleteParam — 删除一个参数。
- moveParam — 将参数移动到另一个组。
- getParamTypeByTag — 根据文件中 PARAM 部分记录的 DATACATEGORY 字段中使用的字符串标签返回 ParameterType(例如,标签 AREA 对应于参数类型 OdBm:: kPT_Area)。
- getParamTypeTag — 根据字符串标签 DATACATEGORY 返回 ParameterType。
- loadFromStream — 从流加载数据库内容。
- saveToStream — 将数据库内容保存到流。