Files
ShrlAlgoToolkit/RvAddinTest/DeleteCmd.cs
2024-12-22 10:26:12 +08:00

105 lines
3.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Reflection;
using System.Windows;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Plumbing;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using Sai.Toolkit.Revit.Assist;
namespace RvAddinTest;
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class DeleteCmd : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
//程序UI界面
var uiapp = commandData.Application;
//获取元素(选择) 显示元素 视图(活动视图)管理(对象)
var uidoc = uiapp.ActiveUIDocument;
//程序
var app = uiapp.Application;
//获取位置和场地 视图(多个视图)管理 获取元素Revit 项目里的全部元素)
var doc = uidoc.Document;
//获取所有打开文档
var docset = uiapp.Application.Documents;
//当前视图
var view = doc.ActiveView;
#region FilterExecute
//if (doc.IsFamilyDocument)
//{
// var manager = doc.FamilyManager;
// using (var trans = new Transaction(doc, "default"))
// {
// try
// {
// trans.Start();
// var param = manager.AddParameter(
// "测试",
// BuiltInParameterGroup.PG_ADSK_MODEL_PROPERTIES,
// ParameterType.Number,
// true);
// trans.Commit();
// }
// catch (Exception ex)
// {
// throw ex;
// }
// }
//}
var docType = doc.GetType();
var method = docType.GetMethod("GetUnusedFamilies", BindingFlags.NonPublic | BindingFlags.Instance);
if (method != null)
{
var unusedFamilyIds = method.Invoke(doc, null) as ISet<ElementId>;
using (var trans = new Transaction(doc, nameof(DeleteCmd)))
{
trans.Start();
//foreach (var id in unusedFamilyIds)
//{
// doc.Delete(id);
//}
MessageBox.Show(unusedFamilyIds.Count.ToString());
trans.Commit();
}
}
//var instances = new FilteredElementCollector(doc).OfClass(typeof(Pipe)).ToElements();
//using (Transaction trans = new Transaction(doc, "default"))
//{
// try
// {
// trans.Start();
// var ids = new List<ElementId>();
// foreach (Pipe pipe in instances)
// {
// if (Math.Abs(pipe.Diameter - 32 / 304.8) < 10E-5)
// {
// ids.Add(pipe.Id);
// }
// }
// //doc.Delete(ids);
// uidoc.Selection.SetElementIds(ids);
// //Do Something.
// trans.Commit();
// }
// catch (Exception ex)
// {
// message = ex.Message;
// if (trans.GetStatus() == TransactionStatus.Started)
// {
// trans.RollBack();
// }
// return Result.Failed;
// }
//}
#endregion FilterExecute
return Result.Succeeded;
}
}