ActiveProjectLocation.Name Revit 链接中的 Revit 链接



我打开文件A,其中有x个文件B链接到其中。 文件 B 也有 x 个文件 C 链接到其中。我想知道文件 C 的位置名称。

我使用 dynamo for revit 收集文件 A 中的 RevitLinkInstances (B),然后使用以前的 RevitLinkInstances (B) 收集它们的 RevitLinkInstances (C)。这部分工作得很好,可以用自定义节点或python来完成。从那里我可以从C RevitLinkInstance收集任意数量的项目信息(根据我的理解,当我上次打开C RevitLinkInstances时处于保存状态)

到目前为止,我从C RevitLinkInstances获得了我想要的一切,而无需在后台打开它们:文件名,实例名称,固定状态,设计选项,实例的工作集,类型的工作集。

当我尝试收集 C 文件的 ActiveProjectLocation.Name 时,我得到 null,当我尝试之前 GetDocument() 时,相同的结果。如果该信息未存储在 B RevitLinkInstances 中,这似乎是合乎逻辑的。

发电机脚本的图像

我为我的C RevitLinkInstances使用了以下python 首先在这里描述我的问题 https://forum.dynamobim.com/t/get-project-location-name-of-revit-links-in-revit-links-inception-like-question

import clr
# clr.AddReference loads and imports .net assembly(dll) as python module
# load RevitAPI.dll and RevitServices.dll
clr.AddReference("RevitAPI")
clr.AddReference("RevitServices")
# import filtered element collector and revit link instance classes
from Autodesk.Revit.DB import FilteredElementCollector, RevitLinkInstance
# import document manager
from RevitServices.Persistence import DocumentManager
# collect link documents from current document
link_docs = UnwrapElement(IN[0])
#rvtLinks = link_docs.ToElements()
ProjectLocation = []
#Queries

for i in link_docs :
projloc = i.GetLinkDocument().ActiveProjectLocation.Name

#Append Output Lists    
ProjectLocation.Add(projloc)

OUT = ProjectLocation
  1. 是否可以获取C RevitLinkInstances的 ActiveProjectLocation.Name?
  2. 我可以在不后台打开文件的情况下获取多少信息@ C 级别?
  3. 是 API 限制还是文件数据存储限制?

我看到这个问题已经在 dynamobim 论坛线程中深入讨论了在 Revit 链接中获取 Revit 链接的项目位置名称。

据我所知,Brendan_Cassidy在该线程中的初始答案是完全准确的:

  • 您基本上需要将每个链接作为其自己的文档获取,然后从该链接文档中获取这些Revit链接。我认为这篇文章将帮助您实现目标...

我建议您遵循他的建议,并递归地将每个链接作为单独的文档打开,以从那里检索所需的信息。

最新更新