国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普定县| 岫岩| 象州县| 武强县| 安丘市| 三江| 且末县| 武汉市| 海淀区| 稷山县| 伊通| 安泽县| 兴仁县| 二手房| 满洲里市| 逊克县| 宿迁市| 三江| 宁波市| 中阳县| 长寿区| 前郭尔| 嵊州市| 光山县| 琼结县| 唐海县| 和平县| 鄂伦春自治旗| 江华| 蛟河市| 香格里拉县| 喜德县| 南华县| 泰和县| 临西县| 淮安市| 海盐县| 临沭县| 安陆市| 安陆市| 兴文县|