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(); } } }