解決鎖定圖層後不能淡顯的問題

鎖定圖層是咱們在AutoCAD常常須要用到的功能之一,在AutoCAD.net中,鎖定某個圖層的方法並不複雜,可是在實際使用的過程當中,筆者發現鎖定圖層後,被鎖定的圖層並不能實現像AutoCAD內置命令能實現的淡顯的效果。測試


鎖定某個圖層的方法比較簡單,其代碼以下:spa

  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 }


經測試發現,在圖層管理器圖層是鎖定了,可是模型空間中,對應被鎖定圖層的圖形卻並無實現鎖定後的淡顯效果。筆者推測須要從新生成一下圖形,故增長如下代碼從新生成圖形:.net

doc.Editor.Regen();


雖然圖層鎖定後會從新生成圖形,然而問題仍然沒有解決。從新生成後的圖形依舊保持未鎖定的顯示狀態。經查閱資料,竟然須要從新設置一下圖層關閉狀態,就能夠刷新顯示。增長的代碼以下:code

layer.IsOff = layer.IsOff;


最終問題得以解決。完整代碼以下:blog

  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 }
相關文章
相關標籤/搜索