public static class DocumentExtensions
{
public static IEnumerable<Document> GetLinkedDocuments(this Document document)
{
var linkedfiles = GetLinkedFileReferences(document);
var linkedFileNames = linkedfiles
.Select(x => ModelPathUtils.ConvertModelPathToUserVisiblePath(x.GetAbsolutePath()))
.ToList();
return document.Application.Documents
.Cast<Document>()
.Where(doc => linkedFileNames
.Any(fileName => doc.PathName.Equals(fileName)));
}
public static IEnumerable<RevitLinkInstance> GetRevitLinkInstances(this Document document)
{
var collector = new FilteredElementCollector(document);
var linkInstances = collector.WherePasses(RevitLinkInstanceExtensions.GetDocumentRevitLinksInstancesFilter());
return linkInstances
.OfType<RevitLinkInstance>();
}
private static IEnumerable<ExternalFileReference> GetLinkedFileReferences(Document document)
{
var collector = new FilteredElementCollector(document);
var linkedElements = collector
.OfClass(typeof(RevitLinkType))
.Where(x => RevitLinkType.IsLoaded(document, x.Id))
.Select(x => x.GetExternalFileReference())
.ToList();
return linkedElements;
}
}