userzhl
发表于 2006-3-13 00:12:00
<P>那多少才是正确的呢?</P>
<P>没有的话该怎么弄呢?</P>
xyp1964
发表于 2006-3-13 07:44:00
;;;按颜色选择物体
(defun c:test ()
(while (not (setq s1 (entsel "\n选择任意目标实体: "))))
(setq int (xyp-get-Color (car s1))
ss(ssget)
ss1 (ssadd)
i -1
)
(while (setq s1 (ssname ss (setq i (1+ i))))
(if (= (xyp-get-Color s1) int)
(setq ss1 (ssadd s1 ss1))
)
(princ ".")
)
(princ "\n物体集名称: !ss1")
ss1
)
;;;取得物体的颜色(含随层)
(defun XYP-GET-COLOR (ename / col)
(if (or (= (vla-get-color (vlax-ename->vla-object ename)) 256)
(= (vla-get-color (vlax-ename->vla-object ename)) 0)
)
(progn
(setq laname (dxf 8 (entget ename))
la1 (tblnext "layer" t)
la (dxf 2 la1)
)
(while (/= la laname)
(setq la1 (tblnext "layer" nil)
la(dxf 2 la1)
)
)
(setq col (dxf 62 la1))
)
(setq col (dxf 62 (entget ename)))
)
col
)
(defun dxf (code elist) (cdr (assoc code elist)))
userzhl
发表于 2006-3-13 08:23:00
楼上,经测式它出错了,它会把所有的图元都选中的。
ZZXXQQ
发表于 2006-3-13 08:35:00
再试一下:<BR>(defun c:ssc (/ al)<BR> (if (setq al (entsel "\n请选择:")) (progn<BR> (if (assoc 62 (entget (car al)))<BR> (setq ss (ssget (list (assoc<BR> (if (assoc 62 (entget (car al))) 62 8)<BR> (entget (car al)))))<BR> )<BR>......<BR> ))<BR>)
userzhl
发表于 2006-3-13 09:53:00
有些行,有些不行。对随层颜色的不行。
别晨
发表于 2006-3-13 12:29:00
(setq col (cdr (assoc 62 (entget l1)))) ;取得对象颜色<br> (if (= col nil) ;如果颜色随层<br> (progn <br> (setq lay (cdr (assoc 8 (entget l1)))) ;取得对象所在层的图层名<br> (setq la (entget (tblobjname "layer" lay))) ;取得该图层的数据序列<br> (setq a1 (cdr (car la))) ;取得图层数据序列的名称(-1项)<br> (setq col (cdr (assoc 62 (entget a1)))) ;取得图层的颜色,赋予变量col<br> )<br> ) <br>
xyp1964
发表于 2006-3-13 12:38:00
userzhl发表于2006-3-13 8:23:00static/image/common/back.gif楼上,经测式它出错了,它会把所有的图元都选中的。
<BR>
ljpnb
发表于 2006-3-13 12:48:00
<P>17楼程序测试没问题,应该完全符合主题</P>
ZZXXQQ
发表于 2006-3-13 13:40:00
这样应该行了:<BR>(defun c:ssc (/ al)<BR> (if (setq al (entsel "\n请选择:")) (progn<BR> (setq ss (ssget (list (assoc<BR> (if (assoc 62 (entget (car al))) 62 8)<BR> (entget (car al)))))<BR> )<BR>......<BR> ))<BR>)<BR>
userzhl
发表于 2006-3-13 14:49:00
本帖最后由 作者 于 2006-3-13 16:38:13 编辑 <br /><br /> <P>上面几个试了都没有达到目的,我在网上发现有人编出过这个功能的,我现在把它发上来。</P>
<P>文件见附件,命令:slc1</P>