前言
Python 调用 Revit API,发现竟有某些属性死活拿不到。比如,选中一堵墙,得到 WallType
,然后去读取它的 Name
,发现竟然没有。
现象
确实是 WallType
,但是找不到 Name
属性,但是却可以列出来。
确实是 WallType
找不到属性
所有属性
列出 wall.WallType
所有属性,有 Name
。
原因与解决方案
原因是因为 IronPython 有这样的局限性。不过可以直接调用某个具体类的方法,这里是 Element.Name.GetValue(wallType)
:
参考C#的反射机制 PropertyInfo.GetValue Method
对于不能调用的 Revit API 方法,我猜测用 MethodInfo.Invoke(Object, Object[]) Method 应该可以。
注: 解决方案来自 Dynamo Forum:Python - WallType - can’t get the walltype Name