早教吧作业答案频道 -->其他-->
Autolisp帮解决下难题(defunc:yzluow(/)(setqb1(getpoint"指定基点:"))(setqr1(getreal"\n指定初始半径:"))(setqdisp(getreal"\n指定节距:"))(setqangtg(getreal"\n输入圆形角:"))(setqm(getreal"\n输入圈数:"))(setqn(getreal"\
题目详情
Autolisp 帮解决下难题
(defun c:yzluow(/)
(setq b1(getpoint"指定基点:"))
(setq r1(getreal"\n指定初始半径:"))
(setq disp(getreal"\n指定节距:"))
(setq angtg(getreal"\n输入圆形角:"))
(setq m(getreal"\n输入圈数:"))
(setq n(getreal"\n输入每圈细化段数:"))
(cond ((null n) (setq n 36)))
(setq delta(/(* 2 pi) n))
(setq j(/ disp n))
(setq bb(caddr b1))
(setq tg(*(/ angta 180) pi))
(setq ang 0)
(setq k 0)
(command "ucs" "o" b1)
(command "3dpoly" (list r1 0 0))
(repeat (* m n))
(setq k(+ k 1))
(setq ang(+ delta ang))
(setq r(- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg)))))
(setq pt2(list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j k))))
(command pt2)
)
(command "")
)
运行后 提示
错误:SETQ 中变量名称错误:(SETQ PT1 (LIST (* R (COS ANG)) (* R (SIN
ANG)) (+ 0 (* J K)))) 怎么回事 能帮改改么
(defun c:yzluow(/)
(setq b1(getpoint"指定基点:"))
(setq r1(getreal"\n指定初始半径:"))
(setq disp(getreal"\n指定节距:"))
(setq angtg(getreal"\n输入圆形角:"))
(setq m(getreal"\n输入圈数:"))
(setq n(getreal"\n输入每圈细化段数:"))
(cond ((null n) (setq n 36)))
(setq delta(/(* 2 pi) n))
(setq j(/ disp n))
(setq bb(caddr b1))
(setq tg(*(/ angta 180) pi))
(setq ang 0)
(setq k 0)
(command "ucs" "o" b1)
(command "3dpoly" (list r1 0 0))
(repeat (* m n))
(setq k(+ k 1))
(setq ang(+ delta ang))
(setq r(- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg)))))
(setq pt2(list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j k))))
(command pt2)
)
(command "")
)
运行后 提示
错误:SETQ 中变量名称错误:(SETQ PT1 (LIST (* R (COS ANG)) (* R (SIN
ANG)) (+ 0 (* J K)))) 怎么回事 能帮改改么
▼优质解答
答案和解析
程序中变量名前后不一致,有多")"和少")"现象,应如下:
(defun c:yzluow(/)
(setq r1(getreal"\n指定初始半径:"))
(setq disp(getreal"\n指定节距:"))
(setq angtg(getreal"\n输入圆形角:"))
;(setq m(getreal"\n输入圈数:"))
;(setq n(getreal"\n输入每圈细化段数:"))
;因为repeat后面要求跟整数,所以这两行应改为如下:
(setq m(getint "\n输入圈数:"))
(setq n(getint "\n输入每圈细化段数:"))
(cond ((null n) (setq n 36)))
(setq delta(/(* 2 pi) n))
(setq j(/ disp n))
(setq bb(caddr b1))
;(setq tg(*(/ angta 180) pi));变量错,应为
(setq tg(*(/ angtg 180) pi))
(setq ang 0)
(setq k 0)
(command "ucs" "o" b1)
(command "3dpoly" (list r1 0 0))
;(repeat (* m n));最后面多一个")"
(repeat (* m n)
(setq k (+ k 1))
(setq ang (+ delta ang))
;(setq r(- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg)))));最后面少一个")"
(setq r (- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg))))))
(setq pt2 (list (* r (cos ang)) (* r (sin ang)) (+ 0.0 (* j k))))
(command pt2)
)
(command "")
(princ)
)
(defun c:yzluow(/)
(setq r1(getreal"\n指定初始半径:"))
(setq disp(getreal"\n指定节距:"))
(setq angtg(getreal"\n输入圆形角:"))
;(setq m(getreal"\n输入圈数:"))
;(setq n(getreal"\n输入每圈细化段数:"))
;因为repeat后面要求跟整数,所以这两行应改为如下:
(setq m(getint "\n输入圈数:"))
(setq n(getint "\n输入每圈细化段数:"))
(cond ((null n) (setq n 36)))
(setq delta(/(* 2 pi) n))
(setq j(/ disp n))
(setq bb(caddr b1))
;(setq tg(*(/ angta 180) pi));变量错,应为
(setq tg(*(/ angtg 180) pi))
(setq ang 0)
(setq k 0)
(command "ucs" "o" b1)
(command "3dpoly" (list r1 0 0))
;(repeat (* m n));最后面多一个")"
(repeat (* m n)
(setq k (+ k 1))
(setq ang (+ delta ang))
;(setq r(- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg)))));最后面少一个")"
(setq r (- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg))))))
(setq pt2 (list (* r (cos ang)) (* r (sin ang)) (+ 0.0 (* j k))))
(command pt2)
)
(command "")
(princ)
)
看了 Autolisp帮解决下难题...的网友还看了以下:
在平面直角坐标系中 已知a (3,0 ),B(0,4),O为坐标原点,以点P为圆心的圆P半径为1, 2020-05-16 …
过m边形的一个顶点有7条对角线,n边形没有对角线,p边形有p条对角线,求(m-n)^p的值 2020-05-23 …
1.N边形有N条对角线,M边形没有对角线,P边形从一个顶点出发的对角线有7条对角线,则(p-n)的 2020-05-23 …
提早出现的QRS波群宽大畸形,其前有提早出现的异位P波,形态与正常窦性P波不同,P-R间期>0.12 2020-06-07 …
在“¬p”,“p∧q”,“p∨q”形式的命题中,“p∨q”为真,“p∧q”为假,“¬p”为真,那么 2020-06-12 …
由命题p“矩形有外接圆”,q:“矩形有内切圆”组成的复合命题“p或q”“p且q”“非p”的形式真命 2020-06-20 …
过m边形的一个顶点有8条对角线,n边形没有对角线,p边形有p条对角线,试求(m-p)n的值. 2020-07-25 …
过m边形的一个顶点有8条对角线,n边形没有对角线,p边形有p条对角线,试求(m-p)n的值. 2020-07-25 …
已知过m边形的一个顶点有7条对角线,n边形没有对角线,p边形有p条对角线,求(m-p)n四方的值 2020-11-07 …
若过m边形的一个顶点有8条对角线,n边形没有对角线,p边形有p条对角线,h边形的内角和与外角和相等. 2021-02-21 …