早教吧作业答案频道 -->其他-->
初学者,想知道下面的AutoLisp程序错在哪里(圆的渐开线)?怎么改(defunc:jkxg(/p0jrrmaxrdrphix0y0x1y1x2y2)(graphscr)(setqp0(getpoint"\n输入基圆的圆心:"))(setqjr(getdistp0"\n输入基圆的半径:"))(setq
题目详情
初学者,想知道下面的AutoLisp程序错在哪里(圆的渐开线)?怎么改
(defun c:jkxg(/ p0 jr rmax r dr phi x0 y0 x1 y1 x2 y2)
(graphscr)
(setq p0(getpoint"\n输入基圆的圆心:"))
(setq jr(getdist p0"\n输入基圆的半径:"))
(setq rmax(getdist "\n 输入渐开线的终止极径:"))
(command "circle"p0 r)
(setq dr(getdist "\n 输入极径增量:"))
(setq x0(car p0)y0(cadr p0))
(setq r jr)
(setq phi(sprt (- 1 (/ (* r r) (* jr jr))))
(setq x1(+ x0(* r(cos phi)))
(setq y1(+ y0(* r(sin phi)))
(while (< r rmax)
(setq r(+ r dr))
(setq x2(+ x0(* r(cos phi)))
(setq y2(+ y0(* r(sin phi)))
(command "line" ls (list x1 y1)(list x2 y2)"")
(setq ls (list x y))
(setq x1 x2 y1 y2)
编译的时候系统报列表错误.
(defun c:jkxg(/ p0 jr rmax r dr phi x0 y0 x1 y1 x2 y2)
(graphscr)
(setq p0(getpoint"\n输入基圆的圆心:"))
(setq jr(getdist p0"\n输入基圆的半径:"))
(setq rmax(getdist "\n 输入渐开线的终止极径:"))
(command "circle"p0 r)
(setq dr(getdist "\n 输入极径增量:"))
(setq x0(car p0)y0(cadr p0))
(setq r jr)
(setq phi(sprt (- 1 (/ (* r r) (* jr jr))))
(setq x1(+ x0(* r(cos phi)))
(setq y1(+ y0(* r(sin phi)))
(while (< r rmax)
(setq r(+ r dr))
(setq x2(+ x0(* r(cos phi)))
(setq y2(+ y0(* r(sin phi)))
(command "line" ls (list x1 y1)(list x2 y2)"")
(setq ls (list x y))
(setq x1 x2 y1 y2)
编译的时候系统报列表错误.
▼优质解答
答案和解析
(defun c:jkxg(/ p0 jr rmax r dr phi x0 y0 x1 y1 x2 y2)
(graphscr)
(setq p0(getpoint"\n输入基圆的圆心:"))
(setq jr(getdist p0"\n输入基圆的半径:"))
(setq rmax(getdist "\n 输入渐开线的终止极径:"))
(command "circle"p0 jr)
(setq dr(getdist "\n 输入极径增量:"))
(setq x0(car p0)y0(cadr p0))
(setq r jr)
(setq phi(sqrt (- 1 (/ (* r r) (* jr jr)))))
(setq x1(+ x0(* r(cos phi))))
(setq y1(+ y0(* r(sin phi))))
(while (< r rmax)
(setq r(+ r dr))
(setq x2(+ x0(* r(cos phi))))
(setq y2(+ y0(* r(sin phi))))
(command "line" ls (list x1 y1)(list x2 y2)"")
(setq ls (list x y))
(setq x1 x2 y1 y2)
)
)
;;少了好几个)肯定会提示出错的. 还有就是 sqrt 函数不是 sprt .改好了,加载是没问题,不过我随便输入数据画不出图形来,不知道是不是数据问题.
(graphscr)
(setq p0(getpoint"\n输入基圆的圆心:"))
(setq jr(getdist p0"\n输入基圆的半径:"))
(setq rmax(getdist "\n 输入渐开线的终止极径:"))
(command "circle"p0 jr)
(setq dr(getdist "\n 输入极径增量:"))
(setq x0(car p0)y0(cadr p0))
(setq r jr)
(setq phi(sqrt (- 1 (/ (* r r) (* jr jr)))))
(setq x1(+ x0(* r(cos phi))))
(setq y1(+ y0(* r(sin phi))))
(while (< r rmax)
(setq r(+ r dr))
(setq x2(+ x0(* r(cos phi))))
(setq y2(+ y0(* r(sin phi))))
(command "line" ls (list x1 y1)(list x2 y2)"")
(setq ls (list x y))
(setq x1 x2 y1 y2)
)
)
;;少了好几个)肯定会提示出错的. 还有就是 sqrt 函数不是 sprt .改好了,加载是没问题,不过我随便输入数据画不出图形来,不知道是不是数据问题.
看了 初学者,想知道下面的Auto...的网友还看了以下:
按下面的程序计算:若输入x=100,输出结果是501,若输入x=25,输出结果是631,若开始输入 2020-04-07 …
按下面的程序计算:若输入x=100,输出结果是501,若输入x=25,输出结果是631,若开始输入 2020-04-07 …
380/220变压器连接后,原3相电源中有2相之间的电阻几乎为0.这样岂不是造成了相间短路吗?例如 2020-06-11 …
有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚.问笼中各有几只鸡和兔?输入 2020-06-26 …
初学者,想知道下面的AutoLisp程序错在哪里(圆的渐开线)?怎么改(defunc:jkxg(/ 2020-07-31 …
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离.输入由4个实数组成,分别表示x 2020-08-03 …
为什么火线和地线之间电压时180V?我家空开接第一路插座,火线与零线之间是180V,这是怎么回事,我 2020-11-21 …
用C++写一个程序题目是把中文拼音转换成数字输出(即把a~z换成1~26)每个拼音用空格隔开输出时用 2020-11-28 …
cad中关于端点问题书上说,利用直线命令,以{(0,500)、(@600,500)}为端点坐标绘制直 2020-12-05 …
请高手解释以下MX记录的含义……>setq=mx>mic.com.twServer:mdsdns01 2020-12-22 …