如何获取revit族类型的类型参数?
How to get type parameters of revit family type?
我正在尝试使用 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.Parameters
和ele.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)
不幸的是,上面的代码也只能生成实例参数
非常感谢解决此问题的任何帮助
经过更多搜索,我偶然发现了这个 post
谢天谢地,它有我问题的关键
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 系列的类型属性
我正在尝试使用 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.Parameters
和ele.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)
不幸的是,上面的代码也只能生成实例参数
非常感谢解决此问题的任何帮助
经过更多搜索,我偶然发现了这个 post
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 系列的类型属性