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

需要注意的是要在代码中加入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相关推荐

  1. Revit二次开发示例:HelloRevit

    本示例实现Revit和Revit打开的文件的相关信息. #region Namespaces using System; using System.Collections.Generic; using ...

  2. Revit二次开发示例:DeleteDimensions

    在本例中,创建一个命令,实现删除所选中的尺寸标注. #region Namespaces using System; using System.Collections.Generic; using S ...

  3. Revit二次开发示例:APIAppStartup

    下面介绍一个在Revit启动和关闭时调用外部程序的例子. Revit调用的dll主程序: using System; using System.Collections.Generic; using S ...

  4. Revit二次开发示例:AutoUpdate

    在Revit打开文件时,修改文件信息.并记录状态,存到log文件中. #region Namespaces using System; using System.Collections.Generic ...

  5. Revit二次开发 获取模型截面线、截面轮廓

    描述 获取Revit模型的截面线.横切面线.截面轮廓. 用途 用于获取模型的截面线.横切面线.截面轮廓. 实现方式 创建视图平面: 从视图平面获取轮廓线: 获取平面标高处的截面线. 效果 示例 /// ...

  6. Revit二次开发从入门到精通学习之路, (含Revit二次开发教程下载)

    Revit二次开发从入门到精通学习之路 Autodesk Joe Ye叶雄进 2. 18 2014    yexiongjin@hotmail.com Revit在国内的应用越来越广泛, Revit ...

  7. 使用NSIS制作多版本Revit插件(Revit二次开发)

    因为VisualStudio中微软官方的程序打包工具,无法实现Revit多版本插件的制作,所以我选择了NSIS来制作多版本插件. 一.使用NSIS向导创建脚本 1.1.打开NSIS的VNISEdit( ...

  8. Revit二次开发—参数的读取与写入

    关注公众号及时获取文章更新 注:本文转自公众号:BIMCoder梁老师 一.前言 在Revit二次开发中,参数是非常重要的组成部分,那么我们该如何从构件获取参数并修改该参数. 二.方法 首先得到一个E ...

  9. Revit二次开发---关于CAD翻模第一步

    2019年6月6日,南京,暴雨. 笔者改善以前关于翻模的一些想法,以减少对翻模图纸的初步处理. 以前使用使用直接链接CAD的方法生成各种三维模型.链接进来的CAD图纸需要处理,且文字读取较为困难,故使 ...

最新文章

  1. 「吃鸡」之父自立门户!研发新沙盒游戏连接元宇宙
  2. 如何对.NET远程处理框架相关知识简介
  3. 记录一下PyQt5界面导入Python(绕开pyqt5-tools安装失败问题)
  4. 你是一个合格的数据分析师吗?教你如何提升自己的product sense?
  5. Groovy与Java集成常见的坑
  6. 吴恩达机器学习3——逻辑回归、正则化
  7. Cocos2d-js-v3.2 在 mac 上配置环境以及编译到 Andorid 的注意事项(转)
  8. 从0开始html前端页面开发_CSS设置图像圆角
  9. BUG(0):用某位表示特定属性
  10. opencv python 灰度化,opencv-python 图像灰度化
  11. 302重定向:302 Moved Temporarily
  12. Java编程入门基础知识合集
  13. Pokémon Army (easyversion) -每天一把CF - 20201007
  14. python 操作redis集群
  15. WebScoket 读取身份证号码
  16. java学习--装饰器设计模式
  17. 轮播图功能的全实现(自动播放、小点点、按住停止播放、放手后开始播放...)
  18. TOP 300 Freeware software!
  19. Java去掉文件中的逗号
  20. c语言第五章课后答案冯山,C语言 四川师范大学 信息与计算科学 冯山实验五.doc...

热门文章

  1. 从html导出带样式的excel,关于将HTML导出到Excel中时样式的问题
  2. 月薪5K的运维小白如何成为月薪5W的高级架构师?
  3. 100 个网络基础知识普及,看完成半个网络高手! 【厦门微思网络】
  4. Python中面向对象的讲解(3)
  5. linux如何使用vim显示行号语法高亮,(.vimrc简单使用)
  6. 计算机教学与课程论专业,东北师范大学专业介绍:计算机课程与教学论
  7. 小程序mysql+php测试,分享微信小程序的一些常见辅助测试功能:chance
  8. python画平行坐标图_Matplotlib中的平行坐标图
  9. win10组件服务计算机是红色的,KB4023057:Windows 10更新服务组件的更新
  10. ihtml2document能不能根据id获取dom_回到基础:什么是DOM及DOM操作?