lml2023 发表于 2023-9-13 09:55:31

【加入刷新功能】图层全开、全解锁、解冻及全恢复

本帖最后由 lml2023 于 2023-9-13 10:17 编辑

这是个老程序,来自于:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=109829&highlight=%CD%BC%B2%E3%C8%AB&_dsign=85ce996e

这个程序本身写得不错,但是有个缺点,就是全部解锁还是淡显;如果RE一下就可以变亮;但是恢复锁定还是亮显,明显缺少了一个regon的刷新动作,我这里稍微改一下就可以实现


;;35-图层3个全部3X,图层再次恢复4X
(Defun STB(TAB / snl sll)
(SetQ snl '()sll (TblNext TAB T))
(While (SetQ snl (Cons (Cdr (Assoc 2 sll)) snl)sll (TblNext TAB nil)))
(vl-sort snl '<))

(defun c:3X();图层全开、解锁、解冻
(princ "\n****图层全开、解锁、解冻,3个全部,程序加了自动RE****")
(foreach x (setq *laystatus(mapcar'(lambda(x)(entget(TBLOBJNAME"layer"x)))(stb"layer")))
    (entmod(subst(cons 62 (abs(cdr(assoc 62 x))))(assoc 62 x)(subst'(70 . 0)(assoc 70 x)x))))(command-S "regen" ));天神,,,加入regen刷新命令
      

(defun c:4X();;恢复图层
(princ "\n****恢复图层,恢复全开之前状态****")
(foreach x *laystatus
    (entmod x))
(setq *laystatus nil)(command-S "regen" ));天神,,,加入regen刷新命令


e2002 发表于 2023-9-13 10:31:58

本帖最后由 e2002 于 2023-9-13 10:34 编辑

不需要调用 regen 命令,也是可以实现和内置命令同样的暗显与恢复效果的。
这里有个需要注意的点: system variable :LAYLOCKFADECTL 。

代码中要加一下判断 AutoCAD 版本,因为早期版本是没有这个 lock fade 效果的。

lml2023 发表于 2023-9-13 10:39:46

e2002 发表于 2023-9-13 10:31
不需要调用 regen 命令,也是可以实现和内置命令同样的暗显与恢复效果的。
这里有个需要注意的点: system...

好的,谢谢

lml2023 发表于 2023-9-15 16:41:22

ekinwp 发表于 2023-9-14 08:11
不知道为什么提示未定义command-S

手动改一下

行天下 发表于 2023-9-13 13:22:52

谢谢分享源码。

mojianxing 发表于 2023-9-13 18:55:24

谢谢分享源码

ekinwp 发表于 2023-9-14 08:03:45

谢谢分享源码

ekinwp 发表于 2023-9-14 08:11:53

不知道为什么提示未定义command-S

ekinwp 发表于 2023-9-14 08:12:58

不过去掉-s后完美可以使用了

lml2023 发表于 2023-9-15 16:42:47

ekinwp 发表于 2023-9-14 08:12
不过去掉-s后完美可以使用了

手动改一下
页: [1] 2
查看完整版本: 【加入刷新功能】图层全开、全解锁、解冻及全恢复