找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2823|回复: 24

[求助] 好久没上论坛了,突发其想: 相同直径改为相同颜色

[复制链接]

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-10-3 23:17:37 | 显示全部楼层 |阅读模式

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

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

×
图中有:直径1MM圆
直径2MM圆
直径3MM圆
直径4MM圆
直径5MM圆
直径6MM圆
直径8MM圆
........... 后面还有还有很多
各2到50个  个数未知

能不能分别将  同直径的圆   改为红黄绿青等颜色
即相同直径的圆改为相同颜色














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

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-10-3 23:22:42 | 显示全部楼层
来点思路:
先建几个空选择集
搜索组码表 10
IF    组码表 10  =  1
将它加入选集1

IF    组码表 10  = 2
将它加入选集2

IF    组码表 10  = 3
将它加入选集3

..................

分别将选择集1 2 3 4 .....
改颜色

还有什么更好的方法吗?

问题是不知道需要建几个选择集





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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-10-3 23:27:55 | 显示全部楼层
组吗表10是什么? 10是点啊,你不是要过滤出半径吗? 遍历选择集,把相同半径的放到一个子表里面,然后处理就OK了。

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-10-3 23:44:24 | 显示全部楼层
就一个选择集就够了,用关联表,把面积一样的都放一个关联表里面。下面是演示代码
xdtb_entchgcolor.gif


  1. (defun c:tt()
  2.    (if (setq ss (ssget '((0 . "CIRCLE"))))
  3.       (progn
  4.          (xdrx_undostart)
  5.          (xdrx_setsstodb ss 0)
  6.          (setq entl nil)
  7.          (while (setq e (xdrx_getentdata 0))
  8.             (setq r (xdrx_getentdxf 40)
  9.                   key (rtos r 2 2)
  10.                   old (assoc key entl)
  11.             )
  12.             (if old
  13.                (setq entl (subst (append (list key) (cons e (cdr old))) old entl))
  14.                (setq entl (cons (list key e) entl))
  15.             )
  16.          )
  17.          (setq i 0)
  18.          (foreach n entl
  19.             (setq i (1+ i))
  20.             (mapcar '(lambda(x) (xdrx_setpropertyvalue x "color" i)) n)
  21.          )
  22.          (xdrx_undoend)
  23.       )
  24.    )
  25.    (princ)
  26. )



点评

汗...高手就是高手..还没两下子就搞定了... 用好了通用函数就是快啊.....可惜我到现在还是没搞明白 子函数是如何传递的 谢谢你给的思路 还是得自己写一下纯LISP的源码的 最后更正一下:应该是组码40 而  详情 回复 发表于 2013-10-4 00:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-10-4 00:42:59 | 显示全部楼层
newer 发表于 2013-10-3 23:44
就一个选择集就够了,用关联表,把面积一样的都放一个关联表里面。下面是演示代码

汗...高手就是高手..还没两下子就搞定了...
用好了通用函数就是快啊.....可惜我到现在还是没搞明白   子函数是如何传递的

谢谢你给的思路   还是得自己写一下纯LISP的源码的

最后更正一下:应该是组码40    而不是10


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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-10-4 00:45:43 | 显示全部楼层
newer 发表于 2013-10-3 23:27
组吗表10是什么? 10是点啊,你不是要过滤出半径吗? 遍历选择集,把相同半径的放到一个子表里面,然后处理 ...

没看你是写程序啊
完全就是在   堆砌   程序嘛

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-4 01:47:42 | 显示全部楼层
ysq101 发表于 2013-10-4 00:45
没看你是写程序啊
完全就是在   堆砌   程序嘛

Lisp 也可以啊
  1. (defun XD::LIST:SameIndex1 (lst / ll l)
  2.   (foreach x lst
  3.     (if ll
  4.       (if (setq l (assoc (car x) ll))
  5. (setq ll (subst (cons (car l) (cons x (cdr l)))
  6.    (assoc (car x) ll)
  7.    ll
  8.    )
  9. )
  10. (setq ll (append (list (list (car x) x)) ll))
  11.       )
  12.       (setq ll (list (list (car x) x)))
  13.     )
  14.   )
  15.   (mapcar 'cdr ll)
  16. )
  17. (defun c:tt (/ ss sl i el ll)
  18.   (if (setq ss (ssget '((0 . "circle"))))
  19.     (progn
  20.       (setq sl (sslength ss)
  21.      i  -1
  22.       )
  23.       (repeat sl
  24. (setq el (entget (ssname ss (setq i (1+ i))))
  25.        ll (cons (list (rtos (cdr (assoc 40 el)) 2 8) el) ll)
  26. )
  27.       )
  28.       (setq i 1)
  29.       (foreach x (XD::LIST:SameIndex1 ll)
  30. (foreach a x
  31.    (entmod (append (cadr a) (list (cons 62 i))))
  32. )
  33. (setq i (1+ i))
  34.       )
  35.     )
  36.   )
  37.   (princ)
  38. )

点评

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

使用道具 举报

发表于 2013-10-4 11:00:37 | 显示全部楼层
本帖最后由 xyp1964 于 2013-10-4 11:05 编辑
  1. ;; 云共享 http://yunpan.cn/QXQKsW9gAPmpF
  2. (defun c:tt ()
  3.   (princ "\n选择圆实体: ")
  4.   (if (setq ss (ssget '((0 . "CIRCLE"))))
  5.     (progn
  6.       (setq lst        (xyp-ss2list ss)
  7.             lst        (mapcar '(lambda (x) (list (xyp-DXF 40 x) x)) lst)
  8.             lst        (vl-sort lst '(lambda (x y) (< (car x) (car y))))
  9.             r0        (caar lst)
  10.             i        1
  11.       )
  12.       (foreach a lst
  13.         (setq r1 (car a))
  14.         (if (not (equal r0 r1))
  15.           (setq        r0 r1
  16.                 i  (1+ i)
  17.           )
  18.         )
  19.         (xyp-SubUpd (cadr a) 62 i)
  20.       )
  21.     )
  22.   )
  23.   (princ)
  24. )
同半径改色01.gif

点评

以院长这种封装函数,得到lst后直接用(vl-sort '(lambda (e1 e2 )(< (xpy-get dxf e1) (xyp-getdxf e2))) lst)  详情 回复 发表于 2013-10-4 11:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-4 11:43:15 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-10-4 11:44 编辑
xyp1964 发表于 2013-10-4 11:00


以院长这种封装函数,得到lst后直接用(vl-sort lst '(lambda (e1 e2 )(< (xpy-dxf e1) (xyp-dxf e2))) )

点评

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

使用道具 举报

发表于 2013-10-4 11:50:28 | 显示全部楼层
  1. (defun c:test1372 ()
  2.   (princ "\n选择圆实体: ")
  3.   (if (setq ss (ssget '((0 . "CIRCLE"))))
  4.     (progn
  5.       (setq lst        (xyp-ss2list ss)
  6.             lst        (vl-sort lst '(lambda (x y) (< (xyp-DXF 40 x) (xyp-DXF 40 y))))
  7.             r0        (xyp-DXF 40 (car lst))
  8.             i        1
  9.       )
  10.       (foreach s1 lst
  11.         (setq r1 (xyp-DXF 40 s1))
  12.         (if (not (equal r0 r1))
  13.           (setq        r0 r1
  14.                 i  (1+ i)
  15.           )
  16.         )
  17.         (xyp-SubUpd s1 62 i)
  18.       )
  19.     )
  20.   )
  21.   (princ)
  22. )

评分

参与人数 1D豆 +5 收起 理由
炫翔 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-10-4 16:17:50 | 显示全部楼层

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

使用道具 举报

已领礼包: 828个

财富等级: 财运亨通

发表于 2013-10-7 09:05:25 | 显示全部楼层
我用了cad自带的快速选择的功能,可以看看

批量改颜色

批量改颜色


点评

这样一次只能选一个种类的半径吧,如果图中有很多半径,要一个一个的去这样做吧?  详情 回复 发表于 2013-10-7 09:38

评分

参与人数 1D豆 +5 收起 理由
Lisphk + 5 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-10-7 09:38:31 | 显示全部楼层
ngc 发表于 2013-10-7 09:05
我用了cad自带的快速选择的功能,可以看看



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

使用道具 举报

已领礼包: 315个

财富等级: 日进斗金

发表于 2013-10-11 11:16:51 | 显示全部楼层
方法没院长的高明!结果一样!加了个统计表格。
变色分孔.gif

点评

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-10-11 21:30:36 | 显示全部楼层
小陶 发表于 2013-10-11 11:16
方法没院长的高明!结果一样!加了个统计表格。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 09:09 , Processed in 0.486547 second(s), 75 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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