2

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

(我正在使用 pyRevit,Revit 2017)

非常感谢!

4

3 回答 3

2

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

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

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

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

事实上,建筑编码器示例CmdCollectorPerformance模块中的众多过滤元素收集器片段之一已经证明了这一点:

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

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

于 2017-05-20T16:44:20.960 回答
2

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

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

于 2017-05-20T12:18:57.230 回答
0

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

于 2017-05-19T12:44:49.567 回答