private IEnumerable<RevitLinkType> GetLinkedFiles(Document doc)
{
ElementFilter categoryFilter = new ElementCategoryFilter(BuiltInCategory.OST_RvtLinks);
ElementFilter typeFilter = new ElementClassFilter(typeof(Instance));
ElementFilter logicalFilter = new LogicalAndFilter(categoryFilter, typeFilter);
FilteredElementCollector collector = new FilteredElementCollector(doc);
var linkedElements = collector
.OfClass(typeof(RevitLinkType))
.OfType<RevitLinkType>();
return linkedElements;
}
/// <summary>
/// Get revit documents linked with the document
/// </summary>
/// <returns></returns>
public List<Document> GetLinkedDocuments(Document doc)
{
var linkedFiles =
GetLinkedFiles(doc);
var linkedFileNames = linkedFiles.Select(x => x.Name)
.ToList();
var linkedDocuments = doc.Application.Documents
.Cast<Document>()
.Where(d => linkedFileNames
.Any(fileName => d.PathName.Contains(fileName)))
.ToList();
return linkedDocuments;
}