Revit API:'隐藏'方法?

时间:2017-05-30 15:06:19

标签: revitpythonshell pyrevit

在使用Revit API并浏览“RevitAPI.chm”文件(以及在互联网上浏览示例)时,我注意到某些方法存在但未在“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进行测试

1 个答案:

答案 0 :(得分:3)

以小写BoundingBox为前缀的方法是自动生成的getter方法。官方Revit API提供并记录Element类的 NSString *expiration = [responseObject valueForKey:@".expires"]; NSDateFormatter *dateFormatter = [NSDateFormatter new]; dateFormatter.dateFormat = @"MM/dd/yyyy hh:mm:ss a +zz"; dateFormatter.timeZone = [NSTimeZone localTimeZone]; NSDate *expiryDate = [dateFormatter dateFromString:expiration]; EKLog(@"expiry date %@", expiryDate); 属性。相当不优雅的是,这种所谓的财产需要争论。因此,C#.NET实现为它生成了一个属性getter函数。