zoukankan      html  css  js  c++  java
  • 解决锁定图层后不能淡显的问题

    锁定图层是我们在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 }
  • 相关阅读:
    cocos代码研究(6)有限时间动作类(FiniteTimeAction)学习笔记
    cocos代码研究(5)Action学习笔记
    cocos代码研究(1)Node学习笔记
    cocos代码研究(2)Label学习笔记
    顽石系列:Linux基础笔试
    Spring笔记:事务管理
    Spring笔记:AOP基础
    Spring笔记:IOC基础
    MyBatis:学习笔记(4)——动态SQL
    Linux:进程管理
  • 原文地址:https://www.cnblogs.com/optimo/p/12059263.html
Copyright © 2011-2022 走看看