auto CAD .NET二次开发之 添加,删除实体(entity)

本文介绍了一种在CAD中添加和删除实体的方法,包括添加单个实体、批量添加实体及删除实体的具体实现步骤。该方法适用于.NET程序员使用CAD进行开发。

个人感觉添加删除实体这个方法比较水。只要是操作过CAD的.NET程序员都是小菜一碟。不过在这里还是赘述一下。呵呵

添加实体的核心代码只有两句:
                                objId = btr.AppendEntity(entity);
                                trans.AddNewlyCreatedDBObject(entity, true);

删除实体的核心代码只有一句:

   entity.Erase(true);

具体实现方法如下:

 #region "添加实体"
        /// <summary>
        /// 添加实体。
        /// 将实体添加到当前模型空间上。
        /// </summary>
        /// <param name="entityID">实体ID</param>
        /// <returns>true:成功 false:失败</returns>
        public bool AddEntity(Entity entity, out ObjectId objId)
        {
            //返回结果id
            objId = ObjectId.Null;
            try
            {
          
                using (Database db = HostApplicationServices.WorkingDatabase)
                {
                  
                    using (Transaction trans = db.TransactionManager.StartTransaction())
                    {
                      
                        using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite))
                        {
                            
                            objId = btr.AppendEntity(entity);
                            trans.AddNewlyCreatedDBObject(entity, true);
                        }
                        
                        trans.Commit();
                    }
                }
            }
            catch
            {
              
                return false;
            }
            return true;
        }

        /// <summary>
        /// 添加实体。
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public bool AddEntity(Entity entity)
        {
            //返回结果id
            ObjectId objId = ObjectId.Null;
            try
            {
                using (DocumentLock docLock = Application.DocumentManager.MdiActiveDocument.LockDocument())
                {
               
                    using (Database db = HostApplicationServices.WorkingDatabase)
                    {
                    
                        using (Transaction trans = db.TransactionManager.StartTransaction())
                        {
                         
                            using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite))
                            {
                            
                                objId = btr.AppendEntity(entity);
                                trans.AddNewlyCreatedDBObject(entity, true);
                            }
                         
                            trans.Commit();
                        }
                    }
                }
            }
            catch
            {
                //添加失败
                return false;
            }
            return true;
        }
        #endregion
        #endregion

        #region "添加实体(多个)"
        /// <summary>
        /// 添加实体。
        /// 将实体添加到当前模型空间上。
        /// </summary>
        /// <param name="entityID">实体ID</param>
        /// <returns>true:成功 false:失败</returns>
        public bool AddEntity(Entity[] ents, out ObjectIdCollection objId)
        {
          
            objId = new ObjectIdCollection();
            try
            {
            
                using (Database db = HostApplicationServices.WorkingDatabase)
                {
                 
                    using (Transaction trans = db.TransactionManager.StartTransaction())
                    {
                      
                        using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite))
                        {
                            foreach (Entity ent in ents)
                            {
                             
                                objId.Add(btr.AppendEntity(ent));
                                trans.AddNewlyCreatedDBObject(ent, true);
                            }
                        }
                    
                        trans.Commit();
                    }
                }
            }
            catch
            {
            
                return false;
            }
            return true;
        }
        #endregion

        #region "删除实体"
        /// <summary>
        /// 删除实体。
        /// 删除当前模型空间上的实体。
        /// </summary>
        /// <param name="id">实体ID</param>
        /// <returns>true:成功 false:失败</returns>
        public bool DelEntity(ObjectId id)
        {
            try
            {
                
                if (!id.IsNull)
                {
                 
                    using (Database db = HostApplicationServices.WorkingDatabase)
                    {
                     
                        using (Transaction trans = db.TransactionManager.StartTransaction())
                        {
                          
                            Entity entity = (Entity)trans.GetObject(id, OpenMode.ForWrite, true);
                        
                            entity.Erase(true);
                          
                            trans.Commit();
                        }
                    }
                }
                else
                {
                    return false;
                }
            }
            catch
            {
            
                return false;
            }
            return true;
        }
        #endregion

        #region "删除实体"
        /// <summary>
        /// 删除实体。
        /// 删除当前模型空间上的实体。
        /// </summary>
        /// <param name="entityID">实体ID</param>
        /// <returns>true:成功 false:失败</returns>
        public bool DelEntity(ObjectIdCollection ids)
        {
            try
            {
            
                using (Database db = HostApplicationServices.WorkingDatabase)
                {
                
                    using (Transaction trans = db.TransactionManager.StartTransaction())
                    {
                    
                        using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, 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();
                    }
                }
            }
            catch
            {
                return false;
            }
            return true;
        }
        #endregion

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值