明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2724|回复: 7

[基础] 请问如何删除图层中的所有实体?

  [复制链接]
发表于 2010-12-21 19:17 | 显示全部楼层 |阅读模式
例如当前图层中有直线,圆、多段线等,该如何将所有的都删除?不需要用户交互?
 楼主| 发表于 2010-12-21 21:54 | 显示全部楼层
回复 chpmould 的帖子

你把GetSelection()方法传递一个过滤器啊
回复 支持 1 反对 0

使用道具 举报

发表于 2010-12-21 19:52 | 显示全部楼层
以前用LISP的时候,我是先获取实体的图层进行判断再删除,至于C#我也想学习一下,希望高手写个事例作为练习...
 楼主| 发表于 2010-12-21 20:21 | 显示全部楼层
回复 chpmould 的帖子

已搞定,主要是我被C#给影响了,C#中foreach是不能修改被遍历的对象的,但是这里居然可以!下面是代码:
  1. [CommandMethod("test")]
  2. public void test()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     Database db = doc.Database;
  6.     Editor ed = doc.Editor;
  7.     ed.CurrentUserCoordinateSystem = Matrix3d.Identity;
  8.     Transaction trans = db.TransactionManager.StartTransaction();
  9.     PromptSelectionResult psr = ed.SelectAll();
  10.     SelectionSet ss = psr.Value;
  11.     foreach (SelectedObject so in ss)
  12.     {
  13.         Entity ent = trans.GetObject(so.ObjectId, OpenMode.ForWrite) as Entity;
  14.         ent.Erase(true);
  15.     }
  16.     trans.Commit();
  17.     trans.Dispose();
  18. }
复制代码
发表于 2010-12-21 20:40 | 显示全部楼层
这是删除所有对象啊...
如何实现删除选择实体进行图层过滤的对象...比喻只删除选择中的TXT层
发表于 2010-12-21 20:56 | 显示全部楼层
增加过滤器selectfilter
发表于 2010-12-21 22:01 | 显示全部楼层
foreach是不能给被遍历的对象赋值,而不是不能修改
你这里涉及的也没有对被遍历的对象即Id,而是Id对应的Entity
发表于 2010-12-21 22:10 | 显示全部楼层
如果不用选择过滤器, 能否按选则对象进行遍历的对象Id获取啊...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 20:00 , Processed in 1.023405 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表