autolisp,想画出两个同心矩形,两个矩形的边距离为20,但不知道为什么变成两个一模一样的矩形,求问?(defun c:ban();求第一个矩形的点(setq p1 (getpoint "输入基准点:"))(setq chang (getreal "\n长:"))(setq gao
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/23 08:20:57
![autolisp,想画出两个同心矩形,两个矩形的边距离为20,但不知道为什么变成两个一模一样的矩形,求问?(defun c:ban();求第一个矩形的点(setq p1 (getpoint](/uploads/image/z/13359371-59-1.jpg?t=autolisp%2C%E6%83%B3%E7%94%BB%E5%87%BA%E4%B8%A4%E4%B8%AA%E5%90%8C%E5%BF%83%E7%9F%A9%E5%BD%A2%2C%E4%B8%A4%E4%B8%AA%E7%9F%A9%E5%BD%A2%E7%9A%84%E8%BE%B9%E8%B7%9D%E7%A6%BB%E4%B8%BA20%2C%E4%BD%86%E4%B8%8D%E7%9F%A5%E9%81%93%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8F%98%E6%88%90%E4%B8%A4%E4%B8%AA%E4%B8%80%E6%A8%A1%E4%B8%80%E6%A0%B7%E7%9A%84%E7%9F%A9%E5%BD%A2%2C%E6%B1%82%E9%97%AE%3F%28defun+c%3Aban%28%29%3B%E6%B1%82%E7%AC%AC%E4%B8%80%E4%B8%AA%E7%9F%A9%E5%BD%A2%E7%9A%84%E7%82%B9%28setq+p1+%28getpoint+%22%E8%BE%93%E5%85%A5%E5%9F%BA%E5%87%86%E7%82%B9%EF%BC%9A%22%29%29%28setq+chang+%28getreal+%22%5Cn%E9%95%BF%3A%22%29%29%28setq+gao)
autolisp,想画出两个同心矩形,两个矩形的边距离为20,但不知道为什么变成两个一模一样的矩形,求问?(defun c:ban();求第一个矩形的点(setq p1 (getpoint "输入基准点:"))(setq chang (getreal "\n长:"))(setq gao
autolisp,想画出两个同心矩形,两个矩形的边距离为20,但不知道为什么变成两个一模一样的矩形,求问?
(defun c:ban()
;求第一个矩形的点
(setq p1 (getpoint "输入基准点:"))
(setq chang (getreal "\n长:"))
(setq gao (getreal "\n高:"))
(setq p2 (polar p1 0 chang))
(setq p3 (polar p1 (/ pi 2) gao))
(setq p4 (polar p3 0 chang))
;以下依据 p1、p2、p3、p4 点画矩形
(command "rectang" p1 p4)
;以下mp1、mp2、mp3、mp4确定另一矩形的4个点
(setq mp1 (list (- (car p1) 20) (+(cadr p1) 20)))
(setq mp2 (list (- (car p2) 20) (+(cadr p2) 20)))
(setq mp3 (list (+ (car p3) 20) (-(cadr p3) 20)))
(setq mp4 (list (- (car p4) 20) (-(cadr p4) 20)))
(command "rectang" mp1 mp4)
)
例如:运行程序后输入1000 和800,那应该出来1000X800和960X760的两个矩形。但结果是两个1000X800的矩形。而且当我不画第一个矩形的时候,960X760的矩形就出来了。
autolisp,想画出两个同心矩形,两个矩形的边距离为20,但不知道为什么变成两个一模一样的矩形,求问?(defun c:ban();求第一个矩形的点(setq p1 (getpoint "输入基准点:"))(setq chang (getreal "\n长:"))(setq gao
下面是我改过的代码,你试一下,应该还有些地方可以再完完善的,比如加上检测矩形大小的语句等.
(defun c:ban ()
;求第一个矩形的点
(setq p1 (getpoint "输入基准点:"))
(setq chang (getreal "\n长:"))
(setq gao (getreal "\n高:"))
(setq p2 (polar p1 0 chang))
(setq p3 (polar p1 (/ pi 2) gao))
(setq p4 (polar p3 0 chang))
;以下依据 p1、p2、p3、p4 点画矩形
(command "rectang" p1 p4)
;以下mp1、mp2、mp3、mp4确定另一矩形的4个点
(setq mp1 (list (+ (car p1) 20) (+ (cadr p1) 20)))
(setq mp2 (list (- (car p2) 20) (+ (cadr p2) 20)))
(setq mp3 (list (+ (car p3) 20) (- (cadr p3) 20)))
(setq mp4 (list (- (car p4) 20) (- (cadr p4) 20)))
(command "rectang" mp1 mp4)
)
把捕捉模式改为关,在程序的第二行加一句(setvar "osmode" 0)就可以了,你试试吧