选择多层对象
doremidai
doremidai Lv.5
2009年04月11日 12:47:48
只看楼主

目的:选择几个对象(分别在不同的层),读取这几个对象所在的“图层名”,然后提示所选图层并确认,以后框选一个范围,将该范围所有属于以上图层的对象全部选择。程序大致框架如下,我学lisp不深,中间很多部分不会写,请高手完善。:(defun c:xzc()(setvar "cmdecho" 0)(setq s1 (entsel "\n\t请选择需要选择的层中的一个物体 : ")) (while s1

目的:选择几个对象(分别在不同的层),读取这几个对象所在的“图层名”,然后提示所选图层并确认,以后框选一个范围,将该范围所有属于以上图层的对象全部选择。程序大致框架如下,我学lisp不深,中间很多部分不会写,请高手完善。:
(defun c:xzc()
(setvar "cmdecho" 0)
(setq s1 (entsel "\n\t请选择需要选择的层中的一个物体 <退出> : "))
(while s1
(setq ss (entget (car s1)))
(setq cname (cdr (assoc 8 ss)))
(prompt (strcat "\n选中了图层: \""

","
)
"\"\n"
)
)
)
(XZ)
)

(defun XZ()
(prompt "\n框选范围:")
(setq ss1 (ssget (list (cons 8 cname))))
(prin1)
)
zml1984
2009年08月29日 18:04:38
2楼
[code](setvar "cmdecho" 0)
(defun c:xzc (/ CNAME ENT SS)
(and
;;
(setq ss (entsel "\n请选择需要选择的层中的一个物体: "))
(setq ent (entget (car ss)))
(setq cname (cdr (assoc 8 ent)))
(princ (strcat "\n选中了图层: \"" cname "\""))
;;
(princ "\n框选范围....")
(setq ss (ssget (list (cons 8 cname))))
;;
(sssetfirst NIL SS)
)
)[/code]
回复
cf_han
2009年09月06日 23:42:20
3楼
只能选择一个图层啊!
回复
zml1984
2009年09月07日 08:47:37
4楼
[code](defun c:qs (/ CNAME ENT SS lst str i)
(and
;;
(princ "\n1.请选择目标图层上的若干对象... ")
(setq ss (ssget))
;;
(setq lst '()
str ""
i 0
)
(repeat (sslength ss)
(setq ent (entget (ssname ss i))
cname (cdr (assoc 8 ent))
)
(if (member cname lst)
()
(setq lst (cons cname lst)
str (strcat str "," cname)
)
)
(setq i (1+ i))
)
(setq str (substr str 2))
(princ "\n2.选中图层: ")
(princ str)
;;
(princ "\n3.框选范围...")
(setq ss (ssget (list (cons 8 str))))
;;
(princ
(strcat "**选择到 " (itoa (sslength ss)) " 个有效对象。")
)
(sssetfirst NIL SS)
)
)[/code]
回复
cf_han
2009年09月11日 00:05:11
5楼
兄弟,多谢了,找了好长时间了!
回复
lls123
2009年09月18日 13:27:37
6楼
很好东西啊,全面支持,希望继续
回复
liucongyi2007
2009年11月06日 22:56:01
7楼
=
=
=
不错的插件 楼主修改后确实能进行多个图层的选择
回复
yitian519
2009年11月20日 14:31:59
8楼
语法

(sssetfirst gripset [pickset])

功能及参数

此函数将用来设定哪一个图形要被选取与获取。gripset 参数将用来指定只要获取的图形选择集。pickset参数则用来指定要获取也要选取的图形选择集。如果这两个参数均有指定, 则sssetfirst仅获取并选择经过pickset参数所指定的选择集。若只指定 gripset 参数, 则此函数将获取经过 gripset 参数所指定的选择集。sssetfirst 函数将返回选择集的两个变量的表。

【注意】 当 AutoCAD 正在执行命令时, 不要调用ads_ssetfirst() 函数
学习一下,谢谢
回复
slf520
2009年12月07日 23:52:25
9楼
ZM1984牛人,谢谢了
回复
caojiangcai
2010年06月23日 11:39:31
10楼
:victory:
回复
kayoshiho
2010年08月24日 12:40:13
11楼
zml1984仁兄谢谢了!
也谢过楼主的好号召。
回复

相关推荐

APP内打开