天天看點

AUTOCAD二次開發-----删除一個圖層裡面的所有對象

private void Test()
        {
            // 擷取目前文檔和資料庫
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acCurDb = acDoc.Database;
            Editor ed = acDoc.Editor;

            //啟動事務
            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
            {
                //使用選擇過濾器定義選擇集規則
                TypedValue[] typedValue = new TypedValue[1];
                //TestLayer為圖層名字 DxfCode.LayerName為篩選類型   詳情見下面的DXF組碼
                typedValue.SetValue(new TypedValue((int)DxfCode.LayerName, "TestLayer"), 0);
                SelectionFilter filter = new SelectionFilter(typedValue);

                //根據條件 選擇目前空間内所有未鎖定及未當機的對象。
                //從圖形中選擇對象有幾種方式,詳情見下表
                PromptSelectionResult result = ed.SelectAll(filter);

                // 如果提示狀态OK,表示已選擇到對象 反之則沒有對象
                if (result.Status != PromptStatus.OK) { return; }

                SelectionSet acSSet = result.Value;

                // 周遊選擇集内的對象
                foreach (ObjectId id in acSSet.GetObjectIds())
                {
                    Entity hatchobj = acTrans.GetObject(id, OpenMode.ForWrite) as Entity;
                    hatchobj.Erase();//删除
                }
                acTrans.Commit();
            }
        }
           

常見過濾器DXF組碼:

DXF組碼   過濾器類型
0 (或 DxfCode.Start) 對象類型(字元串格式),例如“Line”、 “Circle”、 “Arc”等等
2 (或 DxfCode.BlockName)   塊名(字元串格式),插入引用的塊名
8 (或 DxfCode.LayerName) 圖層名(字元串格式),例如“Layer 0”
60 (或 DxfCode.Visibility) 對象可見性(整型),0 = 可見, 1 = 不可見.
62 (或 DxfCode.Color)

顔色号(整型),0~256數字索引值。0代表随塊 BYBLOCK,

256代表随層BYLAYER,負值表示圖層關閉 了。

67 模型空間/圖紙空間訓示符(整型),0或忽略 = 模 型空間;1 = 圖紙空間

從圖形中選擇對象的幾種方式:

GetSelection  :提示使用者從螢幕拾取對象。

SelectAll :選擇目前空間内所有未鎖定及未當機的對象。

SelectCrossingPolygon :選擇由給定點定義的多邊形内的所有對象以及與多邊形相交的對象。多邊形可以是任意形狀,但不能與自己交叉或接觸。

SelectCrossingWindow :選擇由兩個點定義的視窗内的對象以及與視窗相交的對象。

SelectFence :選擇與選擇圍欄相交的所有對象。圍欄選擇與多邊形選擇類似,所不同的是圍欄不是封閉的,圍欄同樣不能與自己相交。

SelectLast :選擇目前空間中最後建立的那個對象。

SelectPrevious :選擇前一個“選擇對象:”提示符期間已標明的所有對象。

SelectWindow :選擇完全框入由兩個點定義的矩形内的所有對象。

SelectWindowPolygon :選擇完全框入由點定義的多邊形内的對象。多邊形可以是任意形狀,但不能與自己交叉或接觸。

SelectAtPoint :選擇通過給定點的對象,并将其放入活動選擇集。

SelectByPolygon :選擇圍欄裡面的對象,并将其添加到活動選擇集。提示選擇螢幕上的對象并周遊選擇集