明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2052|回复: 7

[基础] 求指点:对话框编辑值问题

[复制链接]
发表于 2014-6-21 12:11:51 | 显示全部楼层 |阅读模式
本帖最后由 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);长齿
)
)
)
…………………………
…………………………









本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-6-21 20:03:56 | 显示全部楼层
    (action_tile "pick" "(done_dialog 2)")
应该是这里,当点击pick的同时,应增加设置当前屏显参数的变量。
(setq m (atof (get_tile "moshu")))
......
 楼主| 发表于 2014-6-22 07:54:19 | 显示全部楼层
本帖最后由 xhq1954425 于 2014-6-22 08:03 编辑
emk 发表于 2014-6-21 20:03
(action_tile "pick" "(done_dialog 2)")
应该是这里,当点击pick的同时,应增加设置当前屏显参数的变 ...

试过了不行……非常感谢你
发表于 2014-6-22 09:44:10 | 显示全部楼层
;;供参考

本帖子中包含更多资源

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

x
发表于 2014-6-22 09:49:17 | 显示全部楼层
其实颜色和中心点选项都多余
 楼主| 发表于 2014-6-22 10:30:06 | 显示全部楼层
本帖最后由 xhq1954425 于 2014-6-22 10:32 编辑
xyp1964 发表于 2014-6-22 09:44
;;供参考

谢谢小老弟,我没有系统地学过二次开发,身边又没有会的人,都是跟着明经网自学,其实不容易,由于我接触的DCL不多,基本上都是在套用别人的,所以下载了你的参考文件我没看懂……
但是你给予的帮助我是非常感谢的!谢谢!
发表于 2014-6-22 17:41:46 来自手机 | 显示全部楼层
帮你顶上去啊
发表于 2015-3-9 16:04:20 | 显示全部楼层
    (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)")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 16:22 , Processed in 0.197468 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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