Autodesk Revit架构2014 . net API c#在链接中找到实例空间

本文关键字:链接 空间 实例 架构 Revit 2014 net API Autodesk | 更新日期: 2023-09-27 18:09:48

我有以下设置:文件A是我的建筑模型,包含墙壁,房间,家具等。文件B是我的电子机械文件,有闪电装置,插座,…文件A链接到文件B,因此文件B是一个链接文件。

我目前正在Revit中创建一个插件,它生成一个给定房间内的元素列表。现在,为主机文件(文件A)中的元素生成这个列表并不难,只需迭代所有元素,检查它是否为Instance并获得该Instance.Room属性。

但是,对于链接文档(文件B)中的实例,.Room属性总是返回null。

我希望是否有人已经无意中发现了这个问题的解决方案。现在我看到的唯一解决方案是绑定链接的文档,以便将其转换为组。但是,1:我看不到通过API绑定链接的可能性,2:将其转换为组会丢掉链接文档的所有优点。

Autodesk Revit架构2014 . net API c#在链接中找到实例空间

我所做的就是使用文档。GetRoomAtPoint(XYZ点)方法,并在主机文件中传递元素的原点。

你需要一些逻辑来转换你的主机和链接文档之间的坐标-查看这篇文章Jeremy Tammik的更多信息:http://thebuildingcoder.typepad.com/blog/2013/11/determining-host-document-location-of-a-linked-element.html

您可以通过应用程序访问链接的文档。文档属性。您将需要一些逻辑来确定哪些加载的文档是您的主机模型的链接文档。您可以使用TransmissionData.GetAllExternalFileReferenceIds()和TransmissionData.transmissionData.GetLastSavedReferenceData(elId)来检索externalfilerreference对象,并将其与当前加载的所有文档进行比较。