![]() |
[求助]改颜色
[求助]改颜色
www.dimcax.com (defun c:chcolor (/ col ss n) (if (and (setq ss (ssget)) (or (setq col (acad_colordlg 7)) (and (setq col (getint "\n指定颜色索引号(0~256): ")) (<= 0 col 256) ) ) ) (repeat (setq n (sslength ss)) (vla-put-color (vlax-ename->vla-object (ssname ss (setq n (1- n)))) col) ) ) (princ) ) d 楼上的大哥,能不能让它不断循环,直到获得正确有效值数才跳出! (<= 0 col 256)这句好像没作用! 应该对所输的进行判断。对负值和在0-256范围外的值进行拒绝! (initget 4)加了这个可以拒绝负值,但0-256的不知道怎么判断? 也不知道如何让它循环? d (defun c:chcolor (/ col ss n) (if (and (setq ss (ssget)) (progn (setq col (acad_colordlg 7)) (while (not col) (if (setq col (getint "\n指定颜色索引号(0~256): ")) (if (<= 0 col 256) t (progn (setq col nil) (princ "\n需要 0~256 的整数。")) ) ) ) col ) ) (repeat (setq n (sslength ss)) (vla-put-color (vlax-ename->vla-object (ssname ss (setq n (1- n)))) col ) ) ) (princ) ) d 谢谢caoyin。实在太历害了! d 刚刚认真测试了一下,还有一点小毛病。cad颜色号好像没有小数点的吧? 不知怎么让它只接爱正整数呢?用initget可以不? d 不需要 (getint "\n指定颜色索引号(0~256): ") 你能得到小数??? |
| 所有的时间均为北京时间。 现在的时间是 03:45 AM. |