using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Earthwork_Volumn
{
[Transaction(TransactionMode.Manual)]
[Journaling(JournalingMode.NoCommandData)]
[Regeneration(RegenerationOption.Manual)]
public class CalculationOfEarthwork : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = commandData.Application.ActiveUIDocument.Document;
UIApplication uiApp = commandData.Application;
Application app = uiApp.Application;
List<Reference> AllRef = uiDoc.Selection.PickObjects(ObjectType.Element, "选择所有模型").ToList();
//TaskDialog.Show("模型数量", AllRef.Count().ToString());
List<Element> AllEles = new List<Element>();
foreach (var item in AllRef)
{
Element element = doc.GetElement(item) as Element;
AllEles.Add(element);
}
//TaskDialog.Show("element数量", AllEle.Count().ToString());
//List<Element> foundations = new List<Element>();
//foreach (var item in AllEles)
//{
// if (item.Category.Name == "结构基础")
// foundations.Add(item);
//}
//TaskDialog.Show("foundation数量", foundations.Count().ToString());
//List<Element> floors = new List<Element>();
//foreach (var item in AllEles)
//{
// if (item.Category.Name == "楼板")
// floors.Add(item);
//}
//TaskDialog.Show("floors数量", floors.Count().ToString());
List<Element> foundations = new List<Element>();
foreach (var item in AllEles)
{
if (item.Category.Name == Category.GetCategory(doc, BuiltInCategory.OST_StructuralFoundation).Name)
foundations.Add(item);
}
TaskDialog.Show("foundation数量", foundations.Count().ToString());
List<Element> floors = new List<Element>();
foreach (var item in AllEles)
{
if (item.Category.Name == doc.Settings.Categories.get_Item(BuiltInCategory.OST_Floors).Name)
floors.Add(item);
}
TaskDialog.Show("floors数量", floors.Count().ToString());
return Result.Succeeded;
}
}
}
Revit 二次开发 筛选某种Category的Element
最新推荐文章于 2026-06-21 18:48:43 发布
本文介绍了一个使用Autodesk.RevitAPI的C#脚本,该脚本在Revit中执行,用于选择模型中的元素,统计结构基础和楼板的数量。

1629

被折叠的 条评论
为什么被折叠?



