盛麒毓 发表于 2011-3-25 17:06:27

求助如何处理“参数太少”的问题

各位达人,小弟正在学习用autolisp开发对话框,在教材上有这样一段程序

(defun c:shaft(/d l x y id std x1 y1)
(defun getdata()
(setq d (atof(get_tile"D_box")))
(setq l (atof(get_tile"L_box")))
(setq x (atof(get_tile"X_box")))
(setq y (atof(get_tile"Y_box")))
)
(setvar "cmdecho" 0)
(command "layer" "m" "solid" "")
(command "layer" "m" "cen" "c" 1 "" "lt" "center" "" "")
(setq id (load_dialog "e:\\example\\dcl\\12-13"))
(if (< id 0)(exit))
(setq d 50 l 100 x 0 y 0 std 2 p(list 0 0))
(while (> std 1)
   (if(not(new_dialog "zhou" id))(exit))
   (setq x1(dimx_tile "image"))
   (setq y1(dimy_tile "image"))
   (start_image "image")
   (slide_image 0 0 x1 y1 "e:\\example\\sld\\12-13")
   (end_image)
   (set_tile "D_box" (rtos d 2 2))
   (set_tile "L_box" (rtos l 2 2))
   (set_tile "X_box" (rtos x 2 2))
   (set_tile "Y_box" (rtos y 2 2))
   (action_tile "pick" "(getdata)(done_dialog 2)")
   (action_tile "accept" "(getdata)(done_dialog 1)")
   (action_tile "cancel" "(done_dialog 0)")
   (setq std(start_dialog))
   (if(= std 2)
       (progn
          (initget 1)
          (setq p(getpoint"定位点:"))
          (setq x(car p) y(cadr p))
       )
   )
)
    (if(= std 1)
      (progn
        (command "layer" "m" "solid" "")
        (command "pline"
               (list x (+ y(* 0.5 d)))
               (list x (- y(* 0.5 d)))
               (list (+ x l) (- y(* 0.5 d )))
               (list (+ x l) (+ y(* 0.5 d )))
               "c")
        (command "layer" "m" "cen" "")
        (command "line"(polar p pi 10)(polar p 0 (+ l 10)) "")
    )
    )
(unload_dialog id)
(princ)
)
加载后显示“参数太少”,我对照了很多遍,都没有发现问题,而且dcl、sld文件都在相应位置,烦请各位指点啊!

Gu_xl 发表于 2011-3-25 17:55:26

回复 盛麒毓 的帖子

(defun c:shaft(/d l x y id std x1 y1)
==>
(defun c:shaft(/ d l x y id std x1 y1)

mandala 发表于 2011-3-25 20:08:33

呵呵,最基础的东西,最容易被人忽视。

盛麒毓 发表于 2011-3-26 09:41:19

谢谢版主,问题解决了,刚开始学,还都不懂的

盛麒毓 发表于 2011-3-26 09:44:13

回复 Gu_xl 的帖子

谢谢版主,问题解决了,刚开始学,不太懂的。。。
页: [1]
查看完整版本: 求助如何处理“参数太少”的问题