回复 yunfengning 的帖子
 - ;;;(Get3PtAngle p1 p2 p3) = 求3点逆时针角度.
- ;;;参数: p1 p2 p3 点. p2为角点.
- ;;;返回: 弧度角.
- (defun Get3PtAngle (p1 p2 p3 / ans a b an)
- (setq ans (list(angle p1 p2)(angle p3 p2))
- a (apply 'min ans)
- b (apply 'max ans)
- an (- b a))
- (if (= a (car ans))
- an
- (- (* 2 PI) an)
- )
- )
- (defun c:tt()
- (princ "\n***逆时针方向选取直线***")
- (if
- (and (setq l1 (entsel "\n 第一条直线 :"))
- (= "LINE" (cdr (assoc 0 (setq enl1 (entget (car l1))))))
- (setq l2 (entsel "\n 第二条直线 :"))
- (= "LINE" (cdr (assoc 0 (setq enl2 (entget (car l2))))))
- )
- (progn
- (setq p1 (cadr l1)
- l1 (car l1)
- p10 (cdr (assoc 10 enl1))
- p11 (cdr (assoc 11 enl1))
- p2 (cadr l2)
- l2 (car l2)
- p20 (cdr (assoc 10 enl2))
- p21 (cdr (assoc 11 enl2))
- p0 (inters p10 p11 p20 p21 nil)
- )
- (if p0
- (progn
- (if (< (distance p1 p10) (distance p1 p11)) (setq p1 p10) (setq p1 p11))
- (if (< (distance p2 p20) (distance p2 p21)) (setq p2 p20) (setq p2 p21))
- (setq ang (Get3PtAngle p1 p0 p2)
- ang0 (angle p0 p1)
- ang1 (+ ang0 (/ ang 3))
- ang2 (+ ang1 (/ ang 3))
- d (/ (+ (distance p0 p1) (distance p0 p2)) 2)
- )
- (command "line" p0 (strcat "@" (rtos d 2 4) "<" (angtos ang1 0 4)) "")
- (command "line" p0 (strcat "@" (rtos d 2 4) "<" (angtos ang2 0 4)) "")
- )
- (alert "两直线无交点!")
- )
- )
- (alert "请选择两条直线")
- )
- )
|