找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: cz7873559

[已解决] 获取字符串坐标并画线

[复制链接]
 楼主| 发表于 2013-6-8 05:19:09 | 显示全部楼层
本帖最后由 cz7873559 于 2013-6-8 05:21 编辑

QQ图片20130608052044.jpg

判断相同文字并连线.rar

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

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

使用道具 举报

已领礼包: 10260个

财富等级: 富甲天下

发表于 2013-6-8 08:24:17 | 显示全部楼层
本帖最后由 zxq0220 于 2013-6-8 20:20 编辑
  1. ;同串变绿并连线 晓东 zxq0220 2013.6.8
  2. (defun c:tt ()
  3. (if (and (setq pt1 (getpoint "\n框选第一角点: "))
  4.           (setq pt2 (getcorner pt1 "\n框选另一角点: "))) (progn
  5.   (setq ss (ssget "W" pt1 pt2 '((0 . "TEXT"))))
  6.   (setq i -1 tlst (list))
  7.   (repeat (sslength ss)
  8.    (setq en (ssname ss (setq i (1+ i)))
  9.          ent (entget en)
  10.          txt (cdr(assoc 1 ent))
  11.          pt (cdr(assoc 10 ent)))
  12.    (if (assoc txt tlst)
  13.     (setq tlst (subst (cons txt (1+ (cdr(assoc txt tlst)))) (assoc txt tlst) tlst))
  14.     (setq tlst (cons (cons txt 1) tlst))
  15.    )
  16.   )
  17.   (foreach x tlst
  18.    (if (> (cdr x) 1) (progn
  19.     (setq ss1 (ssget "W" pt1 pt2 (list '(0 . "TEXT") (cons 1 (car x)))))
  20.     (setq i 0)
  21.     (setq ent1 (entget(ssname ss1 0)))
  22.     (setq pt (cdr(assoc 10 ent1)))
  23.     (if (assoc 62 ent1)
  24.      (entmod (subst '(62 . 3) (assoc 62 ent1) ent1))
  25.      (entmod (append ent1 '((62 . 3))))
  26.     )
  27.     (repeat (1- (sslength ss1))
  28.      (setq ent1 (entget(ssname ss1 (setq i (1+ i))))
  29.           p1 (cdr(assoc 10 ent1)))
  30.      (if (assoc 62 ent1)
  31.       (entmod (subst '(62 . 3) (assoc 62 ent1) ent1))
  32.       (entmod (append ent1 '((62 . 3))))
  33.      )
  34.      (entmake (list '(0 . "LINE") (cons 10 pt) (cons 11 p1) '(8 . "XT") '(62 . 3)))
  35.      (setq pt p1)
  36.     )
  37.    ))
  38.   )
  39. ))
  40. (princ)
  41. )

点评

代码运行后一个图中有3个以上的字符是相同的,框选两个之后,没选到(或是在隐藏的图层)的第三个也会跟着连线。我想,只比较框选内的文字,如果没选上就不连线。麻烦你再帮我改下嘛  详情 回复 发表于 2013-6-8 15:52
谢谢,这样就没有出错了。  详情 回复 发表于 2013-6-8 11:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-8 08:45:30 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-6-8 08:47 编辑

奇了怪,这里怎么成了这样?
_1_$ str
"fy吴大英"
_1_$ (read str)
FY何力富

点评

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-8 09:24:56 | 显示全部楼层
Free-Lancer 发表于 2013-6-8 08:45
奇了怪,这里怎么成了这样?
_1_$ str
"fy吴大英"

read函数在对付中文字符串时会出错,具体原因和出错结果也未知,上次明经有一个帖子,后来测试一下,自以为找到出错原因了,谁知后来发现还是不对。

点评

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-6-8 10:45:55 | 显示全部楼层
ll_j 发表于 2013-6-8 09:24
read函数在对付中文字符串时会出错,具体原因和出错结果也未知,上次明经有一个帖子,后来测试一下,自以 ...

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

使用道具 举报

 楼主| 发表于 2013-6-8 11:32:05 | 显示全部楼层

谢谢,这样就没有出错了。

点评

如果一个图中有3个以上的字符是相同的,框选两个之后,没选到的第三个也会跟着连线。我想要如果第三个没选上就不连线。麻烦再帮我改下嘛  详情 回复 发表于 2013-6-8 13:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 11:33:16 | 显示全部楼层
Free-Lancer 发表于 2013-6-8 08:45
奇了怪,这里怎么成了这样?
_1_$ str
"fy吴大英"

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-8 13:07:53 | 显示全部楼层
Lisphk 发表于 2013-6-8 10:45
长老,上次找到的原因是什么,能不能分享下?

好不容易找到以前的帖子:http://bbs.mjtd.com/thread-99199-1-1.html
在11楼有我的回复,当时感觉是这样,不过后来有遇到过类似的情况,感觉这个回复的猜想也不正确。

点评

这样解决下 (defun c:tt (/ doc ms ss ll clyr) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) ms (vla-get-modelspace doc) clyr (getvar "clayer") ) (vla-start  详情 回复 发表于 2013-6-9 08:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 13:42:07 | 显示全部楼层
本帖最后由 cz7873559 于 2013-6-8 14:08 编辑
cz7873559 发表于 2013-6-8 11:32
谢谢,这样就没有出错了。


如果一个图中有3个以上的字符是相同的,框选两个之后,没选到(或是在隐藏的图层)的第三个()也会跟着连线。我想要如果第三个没选上就不连线。麻烦再帮我改下嘛

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-8 15:13:25 | 显示全部楼层
cz7873559 发表于 2013-6-8 13:42
如果一个图中有3个以上的字符是相同的,框选两个之后,没选到(或是在隐藏的图层)的第三个()也会跟 ...

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-8 15:51:28 | 显示全部楼层
我也凑上一段:

  1. (defun c:tt (/ ss i lst ls1 ls2)
  2.   (princ "\n判断相同的文字并连线。")
  3.   (princ "\n选择要判断的文字:")
  4.   (setq ss (ssget '((0 . "text"))))
  5.   (if ss
  6.     (progn
  7.       (setq i   -1
  8.             lst nil
  9.       )
  10.       (repeat (sslength ss)
  11.         (setq lst (cons (entget (ssname ss (setq i (1+ i)))) lst))
  12.       )
  13.       (setq lst (vl-sort
  14.                   lst
  15.                   '(lambda (x y)
  16.                      (< (cdr (assoc 1 x)) (cdr (assoc 1 y)))
  17.                    )
  18.                 )
  19.             ls1 (list (car lst))
  20.             ls2 nil
  21.       )
  22.       (while (cdr lst)
  23.         (if (= (cdr (assoc 1 (car lst)))
  24.                (cdr (assoc 1 (setq e1 (cadr lst))))
  25.             )
  26.           (setq ls1 (cons e1 ls1)
  27.                 lst (cdr lst)
  28.           )
  29.           (setq ls2 (cons ls1 ls2)
  30.                 ls1 (list e1)
  31.                 lst (cdr lst)
  32.           )
  33.         )
  34.       )
  35.       (setq ls2 (cons ls1 ls2))
  36.       (mapcar
  37.         '(lambda (n)
  38.            (if (> (length n) 1)
  39.              (progn
  40.                (mapcar
  41.                  '(lambda (x)
  42.                     (if (assoc 62 x)
  43.                       (entmod (subst '(62 . 3) (assoc 62 x) x))
  44.                       (entmod (append x '((62 . 3))))
  45.                     )
  46.                   )
  47.                  n
  48.                )
  49.                (mapcar
  50.                  '(lambda (x1 x2)
  51.                     (entmake
  52.                       (list '(0 . "LINE")
  53.                             (if (and (= (cdr (assoc 72 x1)) 0)
  54.                                      (= (cdr (assoc 73 x1)) 0)
  55.                                 )
  56.                               (assoc 10 x1)
  57.                               (cons 10 (cdr (assoc 11 x1)))
  58.                             )
  59.                             (if (and (= (cdr (assoc 72 x2)) 0)
  60.                                      (= (cdr (assoc 73 x2)) 0)
  61.                                 )
  62.                               (cons 11 (cdr (assoc 10 x2)))
  63.                               (assoc 11 x2)
  64.                             )
  65.                             '(62 . 3)
  66.                       )
  67.                     )
  68.                   )
  69.                  n
  70.                  (cdr n)
  71.                )
  72.              )
  73.            )
  74.          )
  75.         ls2
  76.       )
  77.     )
  78.     (princ "\n未选择文字。")
  79.   )
  80.   (princ)
  81. )

点评

你们都是高手!你的也能实现,而且只比较框选的范围了。我想把在XT层画线并且线的颜色随层。该在哪里加呢?  详情 回复 发表于 2013-6-8 15:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 15:52:22 | 显示全部楼层
本帖最后由 cz7873559 于 2013-6-8 15:53 编辑

代码运行后一个图中有3个以上的字符是相同的,框选两个之后,没选到(或是在隐藏的图层)的第三个也会跟着连线。我想,只比较框选内的文字,如果没选上就不连线。麻烦你再帮我改下嘛

点评

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

使用道具 举报

 楼主| 发表于 2013-6-8 15:58:28 | 显示全部楼层
ll_j 发表于 2013-6-8 15:51
我也凑上一段:

你们都是高手!你的也能实现,而且只比较框选的范围了。我想把在XT层画线并且线的颜色随层。该在哪里加呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 16:02:44 | 显示全部楼层
谢谢 ll_j  
我已经改了。把
'(62 . 3)=>'(8 . "XT") '(62 . 256)。就可以实现在xt下画线并颜色随层了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10260个

财富等级: 富甲天下

发表于 2013-6-8 20:29:29 | 显示全部楼层
cz7873559 发表于 2013-6-8 15:52
代码运行后一个图中有3个以上的字符是相同的,框选两个之后,没选到(或是在隐藏的图层)的第三个也会跟着 ...

32楼已改。

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 01:35 , Processed in 0.472615 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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