0

我正在尝试使用 pyrevit 托管的 ironpython 创建所有类型参数的列表。我尝试了以下代码

from pyrevit import revit, DB

doc =__revit__.ActiveUIDocument.Document
curview = doc.ActiveView

target_category = DB.BuiltInCategory.OST_StructuralColumns
elements = DB.FilteredElementCollector(doc, curview.Id)\
        .OfCategory(target_category)\
        .WhereElementIsNotElementType()\
        .ToElements()

for ele in elements:
    parameters = [i.Definition.Name for i in ele.Parameters]
    orderedParas = [i.Definition.Name for i in ele.GetOrderedParameters()]

print(sorted(parameters))
print(sorted(orderedParas))

两者ele.Parametersele.GetOrderedParameters()只能产生实例参数。

我读过实例参数是元素的类型参数。所以我试图捕捉家庭类型并应用与上面相同的代码。

families =   DB.FilteredElementCollector(revit.doc)\
            .OfClass(DB.FamilyInstance)

for family in families:
        x = family.GetOrderedParameters()
        if family.Name == "C2 300x600":
            for i in x:
                print(i.Definition.Name)

不幸的是,上面的代码也只能产生实例参数

非常感谢解决此问题的任何帮助

4

1 回答 1

2

经过一番搜索后,我偶然发现了这篇文章如何通过 revit API 访问所有家庭类型? 谢天谢地,这对我的问题有帮助

from pyrevit import revit, DB

doc =__revit__.ActiveUIDocument.Document

target_category = DB.BuiltInCategory.OST_StructuralColumns
elements = DB.FilteredElementCollector(doc)\
        .OfCategory(target_category)\
        .WhereElementIsElementType()\
        .ToElements()

for ele in elements:
    for i in ele.GetOrderedParameters():
        print(i.Definition.Name)

看来我不得不使用.WhereElementIsElementType()而不是.WhereElementIsNotElementType()利用 Revit 系列的类型属性

于 2020-11-09T11:05:25.617 回答