使用Python的Revit,按族过滤(族符号)

问题描述 投票:0回答:1

我刚刚开始使用Revit API,但有一个问题。我一直在寻找一种按家庭筛选Revit元素的方法。这是我的程序:首先,我执行一个过滤器元素收集器以获得所有家庭符号ID。

Families = FilteredElementCollector(doc).OfClass(Family).ToElements()
for fam in Families:
    if fam.Name == 'Family Name':
        FamSymb = fam.ID

这应该使我获得家庭符号ID。然后,我尝试使用此ID创建过滤后的元素收集器。

ElementFilter = FamilySymbolFilter(ElementId(FamSymb))
New_Collector = FilteredElementCollector(doc).WherePasses(ElementFilter).ToElementIds()

这给我以下错误:Microsoft.Scripting.ArgumentTypeException: expected BuiltInParameter, got ElementId

如果BuiltInParameter要求元素ID,我不知道为什么要期待FamilySymbolFilters。无论如何,我们将不胜感激。谢谢!

python revit-api revit revitpythonshell pyrevit
1个回答
0
投票

欢迎使用Revit API。首先通过getting started material工作,可能会节省一些时间,精力和头部抓挠。此外,它将帮助您理解族定义及其类型之间的区别,族定义及其类型在项目环境中生成符号,这些符号作为单独的实例放置。

您命名为FamSymb的实际上是一个标识您找到的家庭的元素ID。您看到的错误是由于您将ElementId实例馈送到ElementId构造函数这一事实引起的。但是,ElementId没有实现带有元素id参数的(副本)构造函数。但是,它确实实现了一个取BuiltInParameter的功能,请参见。 ElementId documentation

您可以立即实例化FamilySymbolFilter(FamSymb)(虽然我强烈建议您以其他方式命名FamSymb)。

© www.soinside.com 2019 - 2024. All rights reserved.