求指点:对话框编辑值问题
本帖最后由 xhq1954425 于 2014-6-22 08:09 编辑本人DCL水平只限于套用,遇到新问题就为难了……
程序运行时先修改编辑框中的数值如下图:
然后再用光标拾取中心点,当再返回到对话框时,上图编辑框中的数值无效,还为默认值,(如果先点击拾取按钮后修改编辑框可正常运行)见下图:
请指点如何使编辑过的值不变……将万分感谢! DCL为:
chilun:dialog{
label="直齿圆柱齿轮设计";
:boxed_column{
:boxed_column{
label="请选择齿轮颜色";
:row{
:text_part{label="齿轮颜色:";width=7;fixed_width=true;}
:image_button{key="color";width=4.0;height=0.5;}
}
}
:row{
:boxed_column{
label="齿轮参数";
:column{
:row{
:text_part{label="模数(M):";width=5;}
:edit_box{key="moshu";edit_width=10;edit_limit=10;mnemonic="moshu";value=5;}
}
:row{
:text_part{label="齿数(Z):";width=5;}
:edit_box{key="chishu";edit_width=10;edit_limit=10;value=20;}
}
:row{
:text_part{label="孔径(D):";width=5;}
:edit_box{key="kd";edit_width=10;edit_limit=10;value=40;}
}
:row{
:text_part{label="变位系数(ζ):";width=5;}
:edit_box{key="bianwei";edit_width=10;edit_limit=10;value=0;}
}
:row{
:text_part{label="齿宽(B):";width=5;}
:edit_box{key="houdu";edit_width=10;edit_limit=10;mnemonic="houdu";value=25;}
}
:row{
:radio_row{
key="leibie";
:radio_button{label="标准齿"; key="biaozhun";mnemonic="0";value=1;}
:radio_button{label="短齿"; key="duanchi";mnemonic="1";}
:radio_button{label="长齿"; key="changchi";mnemonic="2";}
}
}
}
}
}
}
:boxed_column{
label="齿轮中心点";
:row{
:button{label="光标拾取<";key="pick";}
:edit_box{label="x=";width=5;key="x0";mnemonic="x0";value=0;}
:edit_box{label="y=";width=5;key="y0";mnemonic="y0";value=0;}
}
}
ok_cancel;
}
调用程序为:
(defun c:tt()
(if (> (setq id (load_dialog "直齿圆柱齿轮.dcl")) 0) (progn
(setq std 2)
(while (> std 1)
(if (new_dialog "chilun" id )(progn
(if x0 (set_tile "x0" (rtos x0 2)))
(if y0 (set_tile "y0" (rtos y0 2)))
(action_tile "color" "(fc)")
(action_tile "pick" "(done_dialog 2)")
(action_tile "accept" "(readata)(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq std (start_dialog))
)
(princ "\n无法显示对话框!")
)
(if (= std 2) (progn
(initget 1)
(setq pp (getpoint "\n拾取中心点: "))
(setq x0 (car pp) y0 (cadr pp))
))
);while
(unload_dialog id)
)
(princ "\n无法加载对话框!")
)
(if(= std 1) (progn
(fxsh);系数
(fr);基本参数计算
(chilun0)
(princ (list "模数=" m "齿数=" z "孔径=" kd "变位系数=" x "D=" D "Db=" Db "Df=" Df "Da=" Da))
))
(princ)
);cl
(defun readata ()
(setq m (atof (get_tile "moshu")))
(setq z (atoi (get_tile "chishu")))
(setq kd (atof (get_tile "kd")));孔径
(setq x (atof (get_tile "bianwei")));变位系数
(setq b (atof (get_tile "houdu")));齿宽
(setq x0 (atof (get_tile "x0")));中心点坐标
(setq y0 (atof (get_tile "y0")))
(setq xsh (get_tile "leibie"));类别
(setq xsh
(cond
((= xsh "biaozhun") 1);标准
((= xsh "duanchi") 2);短齿
((= xsh "changchi") 3);长齿
)
)
)
…………………………
…………………………
(action_tile "pick" "(done_dialog 2)")
应该是这里,当点击pick的同时,应增加设置当前屏显参数的变量。
(setq m (atof (get_tile "moshu")))
...... 本帖最后由 xhq1954425 于 2014-6-22 08:03 编辑
emk 发表于 2014-6-21 20:03 static/image/common/back.gif
(action_tile "pick" "(done_dialog 2)")
应该是这里,当点击pick的同时,应增加设置当前屏显参数的变 ...
试过了不行……非常感谢你 ;;供参考
其实颜色和中心点选项都多余 本帖最后由 xhq1954425 于 2014-6-22 10:32 编辑
xyp1964 发表于 2014-6-22 09:44 static/image/common/back.gif
;;供参考
谢谢小老弟,我没有系统地学过二次开发,身边又没有会的人,都是跟着明经网自学,其实不容易,由于我接触的DCL不多,基本上都是在套用别人的,所以下载了你的参考文件我没看懂……
但是你给予的帮助我是非常感谢的!谢谢! 帮你顶上去啊 (action_tile "pick" "(done_dialog 2)")
(action_tile "moshu" "(readata)") (action_tile "chishu" "(readata)")
(action_tile "kd" "(readata)") (action_tile "bianwei" "(readata)")
(action_tile "houdu" "(readata)")
(action_tile "accept" "(readata)(done_dialog 1)")
或者:
(action_tile "pick" "(readata)(done_dialog 2)")
(action_tile "accept" "(readata)(done_dialog 1)")
页:
[1]