找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 815|回复: 5

[LISP程序]:请各位帮看一下吧,遇到一个很郁闷的问题!

[复制链接]
发表于 2005-4-1 21:57:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
下面说有参数类型错误,我很郁闷我找不出来,请指点!!非常感谢!!
(defun c:yuanpan()
        (new_dialog "fldlg" (load_dialog "yuanpan"))
        (start_image "fl")
        (slide_image 0 0 (dimx_tile "fl") (dimy_tile "fl") "fl")
        (end_image)
        (set_tile "r1" "")
        (set_tile "r2" "")
        (set_tile "r3" "")
        (set_tile "n" "")
        (set_tile "x" "")
        (set_tile "y" "")
        (action_tile "r1" "(setq s1 $value)")
        (action_tile "r2" "(setq s2 $value)")
        (action_tile "r3" "(setq s3 $value)")
        (action_tile "n" "(setq n1 $value)")
        (action_tile "x" "(setq x1 $value)")
        (action_tile "y" "(setq y1 $value)")
        (start_dialog)
        (if (= 0 (start_dialog))
                (progn (setq r1 (atof s1)
                                   r2 (atof s2)
                                   r3(atof s3)
                                   n (atoi n1)
                                   x (atof x1)
                                   y (atof y1)
                                                )
                                        (setq pt (list x y 0.0))
                )
        )
        (setq r2 (/ (+ r1 r3) 2))
                     (setq r (/ (- r1 r3) 2))
        (setq pt1 (polar pt (/ pi 2.0)(+ r3 3))
                 pt2 (polar pt (- (/ pi 2.0))(+ r3 3))
                pt3 (polar pt pi (+ r3 3))
                pt4 (polar pt 0.0 (+ r3 3))
        )
        (command "itscale" 10)
        (command "layer" "m" "0" "1" "continuous" "0" "c" "green" "0" "")
        (command "circle" pt r1)
        (command "circle" pt r3)
        (command "circle" (polar pt 0 r2) r)
        (command "array" "1" "" "p" pt n 360 "n")
        (command "itscal" "30")
        (command "lay" "m" "1" "1" "center" "1" "c" "red" "1" "")
        (command "circle" pt r2)
        (command "line" pt1 pt2 "")
        (command "line" pt3 pt4 "")
        (command "redraw")
        (setq area (* pi (- (* r1 r1)(* n r r))))
)
命令: yuanpan
; 错误: 参数类型错误: stringp nil
不好意思,谢谢啦!!又一次烦这个错误!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-4-1 22:17:05 | 显示全部楼层
(new_dialog "fldlg" (load_dialog(findfile "yuanpan.dcl")))
应该把dcl文件上传才知道你哪里错了。
还有个,可以把第一个(start_dialog)删了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-2 10:18:47 | 显示全部楼层

回楼上:我把dcl写在下面

fldlg:dialog{
label="圆盘";
:column{
:boxed_column{
:image{
key="my-image";
width=30;
aspect_ratio=1;
color=5;
}
}
:row{
:boxed_column{
label="请输入插入点";
:edit_box{
label="坐标x";
key="x";
//value="0";
}
spacer;
spacer;
:edit_box{
label="坐标y";
key="y";
//value="0";
}
}
:boxed_column{
label="请输入圆盘参数";
:edit_box{
label="外径R1";
key="r1";
//value="1000";
edit_width=7;
}
:edit_box{
label="内径R2";
key="r2";
//value="500";
edit_width=7;
}
:edit_box{
label="圆盘孔半径R3";
key="r3";
//value="20";
edit_width=7;
}
:edit_box{
label="圆盘孔个数n";
key="n";
//value="2";
edit_width=7;
}
}
}
}
ok_cancel;
}
好了,这个对话框显示没有任何问题的
谢谢了!!看lisp里到底问题在哪啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-2 12:49:35 | 显示全部楼层
我修改过的,
(defun c:yuanpan ()
  (new_dialog "fldlg" (load_dialog "yuanpan"))
  (start_image "fl")
  (slide_image 0 0 (dimx_tile "fl") (dimy_tile "fl") "fl")
  (end_image)
  (set_tile "r1" "")
  (set_tile "r2" "")
  (set_tile "r3" "")
  (set_tile "n" "")
  (set_tile "x" "")
  (set_tile "y" "")
  (action_tile "r1" "(setq s1 $value)")
  (action_tile "r2" "(setq s2 $value)")
  (action_tile "r3" "(setq s3 $value)")
  (action_tile "n" "(setq n1 $value)")
  (action_tile "x" "(setq x1 $value)")
  (action_tile "y" "(setq y1 $value)")
  (start_dialog)
  (if (= 0 (start_dialog))
    (progn (setq r1 (atof s1)
                 r2 (atof s2)
                 r3 (atof s3)
                 n  (atoi n1)
                 x  (atof x1)
                 y  (atof y1)
           )
           (setq pt (list x y 0.0))
    )
  )
  (setq r (/ (+ r1 r2) 2))
  (setq        pt1 (polar pt (/ pi 2.0) (+ r1  3))
        pt2 (polar pt (- (/ pi 2.0)) (+  r1  3))
        pt3 (polar pt pi (+  r1 3))
        pt4 (polar pt 0.0 (+ r1  3))
  )
  (command "itscale" 10)
  (command "layer" "m" "0" "1" "continuous" "0"        "c" "green" "0"        "")
  (setvar "osmode" 0)
  (command "circle" pt r1)
  (command "circle" pt r2)
  (command "circle" (polar pt 0 r) r3)
  (command "array" "l" "" "p" pt n 360 "n")
  (command "itscal" "30")
  (command "lay" "m" "1" "1" "center" "1" "c" "red" "1" "")
  (command "circle" pt r)
  (command "line" pt1 pt2 "")
  (command "line" pt3 pt4 "")
  (command "redraw")
  (setvar "osmode" 37)
  (setq area (* pi (- (* r1 r1) (* n r r))));_这句你自己改吧
)
程序当中有个(setq r2 (/ (+ r1 r3) 2)),r2不是已经有附值了吗,为什么还要加这句,还要看清楚R3是什么半径?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-2 20:10:19 | 显示全部楼层

回楼上的

那几个计算公式没什么,主要的问题是参数错误,我可能这个概念老是搞混,我设断点运行时,参数错误出现在:
(if (= 0 (start_dialog))
                (progn (setq r1 (atof s1)
                             r2 (atof s2)
                              r3(atof s3)
                              n (atoi n1)
                              x (atof x1)
                              y (atof y1)
                                                )
                        (setq pt (list x y 0.0))
                )
        )
错误在这个一块里
我看楼上的函数,这一块没有改动啊,为什么我运行说这里的参数错误呢,不知哪里出问题了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-2 21:05:44 | 显示全部楼层

Re: 回楼上的

最初由 一生有你 发布
[B]那几个计算公式没什么,主要的问题是参数错误,我可能这个概念老是搞混,我设断点运行时,参数错误出现在:
(if (= 0 (start_dialog))
                (progn (setq r1 (atof s1)
                             r2 (atof s2)
                              r3(atof s3)
... [/B]


这几句有没有问题关键还要看你对话框输入的内容是否有误,如果空输入,那么上面这几句肯定会出错。
我检查过这几句,应该没什么问题。而且我测试过,出来的结果也是正确的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 02:27 , Processed in 0.188158 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表