明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1697|回复: 5

怎样查找某个坐标的最近的线

[复制链接]
发表于 2009-2-2 19:53:00 | 显示全部楼层 |阅读模式
请教各位大哥,假如给出坐标,怎样查找距离这个坐标最近的线,有的说用SSGET "C",慢慢放大选择集,这种方法准确度不是很高,使用起来也不太方便,有更好的方法吗?
发表于 2009-2-3 09:01:00 | 显示全部楼层
俺也不知道,呵呵!
发表于 2009-2-3 10:28:00 | 显示全部楼层
文字对象和块对象不能计算,以下是代码,刚写的,供你参考!
  1. (setq SSAll(ssget"x"'((0 . "SPLINE,ARC,CIRCLE,LINE,POLYLINE,LWPOLYLINE,ELLIPSE"))));,INSERT,TEXT
  2. (setq pt(getpoint"\n请输入基点:"));
  3. (if pt
  4.   (progn
  5.     (setq SSLen(sslength SSAll)i 0)
  6.     (repeat SSLen
  7.       (setq Ename(ssname SSAll i)i(1+ i))
  8.       (setq dxf(entget Ename))
  9.       (if(= i 1)
  10. (progn
  11.     (setq OUtName Ename)
  12.     (setq Npt(vlax-curve-getClosestPointTo Ename pt T));垂直点
  13.    (setq dist1(distance pt Npt))
  14. )
  15. (progn
  16.     (setq Npt(vlax-curve-getClosestPointTo Ename pt T));垂直点
  17.    (setq dist2(distance pt Npt))
  18.    (if(> dist1 dist2)(setq dist1 dist2 OUtName Ename))
  19.    ))
  20.     )
  21.   )
  22.   )
 楼主| 发表于 2009-2-3 17:28:00 | 显示全部楼层

在这里先谢谢你了,你的方法是先把整幅图东西垂直点都跟着计算一遍,然后筛选,这样要是图很大的话好慢啊,还有更好的思路吗,

发表于 2009-2-4 08:44:00 | 显示全部楼层
E,快一点的方法可能是这样子吧:

              固定区域选取法
1、用放大命令把基点(指找最近对象的点)放到绘图区中间;
2、进行选取;
3、筛选最近对象;
4、放大还原。
  1. (setq pt(getpoint"\n请输入基点:"));
  2. (setq p1(list(-(car pt)100)(-(cadr pt)100))
  3.       p2(list(+(car pt)100)(+(cadr pt)100)))
  4. (command".zoom" p1 p2)
  5. (setq SS(ssget "C" p1 p2'((0 . "SPLINE,ARC,CIRCLE,LINE,POLYLINE,LWPOLYLINE,ELLIPSE"))))
  6. (if SS
  7.    (progn
  8.      (setq SSLen(sslength SS)i 0)
  9.      (repeat SSLen
  10.        (setq Ename(ssname SS i)i(1+ i))
  11.        (setq dxf(entget Ename))
  12.        (if(= i 1)
  13.   (progn
  14.      (setq OUtName Ename)
  15.      (setq Npt(vlax-curve-getClosestPointTo Ename pt T));垂直点
  16.     (setq dist1(distance pt Npt))
  17.   )
  18.   (progn
  19.      (setq Npt(vlax-curve-getClosestPointTo Ename pt T));垂直点
  20.     (setq dist2(distance pt Npt))
  21.     (if(> dist1 dist2)(setq dist1 dist2 OUtName Ename))
  22.     ))
  23.      )
  24.    )
  25.    )
  26. (command".zoom" "P")
 楼主| 发表于 2009-2-4 11:32:00 | 显示全部楼层
谢谢版主,版主辛苦了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-29 17:20 , Processed in 0.173648 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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