明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2085|回复: 5

[求助]如何判断点在线的上面还是下面

  [复制链接]
发表于 2007-9-20 17:23 | 显示全部楼层 |阅读模式

我想到的是采用角度。比较线的角度和。点与一线点的角度。但是我发现会有判断错的地方。

想了好久没想清楚。

大家说说方法。还有就是什么函数来获取线与线的交点?

发表于 2007-9-20 18:38 | 显示全部楼层
inters
 

求两条直线的交点

(inters pt1 pt2 pt3 pt4 [onseg]) 

所有的点都以当前 UCS 表示,如果提供的四个点都是三维点,inters 函数检查三维交点。只要所提供的点中有一个是二维点,inters 函数就将这两条线投影到当前构造平面上,仅检查二维交点。

参数

pt1

第一条直线的端点。

pt2

第一条直线的另一端点。

pt3

第二条直线的端点。

pt4

第二条直线的另一端点。

onseg

如果指定为 nil,则由四个 pt 参数定义的两条线被认为是无限长的。如果省略 onseg 参数或其值不为 nil,则交点必须同时位于两条线上,否则 inters 返回 nil。

返回值

如果 onseg 参数存在且为 nil,则 inters 返回交点坐标,即使这个交点不在其中的一条线(或者两条线)的端点范围之内。如果忽略 onseg 参数或其值不为 nil,则交点必须同时位于两条线上,否则 inters 返回 nil。如果两条直线不相交,inters 函数返回 nil。

示例

(setq a '(1.0 1.0) b '(9.0 9.0)) 
(setq c '(4.0 1.0) d '(4.0 2.0))

命令: (inters a b c d)

nil

命令: (inters a b c d T)

nil

命令: (inters a b c d nil)

(4.0 4.0)

发表于 2007-9-20 19:39 | 显示全部楼层

(defun c:new ()
  (setq point1  (getpoint "\nSelect a point:")
 line-obj (entget (car (entsel "\nSelect a line:")))
 line-p1  (cdr (assoc 10 line-obj))
 line-p2  (cdr (assoc 11 line-obj))
  )
  (setq point2 (list (+ (car point1) 200) (cadr point1))
  )
  (setq point0 (inters point1 point2 line-p1 line-p2 nil))
  (princ point0)
  (princ point1)
  (if (/= (car line-p1) (car line-p2))
    (if (/= point0 nil)
      (if (equal (car point0) (car point1) 0.0001)
 (princ "\n在线上")
 (if (> (* (- (car point0) (car point1))
    (/ (- (cadr line-p1) (cadr line-p2))
       (- (car line-p1) (car line-p2))
    )
        )
        0
     )
   (princ "\n在线上方")
   (princ "\n在线下方")
 )
      )
      (if (> (cadr point1) (cadr line-p1))
 (princ "\n在线上方")
 (princ "\n在线下方")
      )
    )
    (princ "\n为竖直线")
  )
  (princ)
)

应该能实现你的要求

 楼主| 发表于 2007-9-21 13:39 | 显示全部楼层

谢谢了。

楼上的给点注释好点。一看就知道。。

主要是想知道方法。谢谢了

发表于 2007-9-22 18:33 | 显示全部楼层

还可以,想知道燕秀工具箱中的运水是怎样做的,3楼的兄弟能否给点思路,我做了好久,循环部分就是做不出

 楼主| 发表于 2007-9-29 17:57 | 显示全部楼层

我想知道cad里offset,cad得偏移是怎么来判断一点与直线得相对位移(就是知道偏移得方向。)

是上面得通过交点来判断。还是用角度?。。。。

我怎么感觉做出来的程序有bug的。。还是不是很懂。。

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

本版积分规则

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

GMT+8, 2024-5-3 01:45 , Processed in 0.334524 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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