明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2109|回复: 18

程序运行过程的问题

  [复制链接]
发表于 2011-5-4 14:21:03 | 显示全部楼层 |阅读模式
先运行main-program,出现父对话框,

到这边为止是没有的问题的,然后再命令行调用
一个函数就出现

下面就出现问题:有两种情况
1、当我点击确定的时候,就可以调用参数化绘图程序了,但是就出现了错误,说是参数类型错误,但是我明明在命令行直接进行参数化输入的时候,是没有问题的,是可以进行绘图的。
2、就是如果我想在下拉菜单中,点击换取别的值时,命令行会提示说no function definition的sub_pop.


该贴已经同步到 shichenxi的微博

本帖子中包含更多资源

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

x
发表于 2011-5-4 20:12:02 | 显示全部楼层
贴源码
 楼主| 发表于 2011-5-5 13:31:31 | 显示全部楼层
回复 ZZXXQQ 的帖子

主函数:(defun main-program (/ id g sdt)
(princ "ok")
(setq g 0)
(if (> (setq id (load_dialog "dlg_fa")) 0)
  (progn
    (if (new_dialog "dlg_fa" id)
      (progn
        (action_tile "无抽屉的柜子" "(setq g 0)")
        (action_tile "有抽屉的柜子" "(setq g 1)")
        (action_tile "accept" "(done_dialog 1)")
        (action_tile "cancel" "(done_dialog 0)")
        (setq sdt (start_dialog))
               (unload_dialog id)
        (if (= g 0)
          ;(showsub1)
           (load "showsub1.lsp")
        )
        ;(if (= g 1)
          ;有抽屉的柜子
        ;)
      )
     )
    )
  )
  (princ)
)



(defun showsub1 (/ jd sdt1)
  ;(princ "good")
  (if (> (setq jd (load_dialog "dlg_ch")) 0)
   (progn
     (if (new_dialog "dlg_ch" jd)
      (progn
        (action_tile "pl" "(setq pop 1) (sub_pop $value)")
        (action_tile "pw" "(setq pop 2) (sub_pop $value)")
        (action_tile "pt" "(setq pop 3) (sub_pop $value)")
        (action_tile "ml" "(setq pop 4) (sub_pop $value)")
        (action_tile "mw" "(setq pop 5) (sub_pop $value)")
        (action_tile "mt" "(setq pop 6) (sub_pop $value)")
        (action_tile "dl" "(setq pop 7) (sub_pop $value)")
        (action_tile "dw" "(setq pop 8) (sub_pop $value)")   
        (action_tile "dt" "(setq pop 9) (sub_pop $value)")
        (action_tile "bl" "(setq pop 10) (sub_pop $value)")
        (action_tile "bw" "(setq pop 11) (sub_pop $value)")
        (action_tile "bt" "(setq pop 12) (sub_pop $value)")
        (action_tile "wl" "(setq pop 13) (sub_pop $value)")
        (action_tile "ww" "(setq pop 14) (sub_pop $value)")
        (action_tile "wt" "(setq pop 15) (sub_pop $value)")
        (action_tile "gl" "(setq pop 16) (sub_pop $value)")
        (action_tile "gw" "(setq pop 17) (sub_pop $value)")
        (action_tile "gt" "(setq pop 18) (sub_pop $value)")
        (action_tile "cl" "(setq pop 19) (sub_pop $value)")
        (action_tile "cw" "(setq pop 20) (sub_pop $value)")
        (action_tile "ct" "(setq pop 21) (sub_pop $value)")
        (action_tile "ll" "(setq pop 22) (sub_pop $value)")
        (action_tile "lw" "(setq pop 23) (sub_pop $value)")
        (action_tile "lt" "(setq pop 24) (sub_pop $value)")
        (action_tile "g" "(setq pop 25) (sub_pop $value)")
        (setq sdt1 (start_dialog))
        (if (= sdt1 1)
         (progn
          (load "cabinet.lsp")
         )
        )
       (unload_dialog jd)
      )
     )
   )
  )
  (princ)
)



