-
- (defun c:test (/ p1 p2 p3 p1_ p2_)
- (setq p1 (getpoint "\nPick Point1")
- p2 (getpoint "\nPick Point2")
- p3 (getpoint "\nPick Point3")
- )
- (setq p1_ (polar p1 (angle p1 p2)( / (distance p1 p2) 2))
- p2_ (car (vl-sort (list p1 p2)
- (function (lambda (y1 y2)
- (> (cadr y1) (cadr y2)))))))
- (if (<= (c:cal "ang(p1_,p2_,p3)") 180)
- (princ "\nUpper Side of P1 P2")
- (princ "\nLower Side of P1 P2")
- )
- (princ)
- )
测试功能:
- ;; Side of Ray - Lee Mac
- ;; Args: pt - test point, l1,l2 - points defining ray
- ;; Returns:
- ;; 0 if pt lies on ray
- ;; -1 if pt is right of ray
- ;; 1 if pt is left of ray
- (defun LM:SideOfRay ( pt l1 l2 / x )
- (cond
- ( (equal (setq x (sin (- (angle l1 pt) (angle l1 l2)))) 0.0 1e-14) 0)
- ( (minusp x) -1)
- ( 1 )
- )
- )
|