国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

AutoCAD .Net禁止圖元被刪除的方法

2024-07-10 12:48:45
字體:
來源:轉載
供稿:網友

本文為大家分享了AutoCAD .Net禁止圖元被刪除的具體代碼,供大家參考,具體內容如下

禁止圖元被用戶刪除可以通過 ObjectOverrule 實現。

以下代碼:

1、命令 AddEraseOverrule 創建兩個圖元并禁止被刪除。
2、命令 RemoveEraseOverrule 移除刪除限制。

static EraseOverrule eraseRule = null;public class EraseOverrule : ObjectOverrule{ public override void Erase(DBObject dbObject, bool erasing) {  throw new Autodesk.AutoCAD.Runtime.Exception(    Autodesk.AutoCAD.Runtime.ErrorStatus.NotApplicable);  //base.Erase(dbObject, erasing); }}[CommandMethod("AddEraseOverrule")]public static void AddEraseOverrule(){ if (eraseRule == null) {  eraseRule = new EraseOverrule();  Overrule.AddOverrule(RXObject.GetClass(typeof(Entity)),        eraseRule, true);  Overrule.Overruling = true;  eraseRule.SetIdFilter(CreateEntities()); }}[CommandMethod("RemoveEraseOverrule")]public static void RemoveEraseOverrule(){ if (eraseRule != null) {  Overrule.Overruling = false;  Overrule.RemoveOverrule(RXObject.GetClass(typeof(Entity)),        eraseRule);  eraseRule.Dispose();  eraseRule = null; }}private static ObjectId[] CreateEntities(){ 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();  line.StartPoint = new Point3d(0, 0, 0);  line.EndPoint = new Point3d(100, 100, 0);  space.AppendEntity(line);  tr.AddNewlyCreatedDBObject(line, true);  oids[0] = line.ObjectId;  //  Circle circle = new Circle();  circle.Center = new Point3d(0, 0, 0);  circle.Radius = 50;  space.AppendEntity(circle);  tr.AddNewlyCreatedDBObject(circle, true);  oids[1] = circle.ObjectId;  tr.Commit(); } return oids;}

1、類 EraseOverrule 繼承自 ObjectOverrule,并重寫了 Erase 方法。
在該方法中,通過拋異常而不是執行刪除操作,禁止圖元被刪除。

2、SetIdFilter 確保該規則只對特定 ObjectId 的圖元有效。
ObjectOverrule 還有方法 SetXDataFilter,可以用來設置只對擁有特定 XData 的對象有效。

參考文章: Prevent deletion/erasing of entity

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海口市| 望谟县| 梁平县| 奉节县| 台州市| 策勒县| 安丘市| 五台县| 金阳县| 沈阳市| 神农架林区| 大同市| 永德县| 鹤山市| 八宿县| 双辽市| 宜宾县| 明光市| 常宁市| 田阳县| 桃源县| 大洼县| 故城县| 都兰县| 安陆市| 高要市| 壶关县| 林甸县| 石林| 灵宝市| 茌平县| 隆尧县| 宁陵县| 福贡县| 金山区| 昔阳县| 永靖县| 文山县| 太白县| 长沙县| 吐鲁番市|