明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2207|回复: 5

[提问] 如何选择离文字最近的直线

[复制链接]
发表于 2014-4-22 20:42 | 显示全部楼层 |阅读模式
如题,如何判断出离文字最近的线,并选择它,eg:一个文字周围有很多直线,我先选择了文字,然后框选周围所有的线,希望能选出最近的线。       主要是不懂怎么去实习这个判断的过程。  最终的目的是框选所有文字,文字平行到离它最近的直线,直线可能是斜的
发表于 2014-4-23 19:35 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-4-23 20:53 编辑

这个我只会用笨办法,选出所有直线,计算它到文字的距离(用文字的哪个点呢?)取出距离最小的一个
(setq a(car(entsel"选取文字")))
(setq p(cdr(assoc 10(entget a)))i 0);;不清楚楼主的具体情况,暂时用10组的坐标吧
(setq ss(ssget"X" '((0 . "LINE"))));;;(setq ss(ssget '((0 . "LINE"))))
(repeat (sslength ss)
   (setq en(ssname ss i)i(1+ i)
            ens(cons(cons en(distance(vlax-curve-getClosestPointTo(vlax-ename->vla-object en)p)p))ens)))
(sssetfirst(ssadd(caar(vl-sort ens (function(lambda(e1 e2)(<(cdr e1)(cdr e2))))))))

点评

欠示例 费猜疑  发表于 2014-4-23 19:39

评分

参与人数 1明经币 +3 收起 理由
xyp1964 + 3 赞一个!

查看全部评分

发表于 2014-4-23 21:21 | 显示全部楼层
还有一个思路:以选中的文字位置为中心,根据你的需求指定一个长度构建一个正方形(或其它形状的区域),用“窗交”的方式选择直线,其它地方与llsheng_73的程序相同。若直线很多时,这样选择可以大大地提高速度,尤其是要处理的文字也较多时。但选择一个适当的长度是关键!

点评

没法给出"适当"的距离情况下可以考虑由近及远,就简单的作个正方形区域,不停放大“窗交”区域直到选直线为止  发表于 2014-4-23 22:47
发表于 2014-4-24 13:38 | 显示全部楼层
本帖最后由 xyp1964 于 2014-4-24 13:40 编辑
  1. (if (and (setq s1 (car (entsel "\n选取文字: ")))
  2.            (setq ss (ssget '((0 . "LINE"))))
  3.     )
  4.   (progn
  5.     (setq pt (cdr (assoc 10 (entget s1)))
  6.           lst '()
  7.           i   -1
  8.     )
  9.     (repeat (sslength ss)
  10.       (setq s1 (ssname ss (setq i (1+ i)))
  11.             l1 (distance (vlax-curve-getClosestPointTo s1 pt) pt)
  12.             lst (cons (list s1 l1) lst)
  13.       )
  14.     )
  15.     (caar (vl-sort lst '(lambda (x y) (< (cadr x) (cadr y)))))
  16.   )
  17. )
发表于 2014-4-24 15:23 | 显示全部楼层
本帖最后由 819534890 于 2014-4-24 16:17 编辑

还要看看你怎样理解“最近”这个概念:
1、离文字插入点最近,这个比较容易实现;
2、离文字范围内某个指定点(例如下中点、中心点)最近,稍微复杂但不难;
3、如果是整个文字范围(包围盒)的最近点,就比较复杂,要判断线与矩形的最近距离,还要判断线与文字相交的情况。
 楼主| 发表于 2014-4-28 09:53 | 显示全部楼层
xyp1964 发表于 2014-4-24 13:38

院长 我按你的那个写了个类似的,但是想再判断个文字是上下的 ,求指点啊 http://bbs.xdcad.net/thread-673496-1-1.html

点评

不会  发表于 2014-4-28 12:42
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-17 02:26 , Processed in 0.223824 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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