找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1698|回复: 9

[求助] 按颜色统计文本,并标记

[复制链接]

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-5-23 16:53:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 炫翔 于 2013-5-23 17:05 编辑

代人发问:

请教大神们一个问题:
假如在一个图档有很多个AA文本,

大小一样,只是颜色不一样

如何对其进行统计并标记

就是在所有颜色一样的AA  的右上角标记一个序号1
就是在所有颜色一样的BB  的右上角标记一个序号2
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:示例图.rar 
下载次数:12  文件大小:7.37 KB 
下载权限: 不限 以上  [免费赚D豆]



~D36B`OB4M(U(]C8IR@KC.jpg


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1742个

财富等级: 堆金积玉

 楼主| 发表于 2013-5-23 17:09:48 | 显示全部楼层
分享两个可以用到的自定义函数
  1. ;表统计  
  2. ;测试 (setq lst '(("a" 2) ( "b" 4) ("a" 5) ("c" 6) ("d" 9) ("c" 1) ("b" 4) ("r" 3) ("r" 3) ("a" 5) ))
  3. ;(XX-Lst-TongJi lst) 获取:'(("a" 12) ("b" 8) ("c" 7) ("d" 9) ("r" 6))
  4. (defun XX-Lst-TongJi(lst / rtn a b)
  5. (IF(= (type LST) 'LIST)
  6.   (progn
  7.    (while lst
  8.       (setq a (car lst))
  9.       (setq b nil)
  10.     (foreach x lst
  11.       (if (eq (car a) (car x));判断表中第一个的是否一样
  12.         (setq b (cons (cdr x) b));把第二个组成表
  13.       )
  14.     )
  15.      (setq b (reverse b))
  16.      (setq b (apply 'mapcar  (cons '+ b)));将第二个表的数值相加
  17.      (setq rtn (cons (cons (car a) b) rtn));将每一个的第一个表与值的和组合
  18.      (setq lst (vl-remove-if '(lambda (x) (= (car a) (car x))) lst))
  19.    )
  20.    (reverse rtn)
  21.   )
  22.   (princ "\n XX-Lst-TongJi  错了!")
  23. )
  24. )



  1. ;功能:指定图元最小外接矩形的九点坐标 9点
  2. ;;;(xx-en--9pt 实体名 参数)
  3. ;上:7 8 9 中:4 5 6  下:1 2 3
  4. ;;;参数=1~9,上中下9位码;其他均为左下角点
  5. ;7 8 9
  6. ;4 5 6
  7. ;1 2 3
  8. (defun xx-en--9pt (s1 mode / dx dy point pointmax pointmin x1 x2 y1 y2)
  9. (cond
  10.    ((and (= (type s1) 'ENAME)(= (type mode) 'INT))(setq s1 (vlax-ename->vla-object s1)))
  11.    ((and (= (type s1) 'vla-object)(= (type mode) 'INT))(setq s1 s1))
  12.    (t (princ "\n xx-en--9pt  错了!")(quit))
  13. )
  14.    (vla-getboundingbox s1 'minpoint 'maxpoint)
  15.    (setq pointmax (vlax-safearray->list maxpoint);取得第9点
  16.          pointmin (vlax-safearray->list minpoint);取得第1点
  17.               x1  (car pointmin)
  18.               x2  (car pointmax)
  19.               y1  (cadr pointmin)
  20.               y2  (cadr pointmax)
  21.               dx  (/ (- x2 x1) 2.0)
  22.               dy  (/ (- y2 y1) 2.0)
  23.    )
  24.    (cond ((= mode 1) (setq point pointmin))
  25.          ((= mode 2) (setq point (list (+ x1 dx) y1 0.0)))
  26.          ((= mode 3) (setq point (list x2 y1 0.0)))
  27.          ((= mode 4) (setq point (list x1 (+ y1 dy)0.0)))
  28.          ((= mode 5) (setq point (list (+ x1 dx) (+ y1 dy)0.0)))
  29.          ((= mode 6) (setq point (list x2 (+ y1 dy)0.0)))
  30.          ((= mode 7) (setq point (list x1 y2 0.0)))
  31.          ((= mode 8) (setq point (list (+ x1 dx) y2 0.0)))
  32.          ((= mode 9) (setq point pointmax))
  33.          (t (setq point pointmin))
  34.    )
  35.    point
  36. )

点评

非常感谢,我怎么不可以给你评分呢?  发表于 2013-5-23 17:21

评分

参与人数 1D豆 +10 贡献 +1 收起 理由
XDSoft + 10 + 1 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

发表于 2013-5-23 19:43:43 | 显示全部楼层
{:soso_e150:}
千万别沉下去了啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-23 21:08:54 | 显示全部楼层
本帖最后由 cy956 于 2013-5-23 19:15 编辑

大概框图:
1.实体选择集
2.按xy排序形成实体名表,赋值两个空表:色表、色序数表,
色表,未来格式为(list col1 col2 col3...)
色序数表,未来格式为(list (cons col1 xh1 n1)(cons col2 xh2 n2)(cons col3 xh3 n3)...)
序号起始为0。
3.foreach开始循环,取实体,取色,
在色表内,取序号并标序号,色序数表内组码表加1
不在色表内,序号加1并标序号,色序数表内组码表赋值1
。。。
循环结束
4,制表,填表

这些,平常有自定内部函数习惯的,可以省很多事。:D

评分

参与人数 1D豆 +6 收起 理由
XDSoft + 6 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9806个

财富等级: 富甲天下

发表于 2013-5-23 21:22:35 | 显示全部楼层
  1. ;按颜色统计字串AA zxq0220 2013.5.23
  2. (defun c:tt ()
  3. (if (setq ss (ssget '((0 . "*TEXT") (1 . "AA")))) (progn
  4.   (setq i -1 strlst (list))
  5.   (repeat (sslength ss)
  6.    (setq ent (entget(ssname ss (setq i (1+ i)))))
  7.    (if (setq co (assoc 62 ent))
  8.     (setq col (cdr co))
  9.     (setq col (cdr(assoc 62 (tblsearch "LAYER" (cdr(assoc 8 ent))))))
  10.    )
  11.    (if (assoc col strlst)
  12.     (setq strlst (subst (cons col (1+ (cdr(assoc col strlst)))) (assoc col strlst) strlst))
  13.     (setq strlst (cons (cons col 1) strlst))
  14.    )
  15.         )
  16.         (setq strlst (reverse strlst))
  17.   (if (setq pt (getpoint "\n文字插入点: ")) (progn
  18.    (makeline pt (polar pt 0 40))
  19.    (makeline pt (setq pt2 (polar pt (/ pi -2) (* (1+ (length strlst)) 8))))
  20.    (makeline (polar pt 0 20) (polar pt2 0 20))
  21.    (makeline (polar pt 0 40) (polar pt2 0 40))
  22.    (makeline (setq pt (polar pt (/ pi -2) 8)) (polar pt 0 40))
  23.    (maketext (polar(polar pt 0 10) (/ pi 2) 4) "颜色号" 256)
  24.    (maketext (polar(polar pt 0 30) (/ pi 2) 4) "数量" 256)
  25.    (foreach x strlst
  26.     (makeline (setq pt (polar pt (/ pi -2) 8)) (polar pt 0 40))
  27.     (maketext (polar(polar pt 0 10) (/ pi 2) 4) (itoa (car x)) (car x))
  28.     (maketext (polar(polar pt 0 30) (/ pi 2) 4) (itoa (cdr x)) 256)
  29.    )
  30.   ))
  31. ))
  32. (princ)
  33. )
  34. (defun makeline (p1 p2)
  35. (entmake(list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))
  36. )
  37. (defun maketext (p1 txt c)
  38. (entmake
  39.   (list
  40.    '(0 . "TEXT")
  41.    '(100 . "AcDbEntity")
  42.    '(67 . 0)
  43.    '(100 . "AcDbText")
  44.    (cons 10 p1)
  45.    '(40 . 5)
  46.    (cons 1 txt)
  47.    '(50 . 0.0)
  48.    '(41 . 0.7)
  49.    '(51 . 0.0)
  50.    '(71 . 0)
  51.    '(72 . 4)
  52.    (cons 11 p1)
  53.    '(210 0.0 0.0 1.0)
  54.    '(100 . "AcDbText")
  55.    '(73 . 0)
  56.    (cons 62 c)
  57.   )
  58. )
  59. )

评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-24 08:54:43 | 显示全部楼层
cy956 发表于 2013-5-23 21:08
大概框图:
1.实体选择集
2.按xy排序形成实体名表,赋值两个空表:色表、色序数表,

谢谢指点,版主可有说详细一点吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-24 08:55:26 | 显示全部楼层

谢谢大神,统计有了,怎么不见标记呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 12个

财富等级: 恭喜发财

发表于 2018-9-9 08:53:04 | 显示全部楼层
学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 5295个

财富等级: 富甲天下

发表于 2018-9-9 09:51:36 | 显示全部楼层
这是一个好程序!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-25 18:56 , Processed in 0.486396 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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