【问题标题】:How to access all the family types through revit API?如何通过 revit API 访问所有族类型?
【发布时间】:2017-10-19 10:47:20
【问题描述】:

是否可以使用 Revit API 访问某个类别的所有族类型(例如窗户、门……)?与事例相反。据我所知,使用 FilteredElementCollector(doc).OfCategory(...).ToElements() 或 FilteredElementCollector(doc).OfClass(...).ToElements() 指向该类/类型的实例,但我想要检查特定类型是否已在 Revit 中加载,即使它尚未实例化。

(我使用的是 pyRevit,Revit 2017)

非常感谢!

【问题讨论】:

    标签: revit-api revitpythonshell pyrevit


    【解决方案1】:

    好的,抱歉。显然我错了,它确实指向所有元素,包括未实例化的元素。

    【讨论】:

      【解决方案2】:

      在您的过滤元素收集器中,在执行 ToElements() 之前,您应该添加 WhereElementIsElementType(),然后是 ToElements()。

      对于像门这样的基于 Family 的元素,您将返回 FamilySymbol 元素 - 从那里您可以检查它们是否处于活动状态。

      【讨论】:

      • 谢谢!这个我也试试!
      【解决方案3】:

      我认为确定所有已实例化的族的最简单方法是检索所有族实例。

      从实例中,您可以确定族符号和族本身,并确定它已被实例化。

      如果没有实例,您将不会获得家族或家族符号条目。

      哦,在重新阅读时,我发现您想要相反的内容,即所有族的列表,无论它们是否已被实例化。哦不,一个特定类别的所有系列符号的列表,无论它们是否已被实例化。

      事实上,The Building Coder 示例CmdCollectorPerformance 模块中的众多过滤元素收集器 sn-ps 之一已经证明了这一点:

      https://github.com/jeremytammik/the_building_coder_samples/blob/master/BuildingCoder/BuildingCoder/CmdCollectorPerformance.cs#L294-L332

      确切地说,那里实现的方法GetFamiliesOfCategory 检索给定类别的所有族。您可以轻松地改用它来检索家庭符号。

      【讨论】:

      • 谢谢杰里米!
      • 一个问题:在您的“GetFamiliesOfCategory”函数中,您使用过滤元素收集器,然后是 OfClass“Family”。如果我在我的项目中这样做,比方说,循环它并打印 FamilyCategory.Name,它似乎只打印实例化的元素。因为,例如,它不会打印任何确实没有在我的项目中实例化的“管道”、“管道系统”等。我不习惯 C#,因此也许我在解释您的代码时遗漏了一些东西?谢谢!
      猜你喜欢
      • 2020-06-30
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      相关资源
      最近更新 更多