求教,框选数字范围,然后选择变色,怎么写
求教,框选数字范围,然后选择变色,怎么写比如选择 一堆数字,范围在200~300之间的变色为红色
300~400之间变色为蓝色
(defun c:10190 ( / &c1 &k1 &kw1 obj)
(vl-load-com)
(if (and (princ "\n请选择要改变颜色的对象--适用于10@190通长")
(setq &kw1 (ssget '((0 . "TEXT"))))
)
(progn
(while (setq &k1 (ssname &kw1 0))
(setq &kw1 (ssdel &k1 &kw1))
(setq obj (vlax-ename->vla-object &k1))
(setq &c1 (vla-get-TextString obj))
(if (AND (> (atof &c1) 413) (<= (atof &c1) 524))(vla-put-color obj 3) );变为绿色
(if (AND (> (atof &c1) 524) (<= (atof &c1) 654)) (vla-put-color obj 6) );变为粉色
(if (AND (> (atof &c1) 654) (<= (atof &c1) 785)) (vla-put-color obj 1) );变为红色
(if (AND (> (atof &c1) 785) (<= (atof &c1) 942)) (vla-put-color obj 5) );变为蓝色
(if (AND (> (atof &c1) 942) (<= (atof &c1) 1131)) (vla-put-color obj 2) );变为黄色
)
)
)
(princ)
)
duotu007 发表于 2012-10-23 08:57
(sssetfirst nil(ssget '((0 . "*text") (-4 . ""))));选择200到300间的单行文本
(sssetfirst nil(ssg ...
这个语句有问题,有些数字选不中 (sssetfirst nil(ssget '((0 . "*text") (-4 . "<or") (1 . "") (1 . "") (-4 . "or>"))));选择200到300间的单行文本
(sssetfirst nil(ssget '((0 . "*text") (-4 . "<or") (1 . "") (1 . "") (-4 . "or>"))));选择300到400间的单行文本
能写全一点么,我是菜鸟 本帖最后由 cable2004 于 2012-10-23 10:19 编辑
命令:tt
多谢楼上的大侠 cable2004 发表于 2012-10-23 09:50 static/image/common/back.gif
命令:tt
可否与大家分享下呢? 学习一下喽~ 我试着写了个,敢问各位大侠为什么出错呢?代码如下:(setq first (getreal"\n最小值:"))
(setq end (getreal"\n最大值:"))
(setq ss (ssget '((0 . "TEXT"))))
(setq l (sslength ss))
(setq n 0)
(repeat l
(setq ssn (ssname ss n) sslst (entget ssn) ss-con (atof (cdr (assoc 1 sslst))))
(if (or (> ss-con end) (< ss-con first))
(ssdel ssn ss)
)
(setq n (1+ n))
)
(setq all (itoa (sslength ss)))
(princ (strcat "\n共找到" all "个注记!"))
) (defun test(/ r_min r_max co ss n en ent s)
(if (setq r_min (getreal "\n请输入变色数字下限<200>:")) nil (setq r_min 200))
(if (setq r_max (getreal "\n请输入变色数字上限<300>:")) nil (setq r_max 300))
(setq co (acad_colordlg 1))
(setq ss (ssget "x" '((0 . "TEXT")(-4 . "<and")(1 . "~*[~!-~]*")(1 . "~*@*")(1 . "*#*")(-4 . "AND>"))))
(repeat (setq n (sslength ss))
(setq en (ssname ss (setq n (1- n))))
(setq ent (entget en))
(setq s (atof (cdr (assoc 1 ent))))
(if (and (> s r_min) (< s r_max)) (if (assoc 62 ent) (setq ent (subst (cons 62 co) (assoc 62 ent) ent)) (setq ent (cons (cons 62 co) ent))))
(entmod ent)
)
(princ)
) byghbcx 发表于 2012-10-23 11:18 static/image/common/back.gif
(defun test(/ r_min r_max co ss n en ent s)
(if (setq r_min (getreal "\n请输入变色数字下限:")) ni ...
真乃神作!
大侠能否介绍下(1 . "~*[~!-~]*")、(1 . "~*@*")、(1 . "*#*")分别怎么理解?
页:
[1]
2