;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;幕匠LISP实验室;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;程序功能：画角平分线   [备注：]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;aqq平分角，拾取两条线并从其交点绘制平分线延长至第一个拾取点,如果两线平行则中止。
;qaa画与X轴成一定角度的直线
(defun getln (PR)
   (setq TYPE "nil"
   PRMPT (strcat "\n拾取" PR "线： "))
   (while (/= TYPE "LINE")
      (if (/= (setq TEMP (entsel PRMPT)) nil)
         (progn
            (setq LN1 (entget (car TEMP))
            TYPE (cdr (assoc 0 LN1)))
            (if (/= TYPE "LINE")
            (print (strcat "不能截开 " TYPE)))
         )
         (print "Invalid point")
      )
   ) ;end while
) ;end getln()

(DEFUN C:aqq (/ P1 P2 P3 P4 PIK1 PIK2 LN1 P5 P6 ANGA ANGB ANGC TEMP TYPE)
   (getln "第一条")
   (setq P1 (cdr (assoc 10 LN1))
      P2 (cdr (assoc 11 LN1))
      PIK1 (osnap (cadr TEMP) "near")
   )
   (getln "第二条")
   (setq p3 (cdr (assoc 10 LN1))
      P4 (cdr (assoc 11 LN1))
      PIK2 (osnap (cadr TEMP) "near")
   )
   ; 取交点和角度
   (setq P5 (inters P1 P2 P3 P4 nil)
      ANGA (angle P5 PIK1)
      ANGB (angle P5 PIK2)
   )
   (if (> ANGA ANGB)
      (setq ANGC (+ (/ (+ (- (* 2 pi) ANGA) ANGB) 2) ANGA))
      (setq ANGC (+ (/ (- ANGB ANGA) 2) ANGA))
   )
   ; 从交点绘制平分线到一定长度
   (command "LINE" P5 (polar P5 ANGC (distance P5 PIK1)) "")       
   (prin1) 
); end bisect.lsp

;;画与X轴成一定角度的直线
(defun c:qaa (/ r pt1  a dis pt3)
(setq pt1 (getpoint "\n指定点:"))
(setq a (getangle  pt1 "\n指定通过的点或夹角:"))
(setq dis (getdist "\n输入直线长度:"))
(setq pt3 (polar pt1 a dis))
(command "line" pt1 pt3 "")
(princ))