(defun cabinet (/ os sp p11 pl pw pt p12 p13 p14 p15 p16 p17 p18 p19 p20
                p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31 p32 p33 p34 dl dw dt d1 d2
                d3 d4 tp wl ww wt qw1 qw2 qw3 qw4 qw5 qw6 qw7 qw8 hw1 hw2 hw3 hw4 bl bw bt b1 b2 b3 b4
                cl cw ct c1 c2 c3 c4 ll lw lt ql0 ql1 ql2 ql3 ql4 hl1 hl2 hl3 hl4 gl gw gt
                g g1 g2 g3 g4 ml mw mt m1 m2 m3 m4 m5 m6 m7 m8)
(princ "good 1")
(setq os (getvar"osmode"))
(setvar "osmode" 0)
(setq sp (getpoint"\n请输入柜子的起点:"))
;绘制旁板
(setq p11 sp)
;(setq pl (getdist"\n旁板长度(z方向):"))
;(setq pw (getdist"\n旁板宽度(y方向):"))
;(setq pt (getdist"\n旁板厚度(x方向):"))
;(setq wl (getdist"\n望板长度(x方向):"))
(setq p12 (polar p11 0 pt))
(setq p13 (polar p12 (/ pi 2) (- pw 17)))
(setq p14 (polar p13 pi 9))
(setq p15 (polar p14 (/ pi 2) 10))
(setq p16 (polar p15 0 9))
(setq p17 (polar p16 (/ pi 2) 7))
(setq p18 (polar p17 pi  pt))
(setq tp (getvar "thickness"))
(setvar "thickness" pl)
(command "line" p11 p12 p13 p14 p15 p16 p17 p18 "c")
(setvar "thickness" tp)
(setq p19 (polar p11 0 (+ pt wl)))
(setq p20 (polar p19 0 pt))
(setq p21 (polar p20 (/ pi 2) pw))
(setq p22 (polar p21 pi pt))
(setq p23 (polar p22 (-(/ pi 2)) 7))
(setq p24 (polar p23 0 9))
(setq p25 (polar p24 (-(/ pi 2)) 10))
(setq p26 (polar p25 pi  9))
(setq tp (getvar "thickness"))
(setvar "thickness" pl)
(command "line" p19 p20 p21 p22 p23 p24 p25 p26 "c")
(setvar "thickness" tp)
;确定旁板的上顶点
(setq p11 sp)
(setq p27 (list (car p11) (cadr p11) (+ (caddr p11) pl)))
(setq p28 (list (car p12) (cadr p12) (+ (caddr p12) pl)))
(setq p29 (list (car p13) (cadr p13) (+ (caddr p13) pl)))
(setq p30 (list (car p14) (cadr p14) (+ (caddr p14) pl)))
(setq p31 (list (car p15) (cadr p15) (+ (caddr p15) pl)))
(setq p32 (list (car p16) (cadr p16) (+ (caddr p16) pl)))
(setq p33 (list (car p17) (cadr p17) (+ (caddr p17) pl)))
(setq p34 (list (car p18) (cadr p18) (+ (caddr p18) pl)))
;确定顶板的下顶点
;(setq dl (getdist"\n顶板长度(x方向):"))
;(setq dw (getdist"\n顶板宽度(y方向):"))
;(setq dt (getdist"\n顶板厚度(z方向):"))
(setq d1 (list (- (car p27) 2) (- (cadr p27) 20) (caddr p27)))
(setq d2 (polar d1 0 dl))
(setq d3 (polar d2 (/ pi 2) dw))
(setq d4 (polar d3 pi dl))
(setq tp (getvar "thickness"))
(setvar "thickness" dt)
(command "line" d1 d2 d3 d4 "c")
(setvar "thickness" tp)
;确定前望板的下顶点
;;(setq wl (getdist"\n望板长度(x方向):"))
;(setq ww (getdist"\n望板宽度(z方向):"))
;(setq wt (getdist"\n望板厚度(y方向):"))
(setq qw1 (list (car p12) (+ (cadr p12) 4) (caddr p12)))
(setq qw2 (polar qw1 0  wl))
(setq qw3 (polar qw2 (/ pi 2) wt))
(setq qw4 (polar qw3 pi wl))
(setq tp (getvar "thickness"))
(setvar "thickness" ww)
(command "line" qw1 qw2 qw3 qw4 "c")
(setvar "thickness" tp)
;确定后望板
(setq hw1 (polar qw1 (/ pi 2) (- pw 4 2 wt)))
(setq hw2 (polar hw1 0 wl))
(setq hw3 (polar hw2 (/ pi 2) wt))
(setq hw4 (polar hw3 pi wl))
(setq tp (getvar "thickness"))
(setvar "thickness" ww)
(command "line" hw1 hw2 hw3 hw4 "c")
(setvar "thickness" tp)
;确定前望板上的上顶点
(setq qw5 (list (car qw1) (cadr qw1) (+ (caddr qw1) ww)))
(setq qw6 (list (car qw2) (cadr qw2) (+ (caddr qw2) ww)))
(setq qw7 (list (car qw3) (cadr qw3) (+ (caddr qw3) ww)))
(setq qw8 (list (car qw4) (cadr qw4) (+ (caddr qw4) ww)))

;确定底板上的下顶点
;(setq bl (getdist"\n底板长度(x方向):"))
;(setq bw (getdist"\n底板宽度(y方向):"))
;(setq bt (getdist"\n底板厚度(z方向):"))
(setq b1 (list (car qw5) (- (cadr qw5) 2) (caddr qw5)))
(setq b2 (polar b1 0 bl))
(setq b3 (polar b2 (/ pi 2) bw))
(setq b4 (polar b3 pi bl))
(setq tp (getvar "thickness"))
(setvar "thickness" bt)
(command "line" b1 b2 b3 b4 "c")
(setvar "thickness" tp)
;确定背板
;(setq cl (getdist"\n背板长度(z方向):"))
;(setq cw (getdist"\n背板宽度(x方向):"))
;(setq ct (getdist"\n背板厚度(y方向):"))
(setq c1 (list (car p14)  (+ (cadr p14) 1) (+ (caddr p14) (+ ww 9))))
(setq c2 (polar c1 0 cw))
(setq c3 (polar c2 (/ pi 2) ct))
(setq c4 (polar c3 pi cw))
(setq tp (getvar "thickness"))
(setvar "thickness" cl)
(command "line" c1 c2 c3 c4 "c")
(setvar "thickness" tp)
;确定前拉条
;(setq ll (getdist"\n拉条长度(x方向):"))
;(setq lw (getdist"\n拉条宽度(y方向):"))
;(setq lt (getdist"\n拉条厚度(z方向):"))
(setq p11 sp)
(setq ql0 p28)
(setq ql1 (list (car ql0) (cadr ql0) (- (caddr ql0) lt)))
(setq ql2 (polar ql1 0 ll))
(setq ql3 (polar ql2 (/ pi 2) lw))
(setq ql4 (polar ql3 pi ll))
(setq tp (getvar "thickness"))
(setvar "thickness" lt)
(command "line" ql1 ql2 ql3 ql4 "c")
(setvar "thickness" tp)

;确定后拉条
(setq hl1 (polar ql1 (/ pi 2) (- pw 7 10 lw)))
(setq hl2 (polar hl1 0 ll))
(setq hl3 (polar hl2 (/ pi 2) lw))
(setq hl4 (polar hl3 pi ll))
(setq tp (getvar "thickness"))
(setvar "thickness" lt)
(command "line" hl1 hl2 hl3 hl4 "c")
(setvar "thickness" tp)
;确定搁板的下顶点
;(setq gl (getdist"\n搁板长度(x方向):"))
;(setq gw (getdist"\n搁板宽度(y方向):"))
;(setq gt (getdist"\n搁板厚度(z方向):"))
;(setq g (getint "Enter a number:"))
(setq g1 (list (car p12) (+ (cadr p12) (- pw gw 7 1 8)) (+ (caddr p12)
(* 32 g))))
(setq g2 (polar g1 0 gl))
(setq g3 (polar g2 (/ pi 2) gw))
(setq g4 (polar g3 pi gl))
(setq tp (getvar "thickness"))
(setvar "thickness" gt)
(command "line" g1 g2 g3 g4 "c")
(setvar "thickness" tp)
;确定门板的下顶点
;(setq ml (getdist"\n门板长度(z方向):"))
;(setq mw (getdist"\n门板宽度(x方向):"))
;(setq mt (getdist"\n门板厚度(y方向):"))
(setq m1 (list (car p11) (- (cadr p11) mt) (+ (caddr p11) ww)))
(setq m2 (polar m1 0 mw ))
(setq m3 (polar m2 (/ pi 2) mt))
(setq m4 (polar m3 pi mw))
(setq tp (getvar "thickness"))
(setvar "thickness" ml)
(command "line" m1 m2 m3 m4 "c")
(setvar "thickness" tp)
(setq m5 (polar m1 0 (+ mw 2)))
(setq m6 (polar m5 0 mw))
(setq m7 (polar m6 (/ pi 2) mt))
(setq m8 (polar m7 pi mw))
(setq tp (getvar "thickness"))
(setvar "thickness" ml)
(command "line" m5 m6 m7 m8 "c")
(setvar "thickness" tp)
(setvar "osmode" os)
)


