AUTOCAD二次开发-----删除一个图层里面的所有对象

[csharp]  view plain  copy
  1. private void Test()  
  2.         {  
  3.             // 获取当前文档和数据库  
  4.             Document acDoc = Application.DocumentManager.MdiActiveDocument;  
  5.             Database acCurDb = acDoc.Database;  
  6.             Editor ed = acDoc.Editor;  
  7.   
  8.             //启动事务  
  9.             using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())  
  10.             {  
  11.                 //使用选择过滤器定义选择集规则  
  12.                 TypedValue[] typedValue = new TypedValue[1];  
  13.                 //TestLayer为图层名字 DxfCode.LayerName为筛选类型   详情见下面的DXF组码  
  14.                 typedValue.SetValue(new TypedValue((int)DxfCode.LayerName, "TestLayer"), 0);  
  15.                 SelectionFilter filter = new SelectionFilter(typedValue);  
  16.   
  17.                 //根据条件 选择当前空间内所有未锁定及未冻结的对象。  
  18.                 //从图形中选择对象有几种方式,详情见下表  
  19.                 PromptSelectionResult result = ed.SelectAll(filter);  
  20.   
  21.                 // 如果提示状态OK,表示已选择到对象 反之则没有对象  
  22.                 if (result.Status != PromptStatus.OK) { return; }  
  23.   
  24.                 SelectionSet acSSet = result.Value;  
  25.   
  26.                 // 遍历选择集内的对象  
  27.                 foreach (ObjectId id in acSSet.GetObjectIds())  
  28.                 {  
  29.                     Entity hatchobj = acTrans.GetObject(id, OpenMode.ForWrite) as Entity;  
  30.                     hatchobj.Erase();//删除  
  31.                 }  
  32.                 acTrans.Commit();  
  33.             }  
  34.         }  

 

常见过滤器DXF组码:

DXF组码  过滤器类型
0 (或 DxfCode.Start)对象类型(字符串格式),例如“Line”、 “Circle”、 “Arc”等等
2 (或 DxfCode.BlockName)  块名(字符串格式),插入引用的块名
8 (或 DxfCode.LayerName)图层名(字符串格式),例如“Layer 0”
60 (或 DxfCode.Visibility)对象可见性(整型),0 = 可见, 1 = 不可见.
62 (或 DxfCode.Color)颜色号(整型),0~256数字索引值。0代表随块 BYBLOCK,
256代表随层BYLAYER,负值表示图层关闭 了。
67模型空间/图纸空间指示符(整型),0或忽略 = 模 型空间;1 = 图纸空间


从图形中选择对象的几种方式:

GetSelection  :提示用户从屏幕拾取对象。
SelectAll :选择当前空间内所有未锁定及未冻结的对象。
SelectCrossingPolygon :选择由给定点定义的多边形内的所有对象以及与多边形相交的对象。多边形可以是任意形状,但不能与自己交叉或接触。
SelectCrossingWindow :选择由两个点定义的窗口内的对象以及与窗口相交的对象。
SelectFence :选择与选择围栏相交的所有对象。围栏选择与多边形选择类似,所不同的是围栏不是封闭的,围栏同样不能与自己相交。
SelectLast :选择当前空间中最后创建的那个对象。
SelectPrevious :选择前一个“选择对象:”提示符期间已选定的所有对象。
SelectWindow :选择完全框入由两个点定义的矩形内的所有对象。
SelectWindowPolygon :选择完全框入由点定义的多边形内的对象。多边形可以是任意形状,但不能与自己交叉或接触。
SelectAtPoint :选择通过给定点的对象,并将其放入活动选择集。
SelectByPolygon :选择围栏里面的对象,并将其添加到活动选择集。提示选择屏幕上的对象并遍历选择集

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值