[返回博客](/cn/blog) # 在 BIM SDK 中使用 .bin 和 .csv 文件

Alexey Korolev 六月 20, 2019 [\#rvt](/cn/blog/tag/rvt) [\#rfa](/cn/blog/tag/rfa)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

#### 使用 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来完成更改。

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
