欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Revit二次开发示例:DeleteObject

发布时间:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Revit二次开发示例:DeleteObject 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在本例中,通过命令可以删除选中的元素。

需要注意的是要在代码中加入Transaction,否则的话会出现Modifying  is forbidden because the document has no open transaction的错误。

 

#region Namespaces using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.UI.Selection; #endregionnamespace DeleteObject {[Autodesk.Revit.Attributes.Transaction(TransactionMode.Manual)][Autodesk.Revit.Attributes.Regeneration(RegenerationOption.Manual)][Autodesk.Revit.Attributes.Journaling(JournalingMode.NoCommandData)]public class Command : IExternalCommand{public Result Execute(ExternalCommandData commandData,ref string message,ElementSet elements){UIApplication revit = commandData.Application;ElementSet collection = revit.ActiveUIDocument.Selection.Elements;if (collection.Size < 1){message = "Plase select object(s) before delete.";return Result.Cancelled;}bool error = true;try{error = true;IEnumerator e = collection.GetEnumerator();Transaction transactoin = new Transaction(commandData.Application.ActiveUIDocument.Document, "DeleteObject");transactoin.Start();bool MoreValue = e.MoveNext();while (MoreValue){Element component = e.Current as Element;revit.ActiveUIDocument.Document.Delete(component.Id);MoreValue = e.MoveNext();}transactoin.Commit();error = false;}catch (Exception){foreach (Element c in collection){elements.Insert(c);}message = "object(s) can't be deleted.";return Result.Failed;}finally{if (error){TaskDialog.Show("Error", "Delete failed.");}}return Result.Succeeded;}} }

转载于:https://www.cnblogs.com/xpvincent/p/3605574.html

总结

以上是生活随笔为你收集整理的Revit二次开发示例:DeleteObject的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。