我刚刚开始使用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
,如果FamilySymbolFilters
请求元素Id。
无论如何,我们将非常感谢您的帮助。
谢谢
我认为您已经拥有了所需的代码,但只是添加了一个不必要的条件
看起来您正在搜索一个名为“姓氏”的
Family
。这样调整代码会将所有族作为Family
对象获取,并检查一个名为“Family Name”的对象:欢迎使用Revit API。首先,通过使用getting started material,您可能会节省一些时间、精力和精力。此外,它还将帮助您了解族定义与其类型之间的区别,后者在项目环境中生成符号,并作为单个实例放置
您所命名的
FamSymb
实际上是一个元素id,用于标识找到的族。您看到的错误是由于您正在将该ElementId实例馈送给ElementId
构造函数。但是,ElementId
没有实现采用元素id参数的(复制)构造函数。然而,它确实实现了一个BuiltInParameter
,参见ElementId documentation您可以直接实例化
FamilySymbolFilter(FamSymb)
(尽管我强烈建议以不同的方式命名FamSymb
)相关问题 更多 >
编程相关推荐