如何通过revit API访问所有家庭类型?

时间:2017-05-19 10:32:52

标签: revit-api revitpythonshell pyrevit

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

(我使用pyRevit,Revit 2017)

非常感谢!

3 个答案:

答案 0 :(得分:2)

在您的filteredElementCollector中,在执行ToElements()之前,您应该添加WhereElementIsElementType(),然后添加ToElements()。

对于像家一样的基于家庭的元素,您将获得FamilySymbol元素 - 从那里您可以检查它们是否处于活动状态。

答案 1 :(得分:2)

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

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

如果没有实例,您将无法获得家庭或家庭符号。

哦,在重新阅读时,我看到你想要相反的,所有家庭的清单,无论他们是否已被实例化。哦不,是特定类别的所有系列符号的列表,无论它们是否已被实例化。

事实上,已经通过Building Coder样本CmdCollectorPerformance模块中的众多过滤元素收集器片段之一证明了这一点:

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

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

答案 2 :(得分:0)

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