Revit API:'Hidden' 方法?
Revit API: 'Hidden' methods?
在使用 Revit API 并浏览 "RevitAPI.chm" 文件(以及浏览 Internet 上的示例)时,我注意到有些方法存在但未在 "RevitAPI.chm" 中列出使用 RevitPythonShell 时也不建议文件。
我解释一下。比方说,我有一个 "Space" 对象,通过
获得
s = FilteredElementCollector(doc).OfClass(SpatialElement).ToElements()
如果我这样做,假设(假设 s[0] 是一个有效的 Space 对象):
s[0].Geometry
我得到了一个 'indexer object':
<indexer# object at 0x0000000000000049>
但是 如果我这样做:
s[0].get_Geometry(Options())
然后我得到了我的 GeometryElement 对象。例如,get_BoundingBox 也有相同的行为。
现在,这很好,但我了解这些 get_something 方法的唯一方法是查看示例(在 "RevitAPI.chm" 或论坛等上)。所以这有点奇怪,不是吗?从某种意义上说,这些方法实际上并未列出。
所以我想我的问题是:
- 这是正常行为吗? (或者我通常应该使用 s[0].Geometry 等来获取 GeometryElement 对象吗?)
- 如果是,...为什么? :D
- 这些是什么'indexers'?
谢谢!
阿诺.
PS:使用 Revit 2017,使用 RevitPythonShell 和 pyRevit 进行测试
以小写 get_
为前缀的方法是自动生成的 getter 方法。官方 Revit API 在 Element
class 上提供并记录了 BoundingBox
属性。相当不优雅的是,这个所谓的 属性 接受了一个争论。因此,C# .NET 实现为其生成了一个 属性 getter 函数。
在使用 Revit API 并浏览 "RevitAPI.chm" 文件(以及浏览 Internet 上的示例)时,我注意到有些方法存在但未在 "RevitAPI.chm" 中列出使用 RevitPythonShell 时也不建议文件。
我解释一下。比方说,我有一个 "Space" 对象,通过
获得s = FilteredElementCollector(doc).OfClass(SpatialElement).ToElements()
如果我这样做,假设(假设 s[0] 是一个有效的 Space 对象):
s[0].Geometry
我得到了一个 'indexer object':
<indexer# object at 0x0000000000000049>
但是 如果我这样做:
s[0].get_Geometry(Options())
然后我得到了我的 GeometryElement 对象。例如,get_BoundingBox 也有相同的行为。
现在,这很好,但我了解这些 get_something 方法的唯一方法是查看示例(在 "RevitAPI.chm" 或论坛等上)。所以这有点奇怪,不是吗?从某种意义上说,这些方法实际上并未列出。
所以我想我的问题是:
- 这是正常行为吗? (或者我通常应该使用 s[0].Geometry 等来获取 GeometryElement 对象吗?)
- 如果是,...为什么? :D
- 这些是什么'indexers'?
谢谢! 阿诺.
PS:使用 Revit 2017,使用 RevitPythonShell 和 pyRevit 进行测试
以小写 get_
为前缀的方法是自动生成的 getter 方法。官方 Revit API 在 Element
class 上提供并记录了 BoundingBox
属性。相当不优雅的是,这个所谓的 属性 接受了一个争论。因此,C# .NET 实现为其生成了一个 属性 getter 函数。