使用 TB_BinGenerator 实用程序
TB_BinGenerator 是一个实用程序,用于更新 .bin 和 .csv 文件,这些文件用于存储大型数据集,例如与 BuiltInCategories 关联的对象数据。默认情况下,TB_BinGenerator 被排除在构建过程之外。可以通过将 TB_ROOT/Projects/CMakeLists.txt 的第一行从 SET(ENV{GENERATION_MODE} 0) 更改为 SET(ENV{GENERATION_MODE} 1) 来切换排除。使用它很简单,只需运行不带参数的实用程序即可。
TB_ExLabelUtils 中的更改
TB_ExLabelUtils 经过了彻底的重新设计,同时 API 基本保持不变。
所有标签都存储在单独的 .csv 文件集中,这些文件位于 TB_ExLabelUtils 二进制文件附近的 CSV 文件夹中。它们的值可以随时更改,甚至在运行时也可以。为了简单起见并避免示例中的性能问题,每组标签在首次请求时都会被缓存。因此,如果标签已被请求,则运行时更改在当前会话期间不会生效。
一个小的 API 扩展包括 OdBm::EnumsWithLabels::Enum 枚举,它提供了一个带有相关标签的枚举列表:
- virtual bool OdBmLabelUtilsPE::isCommon(const OdBm::EnumsWithLabels::Enum) const;
如果标签值基于 BIM 源文件中的宏定义,则返回 true;否则返回 false。 - virtual bool OdBmLabelUtilsPE::hasValues(const OdBm::EnumsWithLabels::Enum) const;
如果 PE 可以为指定的枚举返回值,则返回 true;否则返回 false。
在示例 TB_ExLabelUtils 中,isCommon 通过检查 TB_ExLabelUtils 二进制文件附近的 Checksums.txt 文件进行评估。使用 SHA1 计算的校验和值应用于 .csv。SHA1 实现位于 TB_ROOT/Include/Common/BmSHA1.h。
关于内置对象加载:如果TB_ExLabelUtils模块尚未加载,如果关联枚举(例如BmCategoty.h)的标签是通用的,或者如果标签无法加载(TB_ExLabelUtils返回false),则使用存储在二进制文件中的标签。
分发包中的CSV文件夹是BIM根文件夹中CSV文件夹的副本。
.bin和.csv文件的一致性
在编译时,如果.csv或.bin文件的内容与包含宏定义的文件(例如BuiltInCategories.csv和BmBuiltInCategory.h)不一致,则构建将失败。因此,必须通过更改宏并运行TB_BinGenerator来完成更改。