找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2385|回复: 9

[讨论]:根据模糊距离进行批量文字合并!(编程高手请进)

[复制链接]

已领礼包: 194个

财富等级: 日进斗金

发表于 2006-1-6 14:06:00 | 显示全部楼层 |阅读模式

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

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

×
前几天网友的原始地形图上的高程数据点的数字都被炸开了,如果要还原成一个一个的数字就有点麻烦了!
        普通的文字合并只能一个一个的合并连接,如果有个能够根据文字间的模糊距离进行批量文字合并就好了!
        如果能消除重合的文字就更好了!
        数据如附件!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-1-6 21:57:29 | 显示全部楼层
搞好了:)
数据new.dwg在附件里面

这个是刚才编的lsp,不过你的原图里面的重叠数字太多,需先用express tool的overkill命令运行一遍后才能运行这个lisp

编程思路

这个程序是专门针对这个图形进行的,对于其他的需要重新修改一下,不过反正思路都差不多

做法,查找小数点“,”,然后对小数点进行前后找窗口,找到相邻的数据,然后进行合并
仅此而已

[php]
(defun c:all ()
  (setq sset nil
        sslist nil
  )
  (command "layer" "n" "temp" "s" "temp" "")
  (command "color" "3")
  (setq sset (ssget '((1 . "."))))
  (setq lena (sslength sset)
        i 0
  )
  (repeat lena
    (setq a (ssname sset i))
    (setq pointa (cdr (assoc 11 (entget a))))
    (setq pointc (polar (polar pointa pi 6) (* pi 1.5) 2))
    (setq pointd (polar (polar pointa 0 3) (* pi 0.5) 3))
    (setq sset1 (ssget "w" pointc pointd)) ; (grdraw pointc pointd 4)
    (setq sslist nil
          sslist1 nil
    )
    (setq sslist (std-sslist sset1))
    (setq sslist1 (vl-sort sslist (function (lambda (e1 e2)
                                              (< (car (cdr (assoc 11
                                                                  (entget e1)
                                                           )
                                                      )
                                                 ) (car (cdr (assoc 11
                                                                    (entget e2)
                                                             )
                                                        )
                                                   )
                                              )
                                            )
                                  )
                  )
    )
    (if (< (length sslist1) 6)
      (progn
        (setq m "")

        (foreach x sslist1
          (setq m (strcat m (cdr (assoc 1 (entget x)))))
        )
        (setq p1 (cdr (assoc 11 (entget (nth 0 sslist1)))))
        (command "text" p1 "2.2" "0" m)
      )
    )
    (setq i (1+ i))
  )
)


(defun STD-SSLIST (ss / n lst)
  (if (eq 'PICKSET (type ss))
    (repeat (setq n (fix (sslength ss))) ; fixed
      (setq lst (cons (ssname ss (setq n (1- n))) lst))
    )
  )
)
[/php]

点评

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

使用道具 举报

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

使用道具 举报

已领礼包: 194个

财富等级: 日进斗金

 楼主| 发表于 2006-1-8 11:21:46 | 显示全部楼层
非常感谢!
基本上可以解决我的问题了,不过有点个别的需要单独进行合并,而且合并后的数据偏移了相同的距离,能不能位置不变或则干脆替换了原来的文字!
能不能提供一些参数:模糊距离\新建图层\颜色等

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

使用道具 举报

发表于 2006-1-8 21:35:11 | 显示全部楼层
这个模糊距离你可以自己修改一下的
就是这句话
(setq pointc (polar (polar pointa pi 6) (* pi 1.5) 2))
    (setq pointd (polar (polar pointa 0 3) (* pi 0.5) 3))
里面的那个6,2,3,3这几个数
而蓝色不能修改的则是    (setq sset1 (ssget "w" pointc pointd))
这句话应该再加一句对文字过滤的
图层的改变是改变这句(command "layer" "n" "temp" "s" "temp" "") ,颜色的差不多
至于文字的偏移位置则是因为原来文字的定位方式不一样,一个是左下,一个是center
你先改改看:),程序都是得自己用才能调的最好
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 194个

财富等级: 日进斗金

 楼主| 发表于 2006-1-10 14:30:55 | 显示全部楼层
我对编程真的是一巧不通啊!
看来什么东东都得懂一点!
还是谢谢snoopychen,这个程序已经节省了我大量时间!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-12 14:07:58 | 显示全部楼层
snoopychen 发表于 2006-1-6 21:57
搞好了:)
数据new.dwg在附件里面

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

使用道具 举报

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

使用道具 举报

发表于 2014-3-11 10:07:47 | 显示全部楼层
附件在这里

高程数据.rar

14.87 KB, 下载次数: 32, 下载积分: D豆 -1 , 活跃度 1

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 22:02 , Processed in 0.187796 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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