benq1 发表于 2015-6-2 09:50:49

对话框设定初始值不显示

程序如下,
(princ "加载程序成功,输入dd命令可应用此工具\n")
(defun c:dd (/ exi dcl_id)
   (setq dcl_id (load_dialog "dia"))
   (new_dialog "dia" dcl_id);启动dia对话框
(set_tile "kb" "100")   ;设定宽kb初始值100
   (action_tile "accept" " (setq b (atof (get_tile "kb"))) (done_dialog 1)")
   (setq exi (start_dialog))
   (unload_dialog dcl_id)
   (cond
   ((= exi 1) (princ "确定") (princ b))
   ((= exi 0) (exit))) ;_ 结束cond
   (princ)
)

dia:dialog{
label="设置";
spacer_1;
   :boxed_row{label="数据";
   :edit_box{label="板宽";Key="kb";edit_width=6;}
}
               spacer_1;
:row{
fixed_width=true;
alignment=centered;
ok_cancel;
:spacer{width=2;}
:button{label="关于…";Key="info";width=10;}
}
}

这个运行时,出现对话框,但是kb初始值一直不显示,为什么不显示?还有输入数值后,按确定键也不会princ b值。显示参数类型错误: stringp nil。大侠帮着看看吧

荒野孤行 发表于 2015-6-2 10:34:54

首先,你的cad图档要和lsp、dcl文件放到同一个文件夹,其次,把第二句改下试试:(setq dcl_id (load_dialog "dia.dcl"))

benq1 发表于 2015-6-2 13:01:34

荒野孤行 发表于 2015-6-2 10:34 static/image/common/back.gif
首先,你的cad图档要和lsp、dcl文件放到同一个文件夹,其次,把第二句改下试试:(setq dcl_id (load_dialog ...

我的意思是对话框可以显示出了,但是预设的kb值100不能显示在edit_box中,同时如果在对话框内输入数据,点”确定“后,也不会显示b的值,直接显示参数类型错误: stringp nil

ZZXXQQ 发表于 2015-6-2 13:24:34

(action_tile "accept" " (setq b (atof (get_tile \"kb\"))) (done_dialog 1)")

benq1 发表于 2015-6-2 21:21:17

找到原因了,对话框文件中Key要区分大小写,改成key,就可以了
(action_tile "accept" " (setq b (atof (get_tile \"kb\"))) (done_dialog 1)")提示输入的字符串有缺陷
或者(action_tile "accept" " (setq b (atof (get_tile "kb"))) (done_dialog 1)")提示参数太多,我把(setq b (atof (get_tile "kb"))) 另做个子函数改成 (action_tile "accept" "(getnum)(done_dialog 1)") 就可以了,具体原因不清楚。
页: [1]
查看完整版本: 对话框设定初始值不显示