Files
RevitArchive/RevitLess/RevitHelper.cs
2026-02-23 14:58:05 +08:00

65 lines
2.3 KiB
C#

using System.Collections.Generic;
using System.IO;
using System.Linq;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.DB;
namespace RevitLess
{
public class RevitHelper
{
/// <summary>
/// 获取指定三维视图
/// </summary>
/// <param name="document">文档</param>
/// <param name="viewName">指定视图名称</param>
/// <returns></returns>
public static View3D GetView3D(Document document, string viewName)
{
var filter = new FilteredElementCollector(document).OfClass(typeof(View3D)).Cast<View3D>();
return filter.FirstOrDefault(x => x.Name == viewName && !x.IsTemplate);
}
/// <summary>
/// 获取默认三维视图
/// </summary>
/// <param name="document">文档</param>
/// <returns></returns>
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<View3D>();
return filter.FirstOrDefault(v => !v.IsTemplate);
}
/// <summary>
/// 使用默认样板创建文档
/// </summary>
/// <returns></returns>
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<Element> GetElements<T>(Document doc)
{
FilteredElementCollector collector = new FilteredElementCollector(doc).OfClass(typeof(T));
return collector.ToElements();
}
public static IList<Element> GetElementsWithView(View3D view)
{
FilteredElementCollector collector = new FilteredElementCollector(view.Document, view.Id);
return collector.ToElements();
}
}
}