明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1753|回复: 6

[进阶习题] 2013求助第一帖

[复制链接]
发表于 2013-2-27 17:29:07 | 显示全部楼层 |阅读模式
  1. (defun c:mjtkxrwb();;;  (if(null dcl_pt);;;    (setq dcl_pt '(-1 -1));;;    );;;  (setq mjtkdcl(open "F:\\“终极软件”\\mjtk.dcl" 2));打开指定路径下的对话框文件  (setq mjtkdcl1(load_dialog "F:\\“终极软件”\\mjtk.dcl"));加载DCL文件  (new_dialog "mjtk" mjtkdcl1);启动对话框  (set_tile "mjtkcd" "420")        ;给指定的编辑框设定默认值  (set_tile "mjtkkd" "297")  (set_tile "mjtkzd" "25")  (set_tile "mjtkbj" "5")  (set_tile "mjtkjj" "10")  (set_tile "mjtkxk" "1")  (set_tile "mjtkbk" "1")  (set_tile "mjtkbg" "30")  (action_tile "accept" "(mjtkqz) (done_dialog)");点击确定按钮后执行子程序(mjtkqz)  (start_dialog)  (unload_dialog mjtkdcl1)  (setq mjtkyn1(load_dialog "F:\\“终极软件”\\mjtk.dcl"));加载DCL文件  (new_dialog "mjtk" mjtkyn1)  (setq mjtkdcl2-1(atof mjtkdcl2))  (if (/= mjtkdcl2-1 (or 297  420 841 1189))    (set_tile "mjtkcd" "输入的图纸长度不符合标准")    )  (setq mjtkdcl3-1(atof mjtkdcl3))  (if (/= mjtkdcl3-1 ( or 210 297 594 841))    (set_tile "mjtkkd" "输入的图纸宽度不符合标准")    )  (setq mjtkdcl4-1(atof mjtkdcl4))  (if (or (< mjtkdcl4-1 25 ) (> mjtkdcl4-1 80))    (set_tile "mjtkzd" "您输入的装订边宽度要在25~80之间")    )  (setq mjtkdcl5-1(atof mjtkdcl5))  (if (or (< mjtkdcl5-1 5) (> mjtkdcl5-1 50))    (set_tile "mjtkbj" "请您输入5~50之间的图纸边距")    )  (setq mjtkdcl6-1(atof mjtkdcl6))  (if (or (< mjtkdcl6-1 2) (> mjtkdcl6-1 80))    (set_tile "mjtkjj" "绘图区与标题栏的间距在2~80之间")    )  (setq mjtkdcl7-1(atof mjtkdcl7))  (if (or (< mjtkdcl7-1 0) (> mjtkdcl7-1 20))    (set_tile "mjtkxk" "绘图区线宽为0~20之间")    )  (setq mjtkdcl8-1(atof mjtkdcl8))  (if (or (< mjtkdcl8-1 0) (> mjtkdcl8-1 20))    (set_tile "mjtkbk" "标题栏线宽为0~20之间")    )  (setq mjtkdcl9-1(atof mjtkdcl9))  (if (or (< mjtkdcl9-1 10) (> mjtkdcl9-1 100))    (set_tile "mjtkbg" "标题栏高度为10~100之间")    )  (start_dialog)  (unload_dialog mjtkdcl1)  (prin1)  )(defun mjtkqz()  (setq mjtkdcl2(get_tile "mjtkcd"));取得编辑框里面的数据  (setq mjtkdcl3(get_tile "mjtkkd"))  (setq mjtkdcl4(get_tile "mjtkzd"))  (setq mjtkdcl5(get_tile "mjtkbj"))  (setq mjtkdcl6(get_tile "mjtkjj"))  (setq mjtkdcl7(get_tile "mjtkxk"))  (setq mjtkdcl8(get_tile "mjtkbk"))  (setq mjtkdcl9(get_tile "mjtkbg"))  )
  1. mjtk:dialog{        label="图框设定";        :row{                :edit_box{label="图纸长度";key="mjtkcd";}                :edit_box{label="图纸宽度";key="mjtkkd";}        }        :row{                :edit_box{label="装订宽度";key="mjtkzd";}                :edit_box{label="图纸边距";key="mjtkbj";}        }:row{                :edit_box{label="绘标间距";key="mjtkjj";}                :edit_box{label="图区线宽";key="mjtkxk";}        }:row{                :edit_box{label="标题栏线宽";key="mjtkbk";}                :edit_box{label="标题栏高度";key="mjtkbg";}        }        spacer_1;        ok_cancel;}



该贴已经同步到 328302216的微博

本帖子中包含更多资源

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

x
 楼主| 发表于 2013-2-27 17:32:09 | 显示全部楼层
以上代码怎么实现如图片所类似的功能?求大神指点想了半天没都没解决!!!
 楼主| 发表于 2013-2-27 17:34:11 | 显示全部楼层
不好意思那代码!!!我重新发一下!!


(defun c:mjtkxrwb()
;;;  (if(null dcl_pt)
;;;    (setq dcl_pt '(-1 -1))
;;;    )
;;;  (setq mjtkdcl(open "F:\\“终极软件”\\mjtk.dcl" 2));打开指定路径下的对话框文件
  (setq mjtkdcl1(load_dialog "F:\\“终极软件”\\mjtk.dcl"));加载DCL文件
  (new_dialog "mjtk" mjtkdcl1);启动对话框
  (set_tile "mjtkcd" "420")        ;给指定的编辑框设定默认值
  (set_tile "mjtkkd" "297")
  (set_tile "mjtkzd" "25")
  (set_tile "mjtkbj" "5")
  (set_tile "mjtkjj" "10")
  (set_tile "mjtkxk" "1")
  (set_tile "mjtkbk" "1")
  (set_tile "mjtkbg" "30")
  (action_tile "accept" "(mjtkqz) (done_dialog)");点击确定按钮后执行子程序(mjtkqz)
  (start_dialog)
  (unload_dialog mjtkdcl1)

  (setq mjtkyn1(load_dialog "F:\\“终极软件”\\mjtk.dcl"));加载DCL文件
  (new_dialog "mjtk" mjtkyn1)
  (setq mjtkdcl2-1(atof mjtkdcl2))
  (if (/= mjtkdcl2-1 (or 297  420 841 1189))
    (set_tile "mjtkcd" "输入的图纸长度不符合标准")
    )
  (setq mjtkdcl3-1(atof mjtkdcl3))
  (if (/= mjtkdcl3-1 ( or 210 297 594 841))
    (set_tile "mjtkkd" "输入的图纸宽度不符合标准")
    )
  (setq mjtkdcl4-1(atof mjtkdcl4))
  (if (or (< mjtkdcl4-1 25 ) (> mjtkdcl4-1 80))
    (set_tile "mjtkzd" "您输入的装订边宽度要在25~80之间")
    )
  (setq mjtkdcl5-1(atof mjtkdcl5))
  (if (or (< mjtkdcl5-1 5) (> mjtkdcl5-1 50))
    (set_tile "mjtkbj" "请您输入5~50之间的图纸边距")
    )
  (setq mjtkdcl6-1(atof mjtkdcl6))
  (if (or (< mjtkdcl6-1 2) (> mjtkdcl6-1 80))
    (set_tile "mjtkjj" "绘图区与标题栏的间距在2~80之间")
    )
  (setq mjtkdcl7-1(atof mjtkdcl7))
  (if (or (< mjtkdcl7-1 0) (> mjtkdcl7-1 20))
    (set_tile "mjtkxk" "绘图区线宽为0~20之间")
    )
  (setq mjtkdcl8-1(atof mjtkdcl8))
  (if (or (< mjtkdcl8-1 0) (> mjtkdcl8-1 20))
    (set_tile "mjtkbk" "标题栏线宽为0~20之间")
    )
  (setq mjtkdcl9-1(atof mjtkdcl9))
  (if (or (< mjtkdcl9-1 10) (> mjtkdcl9-1 100))
    (set_tile "mjtkbg" "标题栏高度为10~100之间")
    )
  (start_dialog)
  (unload_dialog mjtkdcl1)

  (prin1)
  )

(defun mjtkqz()
  (setq mjtkdcl2(get_tile "mjtkcd"));取得编辑框里面的数据
  (setq mjtkdcl3(get_tile "mjtkkd"))
  (setq mjtkdcl4(get_tile "mjtkzd"))
  (setq mjtkdcl5(get_tile "mjtkbj"))
  (setq mjtkdcl6(get_tile "mjtkjj"))
  (setq mjtkdcl7(get_tile "mjtkxk"))
  (setq mjtkdcl8(get_tile "mjtkbk"))
  (setq mjtkdcl9(get_tile "mjtkbg"))
  )

mjtk:dialog{
        label="图框设定";
        :row{
                :edit_box{label="图纸长度";key="mjtkcd";}
                :edit_box{label="图纸宽度";key="mjtkkd";}
        }
        :row{
                :edit_box{label="装订宽度";key="mjtkzd";}
                :edit_box{label="图纸边距";key="mjtkbj";}
        }:row{
                :edit_box{label="绘标间距";key="mjtkjj";}
                :edit_box{label="图区线宽";key="mjtkxk";}
        }:row{
                :edit_box{label="标题栏线宽";key="mjtkbk";}
                :edit_box{label="标题栏高度";key="mjtkbg";}
        }
        spacer_1;
        ok_cancel;
}
发表于 2013-2-27 18:32:23 | 显示全部楼层
不应该发在这里,你这个直接用IF判断...
 楼主| 发表于 2013-2-28 09:32:55 | 显示全部楼层
【KAIXIN】 发表于 2013-2-27 18:32
不应该发在这里,你这个直接用IF判断...

开心老大  那要怎么整呢?用while判断?我这个直接用IF判断怎么第二次出来的对话框里面都没值呢??
发表于 2013-2-28 09:50:20 | 显示全部楼层
328302216 发表于 2013-2-28 09:32
开心老大  那要怎么整呢?用while判断?我这个直接用IF判断怎么第二次出来的对话框里面都没值呢??

没值,再重新赋值
 楼主| 发表于 2013-2-28 14:39:42 | 显示全部楼层
【KAIXIN】 发表于 2013-2-28 09:50
没值,再重新赋值

(setq mjtkdcl2-1(atof mjtkdcl2))  ;把取得的mjtkdcl2转换成实数
  (if (/= mjtkdcl2-1 (or 297  420 841 1189));判断转换后得到的实数是否符合条件
   (set_tile "mjtkcd" "输入的图纸长度不符合标准");如果不符合就给mjtkcd赋值为"输入的图纸长度不符合标准"
    )
  (setq mjtkdcl3-1(atof mjtkdcl3))
  (if (/= mjtkdcl3-1 ( or 210 297 594 841))
    (set_tile "mjtkkd" "输入的图纸宽度不符合标准")
    )

如这两句判断后并给MJTKDCL2 赋予一个字符串不对吗?能否帮忙改一下?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 14:29 , Processed in 0.171612 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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