91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在AutoCAD .Net中禁止圖元被刪除

發布時間:2021-05-12 17:34:32 來源:億速云 閱讀:179 作者:Leah 欄目:開發技術

怎么在AutoCAD .Net中禁止圖元被刪除?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

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 的對象有效。


看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乳山市| 胶州市| 平凉市| 孝义市| 肥乡县| 金川县| 哈尔滨市| 双流县| 兴隆县| 新兴县| 沙河市| 紫金县| 合江县| 南澳县| 鹤峰县| 清远市| 永安市| 井冈山市| 衡山县| 永兴县| 屏南县| 北宁市| 鹤壁市| 太和县| 东乡| 略阳县| 贞丰县| 孟津县| 望都县| 景洪市| 资溪县| 达孜县| 敖汉旗| 即墨市| 玛多县| 武穴市| 噶尔县| 额济纳旗| 涪陵区| 印江| 固阳县|