明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3031|回复: 19

请问,如何求某一点到一pl线的距离

  [复制链接]
发表于 2002-10-27 20:00:00 | 显示全部楼层 |阅读模式
 楼主| 发表于 2002-11-1 08:25:00 | 显示全部楼层

这位老兄,不要用英格里西好吗,看不懂。

 楼主| 发表于 2002-11-1 08:25:00 | 显示全部楼层

不是这个距离喔,是垂线距离。

发表于 2002-10-28 12:51:00 | 显示全部楼层

我的方法。

1.在CAD状态下可以直接用dist命令。
2.在程序当中,先求得PL线的两个端点,然后过指定点做它的垂线,取得
交点,再求出距离。(如果PL线是圆弧,我也没有办法)
发表于 2002-10-28 17:08:00 | 显示全部楼层

我的方法只能得到点到线段的距离,其它的我也没办法

(defun c:dis()
  (setq xtbl (getvar "osmode"))
  (setvar "osmode" 39)
  (setq pot (getpoint "\n 请选择点")
        xian (car (entsel "\n 请选择直线"))
        pt1  (cdr (assoc 10 (entget xian)))
        pt2  (cdr (assoc 11 (entget xian)))
        ang1 (angle pt1 pt2)
        ang2 (angle pt1 pot)
        ang3 (- ang2 ang1)
        dis1 (distance pt1 pot)
        dis2 (* (cos ang3) dis1)
        pt3  (polar pt1 ang1 dis2)
        dis3 (distance pot pt3)
        )
  (setvar "osmode" xtbl)
  (princ "\n 点到直线的距离是:")
  (princ dis3)
  (princ)
  )
发表于 2002-10-28 20:44:00 | 显示全部楼层

圆弧,(- (distance pt 圆心) 圆弧半径

 楼主| 发表于 2002-10-29 13:01:00 | 显示全部楼层

3Q, 看来我只要炸开再求距离了。

发表于 2002-10-29 14:07:00 | 显示全部楼层

I don't really catch your question...

I don't really catch your question. But if you can get it via exploding it, of course you can get it by extracting all the data from the lWPOLYLINE.

Use ENTGET you can get all the vertice's coordinates and (for arc) the bulge value, which is is the tangent of 1/4 of the included angle for the arc between the selected vertex and the next vertex in the polyline's vertex list.
发表于 2002-10-30 07:57:00 | 显示全部楼层

一点到一pl线的距离??它的实际用途是甚么?????

发表于 2002-10-30 12:28:00 | 显示全部楼层

测试版:一点与线的最短距离

;;测试版:一点与线的最短距离
(defun C:TEST (/ SS STARTPOINT ENDPOINT QQ WW PT)
  (setq SS (car (entsel "\n选择线: ")))
  (setq WW (getpoint "\n选择点: "))
  (setq        STARTPOINT
         (vlax-curve-getstartpoint
           (vlax-ename->vla-object SS)
         )
  )
  (setq        ENDPOINT (vlax-curve-getendpoint
                   (vlax-ename->vla-object SS)
                 )
  )
  (setq        QQ (vlax-curve-getclosestpointto
             (vlax-ename->vla-object SS)
             WW
           )
  )
  (if (or (equal QQ STARTPOINT)
          (equal QQ ENDPOINT)
      )
    (if        (> (distance WW STARTPOINT) (distance WW ENDPOINT))
      (SETQ PT ENDPOINT)
      (SETQ PT STARTPOINT)
    )
    (progn
      (command "_.line" WW "per" QQ "")
      (command "_.erase" (entlast) "")
      (SETQ PT (getvar "lastpoint"))
    )
  )
  (COMMAND "_.LINE" WW PT "")
  (COMMAND "_.CIRCLE" WW PT)
  (DISTANCE WW PT)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 20:20 , Processed in 0.195578 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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