解决锁定图层后不能淡显的问题

锁定图层是我们在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 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值