后面两个对话框的
;父对话框
dlg_fa:dialog{
label="柜子类型";
:row{
:column{
:popup_list{
label="柜子种类";
key="gzzl";
width=15;
list="无抽屉的柜子\n有抽屉的柜子";
}
}
ok_cancel;
}
}
;子对话画框
dlg_ch:dialog
{label="无抽屉的柜子";
:row{
:column{
:boxed_column{
label="旁板的参数设置";
:row{
:popup_list{
label="旁板的长度";
key="pl";
width=5;
list="850\n1330\n1472\n";
}
:edit_box{width=4;key="ple";}
}
:row{
:popup_list{
label="旁板的宽度";
key="pw";
width=5;
list="450\n500\n";
}
:edit_box{width=4;key="pwe";}
}
:row{
:popup_list{
label="旁板的厚度";
key="pt";
width=5;
list="18\n";
}
:edit_box{width=4;key="pte";}
}
}
:boxed_column{
label="门板的参数设置";
:row{
:popup_list{
label="门板的长度";
key="ml";
width=5;
list="800\n1280\n1440\n";
}
:edit_box{width=4;key="mle";}
}
:row{
:popup_list{
label="门板的宽度";
key="mw";
width=5;
list="397\n447\n";
}
:edit_box{width=4;key="mwe";}
}
:row{
:popup_list{
label="门板的厚度";
key="mt";
width=5;
list="18\n";
}
:edit_box{width=4;key="mte";}
}
}
:boxed_column{
label="顶板的参数设置";
:row{
:popup_list{
label="顶板的长度";
key="dl";
width=5;
list="800\n900\n";
}
:edit_box{width=4;key="dle";}
}
:row{
:popup_list{
label="顶板的宽度";
key="dw";
width=5;
list="472\n522\n";
}
:edit_box{width=4;key="dwe";}
}
:row{
:popup_list{
label="顶板的厚度";
key="dt";
width=5;
list="25\n";
}
:edit_box{width=4;key="dte";}
}
}
}
:column{
:boxed_column{
label="底板的参数设置";
:row{
:popup_list{
label="底板的长度";
key="bl";
width=5;
list="760\n860\n";
}
:edit_box{width=4;key="ble";}
}
:row{
:popup_list{
label="底板的宽度";
key="bw";
width=5;
list="448\n498\n";
}
:edit_box{width=4;key="bwe";}
}
:row{
:popup_list{
label="底板的厚度";
key="bt";
width=5;
list="18\n";
}
:edit_box{width=4;key="btw";}
}
}
:boxed_column{
label="望板的参数设置";
:row{
:popup_list{
label="望板的长度";
key="wl";
width=5;
list="760\n860\n";
}
:edit_box{width=4;key="wle";}
}
:row{
:popup_list{
label="望板的宽度";
key="ww";
width=5;
list="50\n";
}
:edit_box{width=4;key="wwe";}
}
:row{
:popup_list{
label="望板的厚度";
key="wt";
width=5;
list="18\n";
}
:edit_box{width=4;key="wte";}
}
}
:boxed_column{
label="搁板的参数设置";
:row{
:popup_list{
label="搁板的长度";
key="gl";
width=5;
list="760\n860\n";
}
:edit_box{width=4;key="gle";}
}
:row{
:popup_list{
label="搁板的宽度";
key="gw";
width=5;
list="430\n490\n";
}
:edit_box{width=4;key="gwe";}
}
:row{
:popup_list{
label="搁板的厚度";
key="gt";
width=5;
list="18\n";
}
:edit_box{width=4;key="gte";}
}
}
}
:column{
:boxed_column{
label="背板的参数设置";
:row{
:popup_list{
label="背板的长度";
key="cl";
width=5;
list="791\n1271\n1431\n";
}
:edit_box{width=4;key="cle";}
}
:row{
:popup_list{
label="背板的宽度";
key="cw";
width=5;
list="760\n860\n";
}
:edit_box{width=4;key="cwe";}
}
:row{
:popup_list{
label="背板的厚度";
key="ct";
width=5;
list="8\n";
}
:edit_box{width=4;key="cte";}
}
}
:boxed_column{
label="拉条板的参数设置";
:row{
:popup_list{
label="拉条板长度";
key="ll";
width=5;
list="760\n860\n";
}
:edit_box{width=4;key="lle";}
}
:row{
:popup_list{
label="拉条板宽度";
key="lw";
width=5;
list="80\n";
}
:edit_box{width=4;key="lwe";}
}
:row{
:popup_list{
label="拉条板厚度";
key="lt";
width=5;
list="18\n";
}
:edit_box{width=4;key="lte";}
}
}
:popup_list{
label="g";
key="g";
width=5;
list="15\n20\n";
}
}
}
ok_cancel;
}




