前言
本文对 Revit 链接做一个简单的笔记,以便日后可以查询。
下图中,RVT 和 IFC 都会出现在 Revit 链接的列表里面,他们是 RevitLinkType。而 DWG 及其它文件则不会,因为他们是 ImportInstance。
RVT
- RevitLinkInstance
- RevitLinkType
在文件中创建一个链接文件的实例
- 加载文件,创建一个
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 file
LinkLoadResult 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);
}
}