就是,一句就足够了,一楼的程序实际上就是一个判断,他分别就a<b,a>b的两种情况下分别列出了a<180,b<180;a<180,b>180;a>180,b>180三种情况,但最后的setq还是一样的. 试试 (DEFUN CCW_ANG (/ p1 p2 p3 A B) (setvar "cmdecho" 0) (setq p1 (getpoint "\n起点:")) (setq p2 (getpoint "\n中点:")) (setq p3 (getpoint "\n终点:")) (setq A (ANGLE P2 P1)) (setq B (ANGLE P2 P3)) (command "_.line" p1 p2 p3 "") (command "_.arc" "c" p2 (polar p2 A (/ (+ (distance p2 p1) (distance p2 p3)) 10)) (polar p2 B (/ (+ (distance p2 p1) (distance p2 p3)) 10))) (COND ((> A B) (SETQ ANG (+ B (- (* 2 pi) A))) ) ((< A B) (SETQ ANG (- B A)) ) (T NIL) ) (setq ANG (angtos ang 0)) (PRINc (strcat "\n三点逆时针角度:" ang "度")) (setvar "cmdecho" 1) ) |