using System.Collections.Generic;
using System.IO;
using System.Linq;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.DB;
namespace RevitLess
{
public class RevitHelper
{
///
/// 获取指定三维视图
///
/// 文档
/// 指定视图名称
///
public static View3D GetView3D(Document document, string viewName)
{
var filter = new FilteredElementCollector(document).OfClass(typeof(View3D)).Cast();
return filter.FirstOrDefault(x => x.Name == viewName && !x.IsTemplate);
}
///
/// 获取默认三维视图
///
/// 文档
///
public static View3D GetView3D(Document document)
{
if (document.ActiveView is View3D view3D && !view3D.IsPerspective && view3D.CanBePrinted && !view3D.IsTemplate)
{
return view3D;
}
var filter = new FilteredElementCollector(document).OfClass(typeof(View3D)).Cast();
return filter.FirstOrDefault(v => !v.IsTemplate);
}
///
/// 使用默认样板创建文档
///
///
public static Document CreateNewDocument(Application application)
{
var projectTemplate = application.DefaultProjectTemplate;
if (!File.Exists(projectTemplate))
{
throw new FileNotFoundException("默认项目路径不存在 , 请指定 !");
}
var document = application.NewProjectDocument(projectTemplate);
return document;
}
public static IList GetElements(Document doc)
{
FilteredElementCollector collector = new FilteredElementCollector(doc).OfClass(typeof(T));
return collector.ToElements();
}
public static IList GetElementsWithView(View3D view)
{
FilteredElementCollector collector = new FilteredElementCollector(view.Document, view.Id);
return collector.ToElements();
}
}
}