📅  最后修改于: 2023-12-03 15:41:31.107000             🧑  作者: Mango
在 Revit 中,当你要获取链接元素的信息时,你需要使用 Revit API。在 C# 中,可以使用 FilteredElementCollector
类和 ElementMulticategoryFilter
类来实现。
要获取链接元素,我们需要使用 FilteredElementCollector
类,并传递一个 ElementMulticategoryFilter
进行过滤。
下面是使用过滤器获取所有链接元素的代码片段:
// 获取所有链接元素
FilteredElementCollector collector = new FilteredElementCollector(doc);
ElementMulticategoryFilter filter = new ElementMulticategoryFilter(BuiltInCategory.OST_RvtLinks);
List<Element> links = collector.WherePasses(filter).WhereElementIsNotElementType().ToList();
在上面的代码片段中,我们首先创建了一个 FilteredElementCollector
实例,然后使用 ElementMulticategoryFilter
进行多类别过滤,过滤的类别是 OST_RvtLinks
,也就是链接元素。
最后,我们使用 WherePasses
和 WhereElementIsNotElementType
方法进一步过滤出链接元素,并将它们添加到 List<Element>
中。
要获取链接元素的名称和路径,我们可以使用 RevitLinkInstance
类。
下面是获取链接元素名称和路径的代码片段:
// 获取链接元素的名称和路径
foreach (Element link in links)
{
RevitLinkInstance linkInstance = link as RevitLinkInstance;
string linkName = linkInstance.Name;
ModelPath linkPath = linkInstance.GetLinkDocument().GetFilePath();
string linkPathString = ModelPathUtils.ConvertModelPathToUserVisiblePath(linkPath);
TaskDialog.Show("Link Info", $"Name: {linkName}\nPath: {linkPathString}");
}
在上面的代码片段中,我们首先遍历链接元素列表,并将元素转换为 RevitLinkInstance
类。
然后,我们使用 Name
属性获取链接元素的名称,并使用 GetLinkDocument
方法获取链接元素的文件路径,最后使用 ConvertModelPathToUserVisiblePath
方法将路径转换为用户可见路径。
通过使用 FilteredElementCollector
和 ElementMulticategoryFilter
,我们可以轻松地过滤出链接元素,并通过 RevitLinkInstance
类获取链接元素的名称和路径。这些都是使用 Revit API 在 C# 中获取链接元素信息的常用方法。