📜  获取链接元素 revit api - C# (1)

📅  最后修改于: 2023-12-03 15:41:31.107000             🧑  作者: Mango

获取链接元素 Revit API - C#

在 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,也就是链接元素。

最后,我们使用 WherePassesWhereElementIsNotElementType 方法进一步过滤出链接元素,并将它们添加到 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 方法将路径转换为用户可见路径。

结论

通过使用 FilteredElementCollectorElementMulticategoryFilter,我们可以轻松地过滤出链接元素,并通过 RevitLinkInstance 类获取链接元素的名称和路径。这些都是使用 Revit API 在 C# 中获取链接元素信息的常用方法。