lisp吧 关注:2,679贴子:12,839
  • 2回复贴,共1

lisp判断点是否在直线上(包括直线延长线)

只看楼主收藏回复

;判断点是否在直线上(online 直线图元 点)
(defun online (en pt / ent pt1 pt2 l1 l2 l3 llist)
(setq ent (entget en))
(setq pt1 (cdr (assoc '10 ent)))
(setq pt2 (cdr (assoc '11 ent)))
(setq l1 (distance pt pt1))
(setq l2 (distance pt pt2))
(setq l3 (distance pt2 pt1))
(setq llist (vl-sort (list l1 l2 l3) '>))
(if (equal (car llist) (+ (cadr llist) (caddr llist)) 1e-6)
t
nil
)
)


IP属地:陕西1楼2019-08-07 11:21回复
    最后那个if没必要,只要(equal (car llist) (+ (cadr llist) (caddr llist)) 1e-6)这里就行了


    IP属地:四川来自Android客户端2楼2019-08-08 22:47
    回复
      2025-05-12 08:55:50
      广告
      感觉用角度会更简单一些,角度相等或差180就是共线


      IP属地:江苏来自iPhone客户端3楼2019-08-11 23:00
      回复