awaken 发表于 2006-6-25 09:09:00

[求助]下面的LISP有何问题?

<P>我想用LISP画一个多个等半径圆想切,图如附件,但下面的程序却只能画出第一个圆,我不知道为什么,不知道有没有高手指点一下?</P>
<P>(defun c:sc(/ p r num ang1 ang2 dd ce)<BR>&nbsp; (setq p&nbsp; (getpoint "\n基点:")<BR>&nbsp;&nbsp;&nbsp; &nbsp;r&nbsp; (getdist "\n小圆半径")<BR>&nbsp;num(getint "\n数量:")<BR>&nbsp;ang1(/ pi num)<BR>&nbsp;ang2(- (/ pi 2) ang1)<BR>&nbsp;dd (/ r (sin ang1))<BR>&nbsp;ce (polar p ang2 dd)<BR>&nbsp; )<BR>&nbsp; (command "circle" ce r)<BR>&nbsp; (command "array" (entlast) "" "p" ce num 360 "y")<BR>&nbsp; (princ)<BR>)</P>

bingchen 发表于 2006-6-25 09:51:00

<P>&nbsp;(command "circle" ce r)</P>
<P>圆的基点错了 </P>
<P>把ce 改成 p就可以了</P>
<P>改后如下:</P>
<P>(defun c:sc(/ p r num ang1 ang2 dd ce)<BR>&nbsp; (setq p&nbsp; (getpoint "\n基点:")<BR>&nbsp;&nbsp;&nbsp; &nbsp;r&nbsp; (getdist "\n小圆半径")<BR>&nbsp;num(getint "\n数量:")<BR>&nbsp;ang1(/ pi num)<BR>&nbsp;ang2(- (/ pi 2) ang1)<BR>&nbsp;dd (/ r (sin ang1))<BR>&nbsp;ce (polar p ang2 dd)<BR>&nbsp; )<BR>&nbsp; (command "circle"&nbsp;p r)<BR>&nbsp; (command "array" (entlast) "" "p" ce num 360 "y")<BR>&nbsp; (princ)<BR>)</P>
<P>&nbsp;</P>

gucci218 发表于 2006-6-25 09:59:00

如果p指圆心的圆点,如楼上,如果p指阵列的中心点改command这句(command "array" (entlast) "" "p"&nbsp;p num 360 "y")&nbsp; 不知道你这个p(基点指的是什么)<BR>

ZZXXQQ 发表于 2006-6-25 19:01:00

修改后的程序:

(defun c:sc(/ p r num ang1 ang2 dd ce)
(setq p(getpoint "\n基点:")
r(getdist "\n小圆半径")
num(getint "\n数量:")
ang1(/ pi num)
ang2(- (/ pi 2) ang1)
dd (/ r (sin ang1))
ce (polar p ang2 dd)
)
(command "circle" ce r)
(command "array" "l" "" "p" p num "" "y")
(princ)
)
建议将函数名改一下,不要用c:sc。

awaken 发表于 2006-6-26 07:51:00

谢谢各位帮助呀,我现在已经弄成了!
页: [1]
查看完整版本: [求助]下面的LISP有何问题?