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

本文介绍如何使用AutoCAD API通过C#代码实现批量删除特定图层上的所有对象,包括启动事务、定义选择过滤器、选择对象及删除过程。

https://blog.youkuaiyun.com/aasswwe/article/details/40899759

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();
            }
        }

 

转载于:https://www.cnblogs.com/belx/p/9256326.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值