chenxc 发表于 2014-6-30 23:22:01

谁帮我看看我这个lisp调用dcl对话框后为什么就动不了呢???????

具体症状是:lisp调用dcl后,对话框的edit_box中有默认数据,也能往里面填写修改的数据,,但只要一点确认按钮,整个cad就动不了了,不知道是一直在做死循环还是直接死机了,,,求人帮我看一下。。
由于源程序很乱,我只贴了部分程序上来:
    (setq dcl_id (load_dialog "cxc"))
    (new_dialog "dia" dcl_id)
    (set_tile "edit_bh" cxc_entbh1)      
    (set_tile "edit_tc" cxc_enttc2)   
    (set_tile "edit_d"cxc_entzj3)   
    (set_tile "edit_s"cxc_entjj)      
    (set_tile "edit_z"cxc_entzm)   
    (set_tile "edit_y"cxc_entym)   
    (set_tile "edit_j"cxc_entjy)      
    (set_tile "edit_fwx" cxc_entfwxcd)   
    (action_tile "accept" "(ok_dia) (done_dialog 1)")
    (start_dialog)
    (unload_dialog dcl_id)
    (defun ok_dia ()
      (setq cxc_entbh1_2(get_tile "edit_bh")
                cxc_enttc2_2   (get_tile "edit_tc")
                cxc_entzj3_2    (get_tile "edit_d" )
                cxc_entjj_2      (get_tile "edit_s" )      
                cxc_entzm_2    (get_tile "edit_z" )   
                cxc_entym_2   (get_tile "edit_y" )
                cxc_entjy_2   (get_tile "edit_j" )
                cxc_entfwxcd_2(get_tile "edit_fwx")
      )
    )

另外dcl程序是:

dia:dialog{
             label="钢筋属性表";
             :edit_box{
                        label="钢筋编号";
                        key="edit_bh";
                        edit_width=20;
                     }
             :edit_box{
                        label="钢筋类别";
                        key="edit_tc";
                        edit_width=20;
                     }
             :edit_box{
                        label="钢筋直径D(mm)";
                        key="edit_d";
                        edit_width=20;
                     }
             :edit_box{
                        label="钢筋间距S(mm)";
                        key="edit_s";
                        edit_width=20;
                     }
             :edit_box{
                        label="钢筋左锚固长度Z(15d+0.1,0.7-0.03等表达式)";
                        key="edit_z";
                        edit_width=20;
                     }
             :edit_box{
                        label="钢筋右锚固长度Y(15d+0.1,0.7-0.03等表达式)";
                        key="edit_y";
                        edit_width=20;
                     }
             :edit_box{
                        label="钢筋多加几根J";
                        key="edit_j";
                        edit_width=20;
                     }
             :edit_box{
                        label="钢筋分布长度(mm)";
                        key="edit_fwx";
                        edit_width=20;
                     }
             ok_only;
         }

ZZXXQQ 发表于 2014-7-1 08:15:38

(defun shodcl ()
(if (> (setq dcl_id (load_dialog "cxc")) 0) (progn
   (if (new_dialog "dia" dcl_id) (progn
    (set_tile "edit_bh" cxc_entbh1)      
    (set_tile "edit_tc" cxc_enttc2)   
    (set_tile "edit_d"cxc_entzj3)   
    (set_tile "edit_s"cxc_entjj)      
    (set_tile "edit_z"cxc_entzm)   
    (set_tile "edit_y"cxc_entym)   
    (set_tile "edit_j"cxc_entjy)      
    (set_tile "edit_fwx" cxc_entfwxcd)   
    (action_tile "accept" "(ok_dia) (done_dialog 1)")
    (setq re (start_dialog))
   )
    (princ "\n无法显示对话框!")
   )
   (unload_dialog dcl_id)
)
   (princ "\n无法加载对话框!")
)
(if (= re 1) (do))
(princ)
)

chenxc 发表于 2014-7-3 00:04:04

感谢ZZXXQQ抽出时间来帮忙啊!!

chenxc 发表于 2014-7-3 02:20:20

ZZXXQQ老大,
       我这个还是不行,还是死机,我把我的程序附上来,麻烦你再看看啊。我主要是想调用对话框修改图中“钢筋”的属性(图中钢筋就是一条红线),

xyp1964 发表于 2014-7-3 08:59:00

;; 代码结构复杂,函数do未定义

ZZXXQQ 发表于 2014-7-3 09:16:02

程序运行时直接改扩展数据,在图形上无反应。

chenxc 发表于 2014-7-3 21:16:43

xyp1964 发表于 2014-7-3 08:59 static/image/common/back.gif
;; 代码结构复杂,函数do未定义

谢谢xyp1964老大的修改,我的程序繁琐了点,不简洁,,,很多地方还需要优化。但经过你和ZZXXQQ老大的修改后,暂时能用了,谢谢费心~~

chenxc 发表于 2014-7-3 21:21:15

本帖最后由 chenxc 于 2014-7-3 21:31 编辑

ZZXXQQ 发表于 2014-7-3 09:16 static/image/common/back.gif
程序运行时直接改扩展数据,在图形上无反应。
有劳ZZXXQQ老大的修改,你修改后的程序在我电脑上没问题了,终于又见到之前熟悉的对话框了,而且也修改成功了,有你和其他热心版主的帮助,我觉得学到不少~~再次感谢您的费心!!
页: [1]
查看完整版本: 谁帮我看看我这个lisp调用dcl对话框后为什么就动不了呢???????