cdinten 发表于 2010-12-21 19:17:46

请问如何删除图层中的所有实体?

例如当前图层中有直线,圆、多段线等,该如何将所有的都删除?不需要用户交互?

cdinten 发表于 2010-12-21 21:54:52

回复 chpmould 的帖子

你把GetSelection()方法传递一个过滤器啊

chpmould 发表于 2010-12-21 19:52:14

以前用LISP的时候,我是先获取实体的图层进行判断再删除,至于C#我也想学习一下,希望高手写个事例作为练习...

cdinten 发表于 2010-12-21 20:21:48

回复 chpmould 的帖子

已搞定,主要是我被C#给影响了,C#中foreach是不能修改被遍历的对象的,但是这里居然可以!下面是代码:
public void test()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;
    Editor ed = doc.Editor;
    ed.CurrentUserCoordinateSystem = Matrix3d.Identity;
    Transaction trans = db.TransactionManager.StartTransaction();
    PromptSelectionResult psr = ed.SelectAll();
    SelectionSet ss = psr.Value;
    foreach (SelectedObject so in ss)
    {
      Entity ent = trans.GetObject(so.ObjectId, OpenMode.ForWrite) as Entity;
      ent.Erase(true);
    }
    trans.Commit();
    trans.Dispose();
}

chpmould 发表于 2010-12-21 20:40:06

这是删除所有对象啊...
如何实现删除选择实体进行图层过滤的对象...比喻只删除选择中的TXT层

sailorcwx 发表于 2010-12-21 20:56:26

增加过滤器selectfilter

雪山飞狐_lzh 发表于 2010-12-21 22:01:32

foreach是不能给被遍历的对象赋值,而不是不能修改
你这里涉及的也没有对被遍历的对象即Id,而是Id对应的Entity

chpmould 发表于 2010-12-21 22:10:46

如果不用选择过滤器, 能否按选则对象进行遍历的对象Id获取啊...
页: [1]
查看完整版本: 请问如何删除图层中的所有实体?