找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6859|回复: 56

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

[复制链接]
发表于 2013-6-7 23:01:39 | 显示全部楼层 |阅读模式

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

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

×
大家好;我想这两个效果:
1、框选图中文字后把相同的字符串变绿色。
2、再把他们用多线段或者直线(在XT图层中)连接起来。

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

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-7 23:03:34 | 显示全部楼层
你贴个图片吧说明下要的结果,和传个压缩的DWG文件到论坛,方便大家测试结果。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-7 23:14:53 | 显示全部楼层
请点击此处下载

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

您的用户组是:游客

文件名称:判断相同文字并连线.rar 
下载次数:21  文件大小:5.92 KB 
下载权限: 不限 以上  [免费赚D豆]

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

使用道具 举报

发表于 2013-6-7 23:32:22 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-6-8 08:46 编辑

呵呵,又一个可以这样做的应用,快成套路了[pcode=lisp,true](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-startundomark doc)
  (if (setq ss (ssget '((0 . "Text"))))
    (vl-catch-all-apply
      (function
(lambda (/ sl i e el str p)
   (if (not (tblsearch "layer" "xt"))
     (vl-cmdf ".layer" "m" "Xt" "c" "3" "" "")
   )
   (setq sl (sslength ss)
  i  -1
   )
   (repeat sl
     (setq e   (ssname ss (setq i (1+ i)))
    el  (entget e)
    str (strcat "fy" (cdr (assoc 1 el)))
    p   (cdr (assoc 10 el))
    p   (list (car p) (cadr p))
     )
     (set (read str) (cons (list p el) (eval (read str))))
     (if (vl-position str ll)
       nil
       (setq ll (cons str ll))
     )
   )
   (mapcar '(lambda (x / l pl)
       (setq l
       (apply
         'append
         (vl-sort
    (mapcar 'car x)
    '(lambda (e1 e2)
       (if
         (equal (car e1) (car e2) 1e-3)
          (< (cadr e1) (cadr e2))
          (< (car e1) (car e2))
       )
     )
         )
       )
       )
       (mapcar '(lambda (y)
    (entmod (append y '((62 . 3))))
         )
        (mapcar 'cadr x)
       )
       (setq
         pl (vla-addlightweightpolyline
       ms
       (vlax-make-variant
         (vlax-safearray-fill
    (vlax-make-safearray
      vlax-vbdouble
      (cons 0 (1- (length l)))
    )
    l
         )
       )
     )
       )
       (vla-put-layer pl "xt")
       (vla-put-color pl acred)
     )
    (vl-remove-if
      '(lambda (x) (= (length x) 1))
      (mapcar 'eval (mapcar 'read ll))
    )
   )
)
      )
    )
  )
  (vla-endundomark doc)
  (setvar "clayer" clyr)
  (if ll
    (mapcar '(lambda (x) (set (read x) nil)) ll)
  )
  (vlax-release-object doc)
  (vlax-release-object ms)
  (princ)
)[/pcode]

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2013-6-7 23:35:59 | 显示全部楼层
谢谢!但是显示的是  错误: no function definition: VLAX-GET-ACAD-OBJECT

点评

自己执行下 (vl-load-com)  详情 回复 发表于 2013-6-7 23:51
还用这么低的版本,先行 (vl-load-com)  详情 回复 发表于 2013-6-7 23:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-7 23:37:30 | 显示全部楼层
cz7873559 发表于 2013-6-7 23:35
谢谢!但是显示的是  错误: no function definition: VLAX-GET-ACAD-OBJECT

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

使用道具 举报

 楼主| 发表于 2013-6-7 23:40:45 | 显示全部楼层
我用了 还是表示不出相同的字符串

点评

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

使用道具 举报

 楼主| 发表于 2013-6-7 23:49:55 | 显示全部楼层
Free-Lancer
看在我付了积分的分上,麻烦你帮我把代码完善下嘛

点评

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

使用道具 举报

发表于 2013-6-7 23:51:15 | 显示全部楼层
cz7873559 发表于 2013-6-7 23:40
我用了 还是表示不出相同的字符串

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-7 23:51:30 | 显示全部楼层
cz7873559 发表于 2013-6-7 23:35
谢谢!但是显示的是  错误: no function definition: VLAX-GET-ACAD-OBJECT

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

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-7 23:52:36 | 显示全部楼层
cz7873559 发表于 2013-6-7 23:49
Free-Lancer
看在我付了积分的分上,麻烦你帮我把代码完善下嘛

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

使用道具 举报

 楼主| 发表于 2013-6-7 23:52:56 | 显示全部楼层
  1. (defun c:tt (/ doc ms ss ll)
  2.   (vl-load-com)
  3.   (setq        doc (vla-get-activedocument (vlax-get-acad-object))
  4.         ms  (vla-get-modelspace doc)
  5.   )
  6.   (vla-startundomark doc)
  7.   (if (setq ss (ssget '((0 . "Text"))))
  8.     (vl-catch-all-apply
  9.       (function        (lambda        (/ sl i e el str p)
  10.                   (setq        sl (sslength ss)
  11.                         i  -1
  12.                   )
  13.                   (repeat sl
  14.                     (setq e   (ssname ss (setq i (1+ i)))
  15.                           el  (entget e)
  16.                           str (strcat "fy" (cdr (assoc 1 el)))
  17.                           p   (cdr (assoc 10 el))
  18.                           p   (list (car p) (cadr p))
  19.                     )
  20.                     (set (read str) (cons p (eval (read str))))
  21.                     (if        (vl-position str ll)
  22.                       nil
  23.                       (setq ll (cons str ll))
  24.                     )
  25.                   )
  26.                   (mapcar '(lambda (x / l)
  27.                              (setq l
  28.                                     (apply
  29.                                       'append
  30.                                       (vl-sort
  31.                                         x
  32.                                         '(lambda (e1 e2)
  33.                                            (if
  34.                                              (equal (car e1) (car e2) 1e-3)
  35.                                               (< (cadr e1) (cadr e2))
  36.                                               (< (car e1) (car e2))
  37.                                            )
  38.                                          )
  39.                                       )
  40.                                     )
  41.                              )
  42.                              (vla-put-color
  43.                                (vla-addlightweightpolyline
  44.                                  ms
  45.                                  (vlax-make-variant
  46.                                    (vlax-safearray-fill
  47.                                      (vlax-make-safearray
  48.                                        vlax-vbdouble
  49.                                        (cons 0 (1- (length l)))
  50.                                      )
  51.                                      l
  52.                                    )
  53.                                  )
  54.                                )
  55.                                acred
  56.                              )
  57.                            )
  58.                           (mapcar 'eval (mapcar 'read ll))
  59.                   )
  60.                 )
  61.       )
  62.     )
  63.   )
  64.   (vla-endundomark doc)
  65.   (if ll
  66.     (mapcar '(lambda (x) (set (read x) nil)) ll)
  67.   )
  68.   (vlax-release-object doc)
  69.   (vlax-release-object ms)
  70.   (princ)
  71. )

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2013-6-7 23:55:40 | 显示全部楼层
这就是我想做的效果。麻烦大家下载看看。
请点击此处下载

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

您的用户组是:游客

文件名称:判断相同文字并连线.rar 
下载次数:6  文件大小:5.92 KB 
下载权限: 不限 以上  [免费赚D豆]

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

使用道具 举报

 楼主| 发表于 2013-6-7 23:56:28 | 显示全部楼层
我想实现在下面的代码基础上实现,把相同的字符串画上多线段链接起来。比如图中如果有相同字符串,则把相同的一组字符串在图层XT中画上多线段链接起来。当然还是支持框选。

点评

重新下载试试  详情 回复 发表于 2013-6-8 00:04
你用QQ截取下屏幕,就得到图片了啊,传图片上来大家看着方便。  详情 回复 发表于 2013-6-7 23:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 00:57 , Processed in 0.498023 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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