在revit api中我试图访问门的ToRoom / FromRoom属性。 ironpython中的简化代码片段:
fc = FilteredElementCollector(doc)
doors = fc.OfCategory(BuiltInCategory.OST_Doors).WhereElementIsNotElementType().ToElements()
for door in doors:
froom = door.FromRoom
我的结果是“索引器#对象在0x0000000000035” 我如何从这里访问房间对象?
答案 0 :(得分:2)
这是一个IronPython / funky Revit API问题。基本上,定义FromRoom
的方式,它可以是属性或索引属性。请参阅API documentation for FromRoom。
"索引器"你得到的是FromRoom
的第二个版本 - 它需要Phase
作为参数。所以你基本上可以这样做:
phase = list(doc.Phases)[0]
room = door.FromRoom[phase]
由于FromRoom
的文档说它返回
The#34; From Room"在项目的最后阶段为门或窗设置。
你可能真的想要这样做:
phase = list(doc.Phases)[-1] # retrieve the last phase of the project
room = door.FromRoom[phase]
我无法弄清楚如何掌握其他版本的FromRoom
...
答案 1 :(得分:0)
fc = FilteredElementCollector(doc)
doors = fc.OfCategory( BuiltInCategory.OST_Doors ).WhereElementIsNotElementType()
phases = doc.Phases
phase = phases[phases.Size - 1]
for door in doors:
try:
froom = door.FromRoom[phase].Id
except:
froom = -1
try:
troom = door.ToRoom[phase].Id
except:
troom = -1
TaskDialog.Show("Revit","%s, %s" %(froom, troom))`