
跪求大神编写一个程序,比较急,很感谢。。。用Lisp语言编写下面这个CAD图形的程序
1个回答
展开全部
;请试用以下程序
(defun c:gz()
(setq cm (getvar "cmdecho") os (getvar "osmode"))
(setvar "cmdecho" 0)
(command "_undo" "be")
(if (and (setq a (getreal "\n工字的长:"))
(setq b (getreal "\n工字的高:"))
)
(progn
(setvar "osmode" 33) ;捕捉端点及交点
(if (setq pt0 (getpoint "\n插入点:"))
(progn
(setq ptb (list '(0 0)
(list a 0)
(list a b)
(list (/ (* 2.0 a) 3.0) b)
(list (/ (* 2.0 a) 3.0) (* 2.0 b))
(list a (* 2.0 b))
(list a (* 3.0 b))
(list 0 (* 3.0 b))
(list 0 (* 2.0 b))
(list (/ a 3.0) (* 2.0 b))
(list (/ a 3.0) b)
(list 0 b)
)
)
(setvar "osmode" 0)
(command "_pline")
(foreach pt ptb
(command (mapcar '+ pt0 pt))
)
(command "c" )
)
)
)
)
(command "_undo" "e")
(setvar "osmode" os) (setvar "cmdecho" cm)
(princ)
)
(defun c:gz()
(setq cm (getvar "cmdecho") os (getvar "osmode"))
(setvar "cmdecho" 0)
(command "_undo" "be")
(if (and (setq a (getreal "\n工字的长:"))
(setq b (getreal "\n工字的高:"))
)
(progn
(setvar "osmode" 33) ;捕捉端点及交点
(if (setq pt0 (getpoint "\n插入点:"))
(progn
(setq ptb (list '(0 0)
(list a 0)
(list a b)
(list (/ (* 2.0 a) 3.0) b)
(list (/ (* 2.0 a) 3.0) (* 2.0 b))
(list a (* 2.0 b))
(list a (* 3.0 b))
(list 0 (* 3.0 b))
(list 0 (* 2.0 b))
(list (/ a 3.0) (* 2.0 b))
(list (/ a 3.0) b)
(list 0 b)
)
)
(setvar "osmode" 0)
(command "_pline")
(foreach pt ptb
(command (mapcar '+ pt0 pt))
)
(command "c" )
)
)
)
)
(command "_undo" "e")
(setvar "osmode" os) (setvar "cmdecho" cm)
(princ)
)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询