前言
本文对 Revit 链接做一个简单的笔记,以便日后可以查询。
下图中,RVT 和 IFC 都会出现在 Revit 链接的列表里面,他们是 RevitLinkType。而 DWG 及其它文件则不会,因为他们是 ImportInstance。
RVT
RevitLinkInstanceRevitLinkType在文件中创建一个链接文件的实例
加载文件,创建一个RevitLinkType
用这个RevitLinkType
创建一个实例,RevitLinkInstance
RevitLinkType
在文档 doc 里面加载一个链接文件。
public ElementId CreateRevitLink(Document doc, string pathName){FilePath path = new FilePath(pathName);RevitLinkOptions options = new RevitLinkOptions(false);// Create new revit link storing absolute path to a fileLinkLoadResult result = RevitLinkType.Create(doc, path, options);return (result.ElementId);}
RevitLinkInstance
在文档中创建这个 RevitLinkType 的实例。
public void CreateLinkInstances(Document doc, ElementId linkTypeId){// 在原点创建一个链接文件的实例// doc 是这个instance 最终会出现的那个文件// linkTypeId 是链接文件的类型RevitLinkInstance.Create(doc, linkTypeId);RevitLinkInstance instance2 = RevitLinkInstance.Create(doc, linkTypeId);Location location = instance2.Location;// Create a second instance of the link and offset it by 100 feet.location.Move(new XYZ(0, -100, 0));}
注意
通过 RevitLinkType 无法得到对应的链接文件在磁盘上的位置,反而需要用RevitLinkInstance.GetLinkDocument
得到对应的document
,然后找这个文档的PathName
。
IFC
加载 IFC 文件需要用RevitLinkType.CreateFromIFC
。它最后创建的也是 RevitLinkInstance。
DWG 及其它类型
通过Document.Import
来导入,并且不会显示在链接文件列表里面。
namespace Autodesk.Revit.DB{public class Document : IDisposable{// 导入相关接口public bool Import(string file, GBXMLImportOptions options);public bool Import(string file, ImageImportOptions options, View view, out Element element);public bool Import(string file, DGNImportOptions options, View pDBView, out ElementId elementId);public ElementId Import(string file, SKPImportOptions options, View pDBView);public bool Import(string file, DWGImportOptions options, View pDBView, out ElementId elementId);}}