首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >revitapi ironpython ToRoom返回"indexer # object“

revitapi ironpython ToRoom返回"indexer # object“
EN

Stack Overflow用户
提问于 2016-08-18 00:07:25
回答 2查看 1.1K关注 0票数 2

在revit api中,我尝试访问门的ToRoom / FromRoom属性。ironpython中的简化代码片段:

代码语言:javascript
复制
fc = FilteredElementCollector(doc)
doors = fc.OfCategory(BuiltInCategory.OST_Doors).WhereElementIsNotElementType().ToElements()

for door in doors:
    froom = door.FromRoom

我的结果是"indexer # object at 0x0000000000035“如何从这里访问房间对象?

EN

回答 2

Stack Overflow用户

发布于 2016-08-18 21:07:26

这是一个IronPython /时髦的Revit API问题。基本上,按照定义FromRoom的方式,它既可以是一个属性,也可以是一个索引属性。请参阅API documentation for FromRoom

你得到的“索引器”是FromRoom的第二个版本-它接受Phase作为它的参数。所以你基本上可以这样做:

代码语言:javascript
复制
phase = list(doc.Phases)[0]
room = door.FromRoom[phase]

因为FromRoom的文档说它会返回

在项目的最后阶段,

为门或窗设置的“自房间”。

你可能真的想这样做:

代码语言:javascript
复制
phase = list(doc.Phases)[-1]  # retrieve the last phase of the project
room = door.FromRoom[phase]

我不知道如何获得另一个版本的FromRoom……

票数 3
EN

Stack Overflow用户

发布于 2016-08-18 23:24:49

达伦,谢谢你的贡献!在jeremy的回答之后,我检查了同样的方法。以下是代码片段

代码语言:javascript
复制
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))`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39001482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档