AutoCAD.Net/C#.Net QQ群:193522571 删除编组(group) 尺寸线(dimension)

 

        public void deleteDimension()
        {
            //定义数据库
            Database db = HostApplicationServices.WorkingDatabase;
            //获取当前文件
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            //获取当前命令行对象
            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;

            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                #region 删除组
                //定义组字典
                DBDictionary groupDict = (DBDictionary)db.GroupDictionaryId.GetObject(OpenMode.ForRead);
                //在组字典中搜索满足条件的组对象
                foreach (DictionaryEntry ide in groupDict)
                {
                    //获取组对象
                    acadGroup partGroup = (acadGroup)trans.GetObject((ObjectId)ide.Value, OpenMode.ForRead);
                    //对于组名包含"PART-"或匿名组中包含实体数量为2的组进行删除动作
                    if (partGroup.Name.Contains("PART-") || (partGroup.IsAnonymous && partGroup.NumEntities == 2))
                    {
                        //先删除组中的对象再删除组,直接删除组的话只是将组打散而已
                        foreach (ObjectId id in partGroup.GetAllEntityIds())
                        {
                            Entity ent = (Entity)id.GetObject(OpenMode.ForWrite);
                            ent.Erase();
                            ent.Dispose();
                        }
                        partGroup.UpgradeOpen();
                        partGroup.Erase(true);
                        partGroup.DowngradeOpen();
                    }
                }
                #endregion 删除组
                #region 删除尺寸线
                TypedValueList values = new TypedValueList();
                values.Add(0, typeof(Dimension).Name);
                SelectionFilter filter = new SelectionFilter(values);
                PromptSelectionResult psr = ed.SelectAll(filter);
                if (psr.Status == PromptStatus.OK)
                {
                    //Application.ShowAlertDialog(string.Format("被选中的尺寸线有{0}个!", psr.Value.Count));
                    foreach (ObjectId id in psr.Value.GetObjectIds())
                    {
                        Entity ent = (Dimension)id.GetObject(OpenMode.ForWrite);
                        ent.Erase();
                        ent.Dispose();
                    }
                }
                #endregion 删除尺寸线
                trans.Commit();
            }
        }

 

 

转载于:https://www.cnblogs.com/swtool/p/3810009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值