userzhl 发表于 2006-3-11 22:26:00

[求助]提出个想法,可以编出个按颜色选择物体的程序吗?

<P>如题:</P>
<P>可以编出个按颜色选择物体的程序吗?</P>

xyp1964 发表于 2006-3-11 23:20:00

(load "xyp_lib.vlx") ;版本 V.20060210
;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
★1·在acad.lsp中增加(load"xyp_lib")
■2·在每个程序内增加(load"xyp_lib")
■3·在command下,输入(load"xyp_lib")
■4·在菜单.mnl中增加(load"xyp_lib")
■5·将xyp_lib.vlx文件直接拽到cad屏幕
★通用函数下载地址:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554
|;
;;;按颜色选择物体
(defun c:test ()
(if (null int)
    (setq int 7)
)
(setq INT (UINT 7 "" "\n颜色号" INT)
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
)

userzhl 发表于 2006-3-11 23:35:00

<P>楼上,出错了:</P>
<P>命令: TEST ; 错误: no function definition: UINT</P>
<P>我想要的是:颜色号不用输入,直接选取的,</P>

xyp1964 发表于 2006-3-12 00:00:00

userzhl发表于2006-3-11 23:35:00static/image/common/back.gif楼上,出错了:命令: TEST ; 错误: no function definition: UINT我想要的是:颜色号不用输入,直接选取的,先加载通用函数!
(load "xyp_lib.vlx")   ;版本 V.20060210
;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
★1·在acad.lsp中增加(load"xyp_lib")
■2·在每个程序内增加(load"xyp_lib")
■3·在command下,输入(load"xyp_lib")
■4·在菜单.mnl中增加(load"xyp_lib")
■5·将xyp_lib.vlx文件直接拽到cad屏幕
★通用函数下载地址:
dispbbs.asp?boardID=3&ID=37554&page=1
|;
;;;按颜色选择物体
(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
)

userzhl 发表于 2006-3-12 14:49:00

本帖最后由 作者 于 2006-3-12 23:15:03 编辑 <br /><br /> <P>没有更简单一点的了吗?终于被我研究出来了:</P>
<P>(defun c:ssc (/ al)<BR>&nbsp;&nbsp; (if (setq al (entsel "\n请选择:")) (progn<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq&nbsp;ss (ssget&nbsp;(list (assoc&nbsp;62 (entget (car al))))))<BR>......<BR>&nbsp;&nbsp; ))<BR>)</P>

xyp1964 发表于 2006-3-12 22:09:00

userzhl发表于2006-3-12 14:49:00static/image/common/back.gif
没有更简单一点的了吗?终于被我研究出来了:
(defun c:ssc (/ al)(if (setq al (entsel \"\n请选择:\"))&amp;n...


<P>既然研究出来了,应该不错!目前还没有更简单一点的。</P>
<P>楼上的东东看不懂!</P>
<P><BR>&nbsp;</P>

userzhl 发表于 2006-3-12 22:14:00

此程序是选择所有同一颜色的物体,我想把它改成“点色框选”呀。

ZZXXQQ 发表于 2006-3-12 22:19:00

<P>试一下:<BR>(defun c:ssc (/ al)<BR>&nbsp;&nbsp; (if (setq al (entsel "\n请选择:")) (progn<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq&nbsp;ss (ssget&nbsp;(list (assoc&nbsp;62 (entget (car al))))))<BR>......<BR>&nbsp;&nbsp; ))<BR>)</P>

userzhl 发表于 2006-3-12 22:39:00

本帖最后由 作者 于 2006-3-12 23:37:53 编辑 <br /><br /> <P>非常的感谢<A name=2517><FONT color=#0000ff><B>ZZXXQQ</B></FONT></A>和<A name=2512><FONT color=#990000><B>xyp1964</B></FONT></A>,好像是已解决,但后来不知为何又出错了:</P>
<P>错误: ssget 列表错误</P>
<P>是不是:DXF <FONT size=3>群组码出错了?</FONT></P>

无痕 发表于 2006-3-13 00:06:00

<P>组码62不是必须的</P>
<P>当随层时候,62是没有的。</P>
页: [1] 2 3 4
查看完整版本: [求助]提出个想法,可以编出个按颜色选择物体的程序吗?