wzg356
发表于 2020-9-11 09:07:49
合并成一个命令,不增加动作,两个功能不变
;按层选择
(DEFUN C:CXX(/ Faith-lst->string lay_sslay_list en lay_name en_list en_type n ss1)
;子程序1:将图层名称转化为以逗号分隔的列表
(defun Faith-lst->string (lst / str1)
(setq str1 "")
(mapcar (function (lambda (x)(setq str1 (strcat str1 "," x)))) lst)
(setq str1 (substr str1 2))
(if (/= "" str1) str1)
)
;*************************
(princ "\n 请选择对象,这一步用来确定你需要选择的图层:")
(setq lay_ss (ssget))
(IF lay_ss
(PROGN
(repeat (setq n (sslength lay_ss))
(setq en (ssname lay_ss (setq n (1- n)))
en_list (entget en)
en_type (cdr (assoc 0 en_list))
)
(setq lay_name (cdr (assoc 8 en_list)))
(if (not (member lay_name lay_list))
(setq lay_list (cons lay_name lay_list))
)
)
(setq lay_name (Faith-lst->string lay_list)
lay_list nil
)
(princ "\n 现在只会选择属于以下图层的对象了:")
(princ (strcat lay_name))
(princ "\n 范围框选或右键全选:")
(setvar "nomutt" 1)
(if (= (setq ss1 (ssget (list (cons 8 lay_name)))) nil)
(setq ss1 (ssget "X" (list (cons 8 lay_name))))
)
(setvar "nomutt" 0)
(sssetfirst nil ss1);让已知选择集处于选中状态
)
)
(princ)
)
(princ "\n功能:按层选择(可多图层),命令:CXX。")
mercio
发表于 2022-3-26 10:54:44
wzg356 发表于 2020-9-11 09:07
合并成一个命令,不增加动作,两个功能不变
;按层选择
可以可以,很多命令就是可以这样简化一下,合并一下。
hzyhzjjzh
发表于 2022-3-30 13:22:29
谢谢!分享程序!!!{:1_1:}
403181713
发表于 2022-3-30 14:26:03
多谢分享,谢谢
jh3030912
发表于 2023-9-17 09:39:03
这个太方便了
lileiaj
发表于 2023-9-17 10:11:06
wzg356 发表于 2020-9-11 09:07
合并成一个命令,不增加动作,两个功能不变
;按层选择
厉害了,都是大神
mojianxing
发表于 2023-9-17 14:55:04
非常感谢大师出手
magicheno
发表于 2023-9-20 00:34:20
感谢大佬分享
atone
发表于 2024-2-13 15:14:23
按层选择,非常好
paulpipi
发表于 2024-2-17 22:19:22
挺好用的,感谢分享!!!