如何让不同语言版本Revit文件的getProperties返回统一语言结果
Revit多语言版本属性统一返回方案
完全可以实现getProperties返回统一语言的结果,不受源Revit文件的版本语言限制,核心逻辑和实现方案如下:
底层逻辑
Revit的所有类别、内置参数的底层存储都使用固定不变的内置枚举ID,用户在不同语言版本里看到的法语、中文、英文显示名称,只是UI层的本地化映射值,和底层唯一标识没有绑定关系。比如结构柱的内置类别枚举值始终是OST_StructuralColumns,不管显示名称是英语的Structural Columns还是法语的Poteaux porteurs,底层枚举值不会发生变化。
具体实现方案
- 如果你直接调用Revit原生API开发:
避免通过DisplayName属性做匹配筛选,直接用内置枚举值做检索条件即可。比如筛选结构柱时直接指定BuiltInCategory.OST_StructuralColumns作为类别过滤条件,调取属性时用BuiltInParameter枚举值作为参数检索的键,拿到的结果完全不受语言影响。
示例代码:// 跨语言版本通用结构柱筛选代码 FilteredElementCollector collector = new FilteredElementCollector(doc); collector.OfCategory(BuiltInCategory.OST_StructuralColumns); List<Element> structuralColumns = collector.ToElements(); - 如果你调用的是二次封装的
getProperties方法:
先确认对应封装库的参数配置,绝大多数成熟的Revit开发封装库都支持指定返回内容的类型,你可以配置参数直接返回内置枚举ID,或者指定返回英文显示名称,比如添加类似language="ENU"、return_internal_id=True的配置项即可。
兼容改造方案
如果你的现有脚本已经写死了通过英文显示名称做匹配,可以提前生成一套「内置枚举ID-英文显示名称」的固定映射表,检索时先拿到底层ID再映射到你需要的英文名称,就能实现跨语言版本的统一返回。
内容的提问来源于stack exchange,提问作者Nic Maes
相关产品推荐
相关产品推荐

