如何在读取 excel 文件时在 Revit Python Shell 中将 'string' 变成 'BuiltInCategory'

How to turn 'string' into 'BuiltInCategory' in Revit Python Shell when reading excel file

我正在尝试将数据从 Excel 导入 Revit Python Shell 以验证 Revit 文件中是否存在所选对象类别的某些参数。但是我在第一个 'for' 循环中遇到了一些问题(查看 excel sheet 的第一列并获取类别)。 实现我想要的目标的第一步是获取我想要分析的类别的所有元素。我已经尝试了很多东西,但我总是以图片中显示的错误告终(得到的是字符串而不是内置类别)。我搜索了一种将字符串转换为内置类别的方法,但我没有找到任何东西。

有人知道怎么处理吗?有没有办法将字符串转换为内置类别,或者是否有其他解决方案?

谢谢! picture - screenshot

这个问题更像是一个 C# 问题,而不是一个 Revit API 问题。搜索“c# enum string convert', which turns up, e.g., convert a string to an enum in C#。在这种情况下:

BuiltInCategory bic = BuiltInCategory.Parse( "some_string" );

看起来问题出在这些行上:

 fec = FilteredElementCollector(doc)
 cat = fec.OfCategory(i.Value2)

在这种情况下,i.Value2string,但 fec.OfCategory 想要 BuiltInCategory,正如您之前评论的那样。

Jeremy 的回答会将 string 转换为 BuiltInCategory(感谢 Jeremy,我不知道您可以这样做!),如下所示: bic = BuiltInCategory.Parse(BuiltInCategory, "OST_PlumbingFixtures")

因此在您的示例中它将是:

fec.OfCategory(BuiltInCategory.Parse(BuiltInCategory, i.Value2.split('.')[1]))