求大神解决CAD LISP编程绘制正弦曲线的问题,下面的程序到底错在哪里。老是提示number:nil 跪求!!!

(defunc:drawsin(/lplpxlpynxstep)(initget1)(setqlp(getpoint"\n输入坐标原点:")lpx(carlp)lpy(c... (defun c:drawsin (/ lp lpx lpy n x step)
(initget 1)
(setq lp (getpoint "\n 输入坐标原点:")
lpx (car lp)
lpy (cadr lp)
)
(initget 7)
(setq n (getint "\n 周期数:"))
(setq a (getreal "\n 振幅:"))
(initget 1)
(setq w (getreal "\n 初相角(弧度):"))
(setq x 0
Steq 0.02
)
(command "pline")
(while (< x (* 2 n pi))
(command (list (+ (car lp) x)
(+ (cadr lp) (* a (sin (+ x w))))
)
)
(setq x (+ x step))
)
(command)
(command "line" lp (list (+ lpx (* 2 n pi)) lpy) " ")
(command "line"
(list lpx (+ lpy (* 2 a)))
(list lpx (- lpy (* 2 a)))
" "
)
(command "zoom" "e")
(princ)
)
展开
 我来答
朱06CAD
2015-12-07 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18069
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部

变量Steq 0.02,下面的变量为setp,所以数值为nil。

(defun c:tes ( / #os1 a lp lpx lpy n steq w x)
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0)
 (setq #os1 (getvar "osmode"));取得捕捉设置
 (if (and 
  (setq lp  (getpoint "\n 输入坐标原点:"))
  (setq lpx (car lp))
  (setq lpy (cadr lp))
  (setq n (getint "\n 周期数:"))
  (setq a (getreal "\n 振幅:"))
  (setq w (getreal "\n 初相角(弧度):"))
  (setq x 0 Steq 0.02)
  )
  (progn
   (setvar "osmode" 0);关闭捕捉绘制
   (command "pline")
   (while (< x (* 2 n pi))
    (command (list (+ (car lp) x)
    (+ (cadr lp) (* a (sin (+ x w))))))
    (setq x (+ x steq))
   )
   (command "")
   (command "line" lp (list (+ lpx (* 2 n pi)) lpy) "")
   (command "line"
    (list lpx (+ lpy (* 2 a)))
    (list lpx (- lpy (* 2 a)))
    ""
   )
   (command "zoom" "e")
   (setvar "osmode" #os1);还原捕捉设置
  )
 )
 (princ)
)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式