用LISP编写一程序,可在任意位置绘制任意大小图形

如题所述

(defun c:6jx()
(setq cm (getvar "cmdecho") os (getvar "osmode"))
(setvar "cmdecho" 0)
(command "_undo" "be")
(while (progn (setvar "osmode" 33)
(setq pt (getpoint "\n请选取插入点<回车结束>:"))
)
(if (= (setq a (getreal "\n三角形边长<10>:")) nil)
(setq a 10.0)
)
(setq p1 pt
p2 (mapcar '+ p1 (list a 0))
p3 (polar p1 (* pi (/ -1.0 3.0)) a)
p4 (mapcar '* (mapcar '+ p1 p2) '(0.5 0.5))
p5 (mapcar '* (mapcar '+ p2 p3) '(0.5 0.5))
p6 (mapcar '* (mapcar '+ p3 p1) '(0.5 0.5))
p7 (inters p1 p5 p2 p6)
p8 (mapcar '+ p7 '(1 0))
)
(setvar "osmode" 0)
(command "_pline" p1 p2 p3 "c")
(command "_mirror" (entlast) "" p7 p8 "n")
(command "_pline" p4 p5 p6 "c")
)
(command "_undo" "e")
(setvar "osmode" os) (setvar "cmdecho" cm)
(princ)
)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-09
相似回答