【问题标题】:Access revit element data - python revit api访问 revit 元素数据 - python revit api
【发布时间】:2015-11-26 07:00:03
【问题描述】:

我对如何访问 Revit 的元素数据(例如元素的参数、位置、ID 等)有点困惑。如果我有此代码:

collector = FilteredElementCollector(doc)
collector.OfCategory(BuiltInCategory.OST_Walls)
walls = collector.OfClass(FamilySymbol)
return walls

它将打印:Autodesk.Revit.DB.FilteredElementCollector object at 0x0000000000000038 [Auto...]。我从这里去哪里?例如,我如何获得墙壁位置的返回?

这里可能有很多内容,并且每个项目都有多个步骤。我主要是在寻找获取和/或设置新元素数据的一般概念。

有什么想法吗?

【问题讨论】:

    标签: python element revit-api


    【解决方案1】:

    我对 Python 无能为力,但我对 Revit 的 API + C# 非常熟悉。

    您正在使用收集器列出项目中的所有墙壁。您想要(获取位置)是这些墙的 FamilyInstance 对象。

    在 C# 中会是这样的:

    new FilteredElementCollector(uidoc.Document).OfClass(FamilyInstance).ToElements();
    

    接下来,您应该循环结果以获取每个单独的元素并将其转换为墙:

    foreach (Wall i in instances)
    {
       var location = i.Location as LocationCurve;
    
       // The Curve element is a Line - 2 points defining it's position
       var p0 = location.Curve.GetEndPoint(0);
       var p1 = location.Curve.GetEndPoint(1);
    }
    

    您想要的大部分信息都在这个 FamilyInstance 对象上 -> http://wikihelp.autodesk.com/Revit/enu/2014/Help/3665-Developers/0074-Revit_Ge74/0083-Family_I83/0086-FamilyIn86

    【讨论】:

      【解决方案2】:

      Revit API 文档指出 FilteredElementCollector 是 IEnumerable<Element>。所以你实际上有一个墙对象的列表。我喜欢将这些添加到 python 列表中,以便更轻松地使用它们:

      walls = list(collector)
      

      在幕后,list(collector) 将执行以下操作:

      walls = []
      for w in collector:
          walls.append(w)
      

      (请注意,这并不是它真正的工作原理,而是对其进行了某种解释)。

      您可以使用 .NET 内部工作原理来枚举collector 中的墙壁,方法是这样做:

      enumerator = collector.GetEnumerator()
      walls = []
      while not enumerator.IsDone():
          walls.append(enumerator.Current)
          enumerator.MoveNext()
      

      您需要检查 collector.OfClass(FamilySymbol) 行是否正确 - 在我的示例文档中,它产生了一个空列表 - 但也许您确实有 FamilySymbols 的墙...

      接下来,您要使用墙壁对象。所以,拿第一面墙:

      wall = walls[0]
      interior_type_parameter = wall.Parameter['Interior Type']
      

      然后使用参数...如果您安装了 Revit SDK,您将找到一个用于窥探对象并查找其参数和值的工具。用这个!探索!玩得开心!

      【讨论】:

        猜你喜欢
        • 2016-10-24
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 2016-10-20
        • 2020-04-20
        • 2020-11-07
        • 1970-01-01
        • 2019-01-25
        相关资源
        最近更新 更多