明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4835|回复: 10

[源码] 二个关于关闭图层的LSP,求高手整合下

[复制链接]
发表于 2013-7-27 10:28:31 | 显示全部楼层 |阅读模式
一个是关闭对象所在层,一个是只显示被选对象所在层,求高手整合成一个命令。(命令方式:选择要关闭的图层(或空格选择不关闭的图层 )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

本帖被以下淘专辑推荐:

  • · 收集|主题: 58, 订阅: 4
发表于 2013-7-27 11:22:12 | 显示全部楼层

  1. ;;; 关闭对像所在层
  2. (defun lf (ss /  c en lay)
  3.    (setq c 0)
  4.    (while (< c (sslength ss))
  5.      (setq en (ssname ss c))
  6.      (setq lay (cdr (assoc 8 (entget en))))
  7.      (if (not (member lay laylst))
  8.        (setq laylst (cons lay laylst))
  9.      )
  10.      (if (= lay (getvar "clayer"))
  11.        (command "-layer" "off" lay "y" "")
  12.        (command "-layer" "off" lay "")
  13.      )
  14.      (setq c (+ 1 c))
  15.    )
  16.    (princ)
  17. )

  18. ;;; 只显示被选对像所在层
  19. (DEFUN lg (Es / ES EN EL A)
  20. (setq  A 0 EN "" EL nil FL nil)
  21. (while (/= EN nil)
  22. (setq EN (ssname ES A) EL (cons EN EL) A (1+ A)))
  23. (setq EL (cdr EL) FL (cdr (assoc ' 8 (entget (car EL)))) EL (cdr EL))
  24. (repeat (- A 2)
  25. (setq EN (cdr (assoc ' 8 (entget (car EL))))
  26.   FL (strcat EN "," FL) EL (cdr EL)) )
  27. (command "LAYER" "off" "*" "y" "on" (eval FL) "")
  28. (princ)
  29. )

  30. (defun C:Lyr2 ()
  31.   (princ "\n选择要关闭的图层(或空格,再选择不关闭的图层 )")
  32.   (setq ss (ssget))
  33.   (cond
  34.     ;; 空格选择不关闭的图层
  35.    ((Null ss) (lg (ssget)))
  36.    
  37.    (T (lf ss))
  38.   )
  39. )
 楼主| 发表于 2013-7-27 12:12:04 | 显示全部楼层
Andyhon 发表于 2013-7-27 11:22

不对啊,可能是我没表达清楚,你这个好像只一有一个关闭对象所在层的功能,还有一个只显示被选对象所在层 的功能好像没有用上,我再表达下我的意思哈,麻烦大哥再帮我改下,
输入命令空格,提示:选择要关闭的图层(或空格选择不关闭的图层,没有被选中的图层将会关闭 ), 这里是有二个选项的,1,我没有再次敲空格而是直接选择图层上对象,则执行的是:"关闭对象所在层的命令";2.如果我再次敲 空格 则执行的是:"只显示被选对象所在层的命令"(通过多敲一个空格来选择是执行关闭对象所在层.lsp还是只显示被选对象所在层.lsp)

点评

你再试下 长老 给的代码。 我感觉完全满足你的要求了。  发表于 2013-7-27 12:44
 楼主| 发表于 2013-7-27 13:13:34 | 显示全部楼层
哈哈,我找了个图,仔细认真重新试了下功能,发现Andyhon大哥的是OK的,,是我太粗心了,我敲一下空格提示的是选择对象,我再敲一下空格,还是提示的是选择对象,所以误会了
 楼主| 发表于 2013-7-27 13:25:22 | 显示全部楼层
Andyhon 发表于 2013-7-27 11:22

Andyhon大哥你这个是对的,还能不能麻烦改下,命令提示,输入lyr2空格,提示:选择要关闭的图层(或空格选择不关闭的图层,没有被选中的图层将会关闭 ),再敲空格,提示:选择不关闭的图层,没有被选中的图层将会关闭
发表于 2013-7-27 15:53:23 | 显示全部楼层

  1. (defun C:Lyr2 ()
  2.   (princ "\n选择要关闭的图层(或空格,再选择不关闭的图层 ): ")
  3.   (setq ss (ssget))
  4.   (cond
  5.     ;; 空格 --> 选择不关闭的图层
  6.    ((Null ss)
  7.     (princ "\n那么选择不关闭的图层: ")
  8.     (lg (ssget))
  9.    )
  10.    
  11.    (T (lf ss))
  12.   )
  13. )

点评

有提示了,非常感谢Andyhon大哥又帮忙改了一次  发表于 2013-7-27 16:01
发表于 2019-3-3 13:01:45 | 显示全部楼层
cad命令
只显示被选对象所在层 LAYISO 还原 layuniso
发表于 2020-7-29 02:47:13 | 显示全部楼层
这个非常好用
发表于 2021-7-28 09:33:44 | 显示全部楼层
这个非常好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 00:20 , Processed in 0.185096 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表