明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3673|回复: 19

求教,框选数字范围,然后选择变色,怎么写

  [复制链接]
发表于 2012-10-23 08:26:08 | 显示全部楼层 |阅读模式
求教,框选数字范围,然后选择变色,怎么写

比如选择 一堆数字,范围在200~300之间的变色为红色

300~400之间变色为蓝色
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-8-21 02:35:47 | 显示全部楼层
(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)
)
发表于 2018-8-3 17:10:55 | 显示全部楼层
duotu007 发表于 2012-10-23 08:57
(sssetfirst nil  (ssget '((0 . "*text") (-4 . ""))));选择200到300间的单行文本
(sssetfirst nil  (ssg ...

这个语句有问题,有些数字选不中
发表于 2012-10-23 08:57:24 | 显示全部楼层
(sssetfirst nil  (ssget '((0 . "*text") (-4 . "<or") (1 . "[2][0-9][0-9]") (1 . "[3][0][0]") (-4 . "or>"))));选择200到300间的单行文本
(sssetfirst nil  (ssget '((0 . "*text") (-4 . "<or") (1 . "[3][0-9][0-9]") (1 . "[4][0][0]") (-4 . "or>"))));选择300到400间的单行文本
 楼主| 发表于 2012-10-23 09:45:58 | 显示全部楼层
能写全一点么,我是菜鸟
发表于 2012-10-23 09:50:03 | 显示全部楼层
本帖最后由 cable2004 于 2012-10-23 10:19 编辑

命令:tt

  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2012-10-23 10:00:32 | 显示全部楼层
多谢楼上的大侠
发表于 2012-10-23 10:24:54 | 显示全部楼层
cable2004 发表于 2012-10-23 09:50
命令:tt

可否与大家分享下呢?
发表于 2012-10-23 10:47:35 | 显示全部楼层
学习一下喽~
发表于 2012-10-23 11:15:07 | 显示全部楼层
我试着写了个,敢问各位大侠为什么出错呢?代码如下:
  1. (setq first (getreal"\n最小值:"))
  2. (setq end (getreal"\n最大值:"))
  3. (setq ss (ssget '((0 . "TEXT"))))
  4. (setq l (sslength ss))
  5. (setq n 0)
  6. (repeat l
  7.   (setq ssn (ssname ss n) sslst (entget ssn) ss-con (atof (cdr (assoc 1 sslst))))
  8.   (if (or (> ss-con end) (< ss-con first))
  9.       (ssdel ssn ss)
  10.   )
  11.   (setq n (1+ n))
  12. )
  13. (setq all (itoa (sslength ss)))
  14. (princ (strcat "\n共找到" all "个注记!"))
  15. )
发表于 2012-10-23 11:18:50 | 显示全部楼层
(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)
  )
发表于 2012-10-23 13:35:20 | 显示全部楼层
byghbcx 发表于 2012-10-23 11:18
(defun test(/ r_min r_max co ss n en ent s)
  (if (setq r_min (getreal "\n请输入变色数字下限:")) ni ...

真乃神作!
大侠能否介绍下(1 . "~*[~!-~]*")、(1 . "~*@*")、(1 . "*#*")分别怎么理解?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 07:07 , Processed in 0.211903 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表