如何在Dynamo(PythonScript)中获取族类型名称(AttributeError: Name错误解决方案)

一、背景

小伙伴们在PythonScript中,想通过Name属性去获取比如WallType的名称时,会遇到这个错误

警告:IronPythonEvaluator.EvaluateIronPythonScript 操作失败。
Traceback (most recent call last):
File "", line 30, in <module>
AttributeError: Name

二、解决思路

源程序:

import clr
clr.AddReference('System')
from System.Collections.Generic import List
#导入Dynamo中封装后的Revit节点
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
# 导入Revit原生API
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
#  导入Revit原生文档管理器
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
#  一.获取当前文档
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
#  二.获取某种族类别下的所有族类型
result = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).OfClass(WallType).ToElements()
#  三.比如获取第一个WallType元素
familyType=result[0]
#  四.尝试获取WallType名称
OUT=result[1].Name

然后我们发现这个时候就会出现上面的错误

AttributeError: Name

那么如何解决呢?这个时候,对于WallType(族类型)名称的获取,这里很特殊,我们可以使用

familyType.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_NAME).AsString()

来解决这个问题。修改后的代码如下所示:

import clr
clr.AddReference('System')
from System.Collections.Generic import List
#导入Dynamo中封装后的Revit节点
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
# 导入Revit原生API
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
#  导入Revit原生文档管理器
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
#  一.获取当前文档
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
#  二.获取某种族类别下的所有族类型
result = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).OfClass(WallType).ToElements()
#  三.比如获取第一个WallType元素
familyType=result[0]
#  四.尝试获取WallType名称
familyTypeName=familyType.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_NAME).AsString()
OUT=familyTypeName

正常显示结果如下
如何在Dynamo(PythonScript)中获取族类型名称(AttributeError: Name错误解决方案)_第1张图片

三、注意事项

1.我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出revit二次开发以及编程干货
2.欢迎加入BIM行业开发交流1群,获取更多开发资料 群号:711844216
3.博主的面向工程人员的Dynamo之Python开发教学视频正在准备中,进Q群711844216获取最新消息

你可能感兴趣的:(Dynamo)