首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问revit元素数据- python revit api

访问revit元素数据- python revit api
EN

Stack Overflow用户
提问于 2014-02-07 02:05:05
回答 2查看 1.9K关注 0票数 0

我对如何访问Revit的图元数据感到有点困惑,例如图元的参数、位置、Id等。如果我有这个代码:

代码语言:javascript
复制
collector = FilteredElementCollector(doc)
collector.OfCategory(BuiltInCategory.OST_Walls)
walls = collector.OfClass(FamilySymbol)
return walls

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

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

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2014-02-07 10:57:10

我不能帮助使用Python,但我非常熟悉Revit的API + C#。

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

在C#中应该是这样的:

代码语言:javascript
复制
new FilteredElementCollector(uidoc.Document).OfClass(FamilyInstance).ToElements();

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

代码语言:javascript
复制
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 Object -> http://wikihelp.autodesk.com/Revit/enu/2014/Help/3665-Developers/0074-Revit_Ge74/0083-Family_I83/0086-FamilyIn86

票数 1
EN

Stack Overflow用户

发布于 2014-02-07 16:13:01

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

代码语言:javascript
复制
walls = list(collector)

在幕后,list(collector)会做类似这样的事情:

代码语言:javascript
复制
walls = []
for w in collector:
    walls.append(w)

(请注意,这并不是它真正的工作方式,但在某种程度上解释了它)。

通过执行以下操作,可以使用.NET内部工作方式枚举collector中的墙:

代码语言:javascript
复制
enumerator = collector.GetEnumerator()
walls = []
while not enumerator.IsDone():
    walls.append(enumerator.Current)
    enumerator.MoveNext()

您可能希望检查collector.OfClass(FamilySymbol)行是否正确--在我的示例文档中,它生成了一个空列表--但也许您确实有FamilySymbol……

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

代码语言:javascript
复制
wall = walls[0]
interior_type_parameter = wall.Parameter['Interior Type']

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21610605

复制
相关文章

相似问题

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