bootstrap 工厂模式 curl outlook automation background vue响应式布局 录音棚设备一套多少钱 android富文本框架 excel被保护怎么解除 less比较级 div字体加粗 idea批量替换快捷键 python的数据类型 python3基础教程 python教程 python开发工具 python变量类型 python获取字典的值 python中集合 python服务器开发 java中的string java8时间 java特性 局域网助手 迷宫解锁 高效能人士的七个习惯pdf 相关软件 js删除节点 pr缩放 sim卡注册失败 flash制作工具 识别音乐的软件 god2iso js小数点保留2位 python数组赋值 apihook jquery手册 安卓游戏辅助 dnf选择角色卡死
当前位置: 首页 > 学习教程  > 编程学习

C#ObjectArx Cad删除实体

2021/1/9 1:53:30 文章标签: cad图层无法删除

/// <summary>/// 删除当前模型空间上的实体。/// </summary>/// <param name"entityID">实体ID</param>/// <returns>true&#xff1a;成功 false&#xff1a;失败</returns>public static bool DelEntity(){try{Document doc …

        /// <summary>
        /// 删除当前模型空间上的实体。
        /// </summary>
        /// <param name="entityID">实体ID</param>
        /// <returns>true:成功 false:失败</returns>
        public static bool DelEntity()
        {
            try
            {
                Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.CurrentDocument;

                using (DocumentLock docLock = doc.LockDocument())
                using (Database db = HostApplicationServices.WorkingDatabase)
                {

                    using (Transaction trans = db.TransactionManager.StartTransaction())
                    {

                        //获取块表
                        BlockTable bt = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForRead));

                        CadProjectInfo.IsManagerDelete = true;//管理员删除

                        using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite))
                        {

                            CadProjectInfo.keysLine.Clear();//清空管线集合

                            CadProjectInfo.keysLineLabel.Clear();//清空管线标注集合

                            CadProjectInfo.keysPoint.Clear();//清空管点集合

                            CadProjectInfo.keysPointLabel.Clear();//清空管点标注集合

                            CadProjectInfo.keysSparePoint.Clear();//清空多于点集合

                            CadProjectInfo.keysSparePointLabel.Clear();//清空多余点标注集合

                            CadProjectInfo.keysNoMeasurePoint.Clear();//清空未测管点集合

                            CadProjectInfo.keysNoMeasurePointLabel.Clear();//清空未测管点标注集合

                            CadProjectInfo.PipePointTagModes.Clear();//清空管点标注配置集合

                            CadProjectInfo.PipeLineTagModes.Clear();//清空管线标注配置集合

                            ///上篇文件有讲到GetEntitiesInModelSpace()
                            foreach (ObjectId id in GetEntitiesInModelSpace())
                            {
                                Entity entity = (Entity)trans.GetObject(id, OpenMode.ForWrite, true);

                                if (entity == null || entity.IsErased == true || entity is ProxyEntity)
                                {
                                    continue;
                                }

                                entity.Erase(true);
                            }

                        }
                        trans.Commit();


                        CadProjectInfo.IsManagerDelete = false;//设置非管理员操作删除
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            return true;
        }

        /// <summary>
        /// 删除多个实体。
        /// 删除当前模型空间上的实体。
        /// </summary>
        /// <param name="entityID">实体ID</param>
        /// <returns>true:成功 false:失败</returns>
        public static bool DelEntity(List<ObjectId> ids)
        {
            try
            {
                Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.CurrentDocument;

                using (DocumentLock docLock = doc.LockDocument())
                using (Database db = HostApplicationServices.WorkingDatabase)
                {

                    using (Transaction trans = db.TransactionManager.StartTransaction())
                    {

                        //获取块表
                        BlockTable bt = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForRead));

                        CadProjectInfo.IsManagerDelete = true;//管理员删除

                        using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite))
                        {

                            foreach (ObjectId id in ids)
                            {
                                Entity entity = (Entity)trans.GetObject(id, OpenMode.ForWrite, true);

                                if (entity == null || entity.IsErased == true || entity is ProxyEntity)
                                {
                                    continue;
                                }

                                entity.Erase(true);
                            }

                        }
                        trans.Commit();


                        CadProjectInfo.IsManagerDelete = false;//设置非管理员操作删除
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            return true;
        }

 

 

本文链接: http://www.dtmao.cc/news_show_1100051.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?