怎么在AutoCAD。net中禁止图元被删除

  介绍

怎么在AutoCAD。net中禁止图元被删除?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1,命令AddEraseOverrule创建两个图元并禁止被删除。
2,命令RemoveEraseOverrule移除删除限制。

static  EraseOverrule  eraseRule =,空;      public  class  EraseOverrule : ObjectOverrule   {   ,public  override  void 消除(DBObject  dbObject, bool 擦除)   ,{   throw 才能;new  Autodesk.AutoCAD.Runtime.Exception (   ,,,Autodesk.AutoCAD.Runtime.ErrorStatus.NotApplicable);//base.Erase才能(dbObject,,抹去);   ,}   }      [CommandMethod (“AddEraseOverrule"))   public  static  void  AddEraseOverrule ()   {   ,if  (eraseRule ==, null)   ,{   时间=eraseRule 才能;new  EraseOverrule ();   Overrule.AddOverrule才能(RXObject.GetClass (typeof(实体)),   ,,,,,,,,,eraseRule真实);   Overrule.Overruling =,才能正确;      eraseRule.SetIdFilter才能(createentity ());   ,}   }      [CommandMethod (“RemoveEraseOverrule"))   public  static  void  RemoveEraseOverrule ()   {   ,if  (eraseRule  !=, null)   ,{   时间=Overrule.Overruling 才能;假;   Overrule.RemoveOverrule才能(RXObject.GetClass (typeof(实体)),   ,,,,,,,eraseRule);   eraseRule.Dispose才能();   时间=eraseRule 才能;零;   ,}   }      private  static  ObjectId [], createentity ()   {   ,Document  doc =, Application.DocumentManager.MdiActiveDocument;   ,Database  db =, doc.Database;      ,ObjectId [] oids =, new  ObjectId [2];   ,using  (Transaction  tr =, db.TransactionManager.StartTransaction ())   ,{   BlockTableRecord 才能;space =, tr.GetObject (db.CurrentSpaceId, OpenMode.ForWrite), as  BlockTableRecord;      ,//Line 才能;Line =, new 线();   line.StartPoint 才能=,new  Point3d (0, 0, 0);   时间=line.EndPoint 才能;new  Point3d (100,, 100,, 0);   space.AppendEntity才能(线);   tr.AddNewlyCreatedDBObject才能(线,,真的);      oid才能[0],=,line.ObjectId;      ,//Circle 才能;Circle =, new 圆();   circle.Center 才能=,new  Point3d (0, 0, 0);   50=circle.Radius 才能;;   space.AppendEntity才能(圆);   tr.AddNewlyCreatedDBObject才能(圆,,真的);      oid才能[1],=,circle.ObjectId;      tr.Commit才能();   ,}      ,return  oid;   }

1,类EraseOverrule继承自ObjectOverrule,并重写了擦除方法。
在该方法中,通过抛异常而不是执行删除操作,禁止图元被删除。

2, SetIdFilter确保该规则只对特定ObjectId的图元有效。
ObjectOverrule还有方法SetXDataFilter,可以用来设置只对拥有特定XData的对象有效。


看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

怎么在AutoCAD。net中禁止图元被删除