1

在使用 Revit API 并浏览“RevitAPI.chm”文件(以及浏览 Internet 上的示例)时,我注意到有些方法存在,但在“RevitAPI.chm”文件中既没有列出,也没有在使用 RevitPythonShell 时提出建议。

我解释。例如,假设我有一个“空间”对象,通过

s = FilteredElementCollector(doc).OfClass(SpatialElement).ToElements()

如果我这样做,让我们说(假设 s[0] 是一个有效的 Space 对象):

s[0].Geometry

我有一个“索引器对象”:

<indexer# object at 0x0000000000000049>

如果我这样做:

s[0].get_Geometry(Options())

然后我得到了我的 GeometryElement 对象。例如,get_BoundingBox 也有同样的行为。

现在,这很好,但我可以了解这些 get_something 方法的唯一方法是查看示例(在“RevitAPI.chm”或论坛等上)。所以这有点奇怪,不是吗?从某种意义上说,这些方法实际上并未列出。

所以我想我的问题是:

  • 这是正常行为吗?(或者我通常应该使用 s[0].Geometry 来获取 GeometryElement 对象吗?)
  • 如果是,……为什么?:D
  • 这些“索引器”是什么?

谢谢!阿尔诺。

PS:使用 Revit 2017,使用 RevitPythonShell 和 pyRevit 进行测试

4

1 回答 1

3

以小写为前缀的方法get_是自动生成的 getter 方法。官方 Revit API 提供并记录了类的BoundingBox属性Element。相当不雅的是,这个所谓的属性需要一个参数。因此,C# .NET 实现会为其生成一个属性 getter 函数。

于 2017-05-31T10:06:37.697 回答