如何在C#宏中从Revit卸载所有链接(Revit、CAD、点云、IFC)
我需要从Revit文件中批量卸载所有链接类型。到目前为止,我找到了处理Revit链接的代码,这要感谢如何在C#宏中从Revit卸载所有链接(Revit、CAD、点云、IFC),c#,revit,C#,Revit,我需要从Revit文件中批量卸载所有链接类型。到目前为止,我找到了处理Revit链接的代码,这要感谢 //卸载所有链接 var loadexternalfilesref=new List(); var collector=newfilteredelementcollector(文档); 类的收集器中的元素(typeof(RevitLinkType))) { ExternalFileReference extFileRef=element.GetExternalFileReference();
//卸载所有链接
var loadexternalfilesref=new List();
var collector=newfilteredelementcollector(文档);
类的收集器中的元素(typeof(RevitLinkType)))
{
ExternalFileReference extFileRef=element.GetExternalFileReference();
if(null==extFileRef | | extFileRef.GetLinkedFileStatus()!=LinkedFileStatus.Loaded)
继续;
var revitLinkType=(revitLinkType)元素;
loadedExternalFilesRef.Add(RevitLink类型);
revitLinkType.Unload(空);
}
我还需要注意所有链接,包括CAD、IFC、Pointcloud
Revit API似乎不允许对CADlinktype使用相同的功能
请给出建议,并感谢您的帮助 我实现了一个删除DWF链接的解决方案,
CmdRemoveDwfLinks
。它在中作为外部命令提供。在上的讨论中,Building Coder博客提供了该命令的完整文档,其中包括大量的背景信息和研究,这些信息和研究可能会帮助您处理其他链接类型。祝你好运
// Unload all links
var loadedExternalFilesRef = new List<RevitLinkType>();
var collector = new FilteredElementCollector(document);
foreach (Element element in collector.OfClass(typeof(RevitLinkType)))
{
ExternalFileReference extFileRef = element.GetExternalFileReference();
if (null == extFileRef || extFileRef.GetLinkedFileStatus() != LinkedFileStatus.Loaded)
continue;
var revitLinkType = (RevitLinkType)element;
loadedExternalFilesRef.Add(revitLinkType);
revitLinkType.Unload(null);
}