caoyin 发表于 2008-9-23 09:49:00

<p>(defun c:chColor (/ col ss n)<br/>&nbsp; (if (and (setq ss&nbsp; (ssget))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (or (setq col (acad_colordlg 7))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (and (setq col (getint "\n指定颜色索引号(0~256): "))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&lt;= 0 col 256)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (repeat (setq n (sslength ss))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-color (vlax-ename-&gt;vla-object (ssname ss (setq n (1- n)))) col)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)</p>

120120 发表于 2008-9-23 18:43:00

<p>楼上的大哥,能不能让它不断循环,直到获得正确有效值数才跳出!</p><p>(&lt;= 0 col 256)这句好像没作用!</p><p>应该对所输的进行判断。对负值和在0-256范围外的值进行拒绝!</p><p>(initget 4)加了这个可以拒绝负值,但0-256的不知道怎么判断?</p><p>也不知道如何让它循环?</p>

caoyin 发表于 2008-9-24 09:17:00

本帖最后由 作者 于 2008-9-24 12:48:25 编辑 <br /><br /> (defun c:chColor (/ col ss n)<br/>&nbsp; (if<br/>&nbsp;&nbsp;&nbsp; (and (setq ss (ssget))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq col (acad_colordlg 7))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (not col)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (setq col (getint "\n指定颜色索引号(0~256): "))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (&lt;= 0 col 256)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn (setq col nil) (princ "\n需要 0~256 的整数。"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (repeat (setq n (sslength ss))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-color<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-ename-&gt;vla-object (ssname ss (setq n (1- n))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)

120120 发表于 2008-9-24 12:09:00

谢谢CAOYIN。实在太历害了!

120120 发表于 2008-9-24 12:38:00

<p>刚刚认真测试了一下,还有一点小毛病。CAD颜色号好像没有小数点的吧?</p><p>不知怎么让它只接爱正整数呢?用INITGET可以不?</p>

caoyin 发表于 2008-9-24 12:50:00

<p>不需要</p><p>(getint "\n指定颜色索引号(0~256): ") 你能得到小数???</p>

120120 发表于 2008-9-24 20:26:00

<p>自已搞错了。谢谢CAOYIN!</p><p></p>

匆匆肥马 发表于 2019-10-22 10:09:18

caoyin 发表于 2008-9-22 16:00
;;; command并不一定慢!(defun c:chColor (/ col ss n)&nbsp; (if (and (setq ss&nbsp; (ssget))&nbsp;&nb ...

请请教一下,选择对象为空时,不结束命令,而是直接弹出颜色选定窗口。怎么改啊?

2548572928 发表于 2021-12-10 10:05:10

caoyin 发表于 2008-9-24 09:17
本帖最后由 作者 于 2008-9-24 12:48:25 编辑(defun c:chColor (/ col ss n)&nbsp; (if&nbsp;&nbsp;&nbs ...

大神 厉害:handshake
页: 1 [2]
查看完整版本: [求助]改颜色