查看单个帖子
旧 2009-04-26, 01:51 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 [求助]改颜色

[求助]改颜色
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): ") 你能得到小数???
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)