鎖定圖層是我們在AutoCAD經常需要用到的功能之一,在AutoCAD.net中,鎖定某個圖層的方法並不複雜,但是在實際使用的過程中,筆者發現鎖定圖層後,被鎖定的圖層並不能實現像AutoCAD內置命令能實現的淡顯的效果。鎖定某個圖層的方法比較簡單,其代碼如下: 1 public static voi... ...
鎖定圖層是我們在AutoCAD經常需要用到的功能之一,在AutoCAD.net中,鎖定某個圖層的方法並不複雜,但是在實際使用的過程中,筆者發現鎖定圖層後,被鎖定的圖層並不能實現像AutoCAD內置命令能實現的淡顯的效果。
鎖定某個圖層的方法比較簡單,其代碼如下:
1 public static void LockLayer(LayerTableRecord layer, Document doc) 2 { 3 using (var trans = doc.TransactionManager.StartTransaction()) 4 { 5 layer.UpgradeOpen(); 6 layer.IsLock = true; 7 trans.Commit(); 8 } 9 }
經測試發現,在圖層管理器圖層是鎖定了,但是模型空間中,對應被鎖定圖層的圖形卻並沒有實現鎖定後的淡顯效果。筆者推測需要重新生成一下圖形,故增加以下代碼重新生成圖形:
doc.Editor.Regen();
雖然圖層鎖定後會重新生成圖形,然而問題仍然沒有解決。重新生成後的圖形依舊保持未鎖定的顯示狀態。經查閱資料,居然需要重新設置一下圖層關閉狀態,就可以刷新顯示。增加的代碼如下:
layer.IsOff = layer.IsOff;
最終問題得以解決。完整代碼如下:
1 public static void LockLayer(LayerTableRecord layer, Document doc) 2 { 3 using (var trans = doc.TransactionManager.StartTransaction()) 4 { 5 layer.UpgradeOpen(); 6 layer.IsLock = true; 7 layer.IsOff = layer.IsOff;//刷新顯示 8 trans.Commit(); 9 doc.Editor.Regen(); 10 } 11 }