天天看点

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

private void Test()
        {
            // 获取当前文档和数据库
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acCurDb = acDoc.Database;
            Editor ed = acDoc.Editor;

            //启动事务
            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
            {
                //使用选择过滤器定义选择集规则
                TypedValue[] typedValue = new TypedValue[1];
                //TestLayer为图层名字 DxfCode.LayerName为筛选类型   详情见下面的DXF组码
                typedValue.SetValue(new TypedValue((int)DxfCode.LayerName, "TestLayer"), 0);
                SelectionFilter filter = new SelectionFilter(typedValue);

                //根据条件 选择当前空间内所有未锁定及未冻结的对象。
                //从图形中选择对象有几种方式,详情见下表
                PromptSelectionResult result = ed.SelectAll(filter);

                // 如果提示状态OK,表示已选择到对象 反之则没有对象
                if (result.Status != PromptStatus.OK) { return; }

                SelectionSet acSSet = result.Value;

                // 遍历选择集内的对象
                foreach (ObjectId id in acSSet.GetObjectIds())
                {
                    Entity hatchobj = acTrans.GetObject(id, OpenMode.ForWrite) as Entity;
                    hatchobj.Erase();//删除
                }
                acTrans.Commit();
            }
        }
           

常见过滤器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 :选择围栏里面的对象,并将其添加到活动选择集。提示选择屏幕上的对象并遍历选择集