# Revit链接文件中的操作
链接磁盘上的文件
private void LinkRvt(Document doc, string filePath) {
using(var trans=new Transaction(doc))
{
trans.Start("链接文件");
FilePath path = new FilePath(filePath);
RevitLinkOptions options = new RevitLinkOptions(false);
LinkLoadResult result = RevitLinkType.Create(doc, path, options);
var instance= RevitLinkInstance.Create(doc, result.ElementId);
trans.Commit();
}
}
判断链接文件的状态
private LinkedFileStatus GetLinkFileState(RevitLinkType type) {
return type.GetLinkedFileStatus();
}
卸载已经链接的文件
private void UnLoadLinkFile(RevitLinkType type) {
//需要传一个回调函数
type.Unload(new Callback());
}
public class Callback : ISaveSharedCoordinatesCallback {
public SaveModifiedLinksOptions GetSaveModifiedLinksOption(RevitLinkType link) {
return SaveModifiedLinksOptions.DoNotSaveLinks;
}
}
重新设置路径找不到的链接的路径
to do
编辑链接文件
结论:理论上做不到编辑链接文件,会报错。但是有一个迂回的方法:
- 先卸载链接文件
- 修改该文件,并保存
- 重新链接进来
亮显链接文件中的元素
先说结论:没办法亮显链接文件中的元素。下面的代码可以正常运行,但是没有亮显的效果
private void HighLightLinkElement() {
var reff = _uidoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element);
var elem = _doc.GetElement(reff) as RevitLinkInstance;
if (elem != null) {
var doc = elem.GetLinkDocument();
var elems = new FilteredElementCollector(doc).OfClass(typeof(Wall)).ToList();
_uidoc.Selection.SetElementIds(elems.Select(x=>x.Id).ToList());
}
}