评分

参与人数 1金钱 +6 收起 理由
fl202 + 6 这么长的源码,我晕了。。。

查看全部评分

发表于 2011-5-5 21:36:48 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
 楼主| 发表于 2011-5-6 14:05:23 | 显示全部楼层
本帖最后由 shichenxi 于 2011-5-6 17:37 编辑

回复 ZZXXQQ 的帖子


这两个地方看不懂,什么意思?麻烦解释一下。
43-58行,特别是57-58行一点都不知道是什么意思。还有就是21 22行这边(showsub n)不懂

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-5-6 16:16:33 | 显示全部楼层
回复 ZZXXQQ 的帖子

还有一个问题就是现在加载的时候,是不是仍然先调用main-program,再调showsub1,在调用cabinet,我是这样的,但是调用showsub1的时候,出现说错误: 参数类型错误: fixnump: nil。不知道是哈么意思?
发表于 2011-5-6 22:33:14 | 显示全部楼层
1、对话框文件保存成一个文件dlg_fa.dcl;程序也保存为一个文件;
2、只调用main-program即可;
3、readata函数是读对话框中编辑框中的内容;
4、58行是你原来的函数名,57行是定义了另一个子函数用于调试程序时不出错。
发表于 2011-5-6 22:35:57 | 显示全部楼层
21,22行函数是为了调用showsub1和showsub0函数的函数
 楼主| 发表于 2011-5-6 22:51:17 | 显示全部楼层
回复 ZZXXQQ 的帖子

dlg_ch不用再另外保存了吗
 楼主| 发表于 2011-5-6 23:01:59 | 显示全部楼层
回复 ZZXXQQ 的帖子

我刚刚照你的方法试了,就只能出现一个父对话框。我很白痴的,麻烦你能否把步骤说的详细一点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-12 07:17 , Processed in 0.189838 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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