明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 916|回复: 0

[讨论] 求高手帮忙。对话框 toggle对象的$value值不能和KEY值同步

[复制链接]
发表于 2016-4-6 17:54:09 | 显示全部楼层 |阅读模式
本帖最后由 hehoubin 于 2016-4-6 17:56 编辑


[url=]10 秒后保存[/url] [url=]保存数据[/url] | [url=]恢复数据[/url]    [url=]字数检查[/url] | [url=]清除内容[/url]    [url=]加大编辑框[/url] | [url=]缩小编辑框[/url]


(vl-load-com)



(defun c:xx1(/ lsfs  blls lsfx zdjd xcdx xcdy ycdx yxdy  dcl dd sl qgpta qgptb qgptc qgptd dist1 ss  en dista distb distc Lmax p1 p2)

  ;;;读取对话框的参数
  (setq lsfs (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "lsfs"))
  (if (null (and lsfs (member lsfs '("ztls" "ftls" ))))
    (setq lsfs "ftls")
    )
    (setq lsfx (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "lsfx"))
  (if (null (and lsfx (member lsfx '("fxh" "fxsh" "fxs" ))))
    (setq lsfx "fxsh")
    )


    (setq blls (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "vvs"))
    (if (null blls) (setq blls "0"))


  (setq blls1 (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "blls1"))
  (if (null blls1) (setq blls1 "0"))


    )
      (setq zdjd (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "zdjd"))
  (if (null (and zdjd (member zdjd '("ptz7" "ptz8" "ptz9"  "ptz4"  "ptz5" "ptz6" "ptz1" "ptz2" "ptz3"))))
    (setq zdjd "ptz1")
    )
  (setq xcdx(vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "dist1^"))
  (if (null xcdx) (setq xcdx "2700"))


      (setq ycdx(vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "dist2^"))
  (if (null ycdx) (setq ycdx "1"))
  
  (setq xcdy(vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "dist3^"))
  (if (null xcdy) (setq xcdy "2700"))


  (setq ycdy(vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "dist4^"))
  (if (null ycdy) (setq ycdy "1"))
  
;;;读取对话框
  
  (setq dcl (load_dialog "C:/Program Files/Havis&CAD/Havis&CAD/对话框定义/墙体拉伸1.DCL"))
  ;(setq dcl (load_dialog "墙体拉伸1.DCL"))
  (setq dd 6)
  (while (> dd 1)
    (if (null (new_dialog "qglsX" dcl)) (exit))
   
   ;;获取对话框内各个对象的值
    (set_tile "lsfs" lsfs)
    (set_tile "lsfx" lsfx)
    (set_tile "blls" blls)
    (if (= lsfx "fxh")
      (progn
     (foreach x '("xcdy"  "xcdisy" "ycdx" "ycdy" "yDisy" "yDisx")(mode_tile x 1))
    (if (= blls "blss")
     (foreach x '("xcdy"  "xcdisy"  "ycdy" "yDisy" )(mode_tile x 1)))
     ))
     (if (= lsfx "fxsh")
      (progn
     (foreach x '("xcdx"  "xcdisx" "ycdx" "ycdy" "yDisy" "yDisx")(mode_tile x 1))
     (if (= blls "blss")
      (foreach x '("xcdx"  "xcdisx" "ycdx"  "yDisx")(mode_tile x 1)))
     ))
      (if (= lsfx "fxs")
      (progn
     (foreach x '("ycdx" "ycdy" "yDisy" "yDisx")(mode_tile x 1))
     
    (if (= blls "blss")
    (foreach x '("ycdx" "ycdy" "yDisy" "yDisx")(mode_tile x 0)))
       ))
   (if (= blls "blss")
      (foreach x '("ycdx" "ycdy" "yDisy" "yDisx")(mode_tile x 0)))
   
   
    ;;关闭不响应的控件


    (set_tile "zdjd" zdjd)
    (set_tile "xcdx" (VL-PRINC-TO-STRING xcdx))
    (set_tile "ycdx" (VL-PRINC-TO-STRING ycdx))
    (set_tile "xcdy" (VL-PRINC-TO-STRING xcdy))                ;距离
    (set_tile "ycdy" (VL-PRINC-TO-STRING ycdy))
     ;;调用按钮


   
    (action_tile "fxh" "(setq lsfx $key)
    (foreach x '(\"fxsh\" \"fxs\" )(set_tile x \"0\"))
    (foreach x '(\"xcdy\"  \"xcdisy\"  )(mode_tile x 1))
    (foreach x '(\"xcdx\"  \"xcdisx\"  )(mode_tile x 0))
   
    (if (= blls1 \"1\")
    (H_sub_blls $value))
    ")


   
   
    (action_tile "fxsh" "(setq lsfx $key)
    (foreach x '(\"fxh\" \"fxs\")(set_tile x \"0\"))
    (foreach x '(\"xcdy\"  \"xcdisy\"  )(mode_tile x 0))
    (foreach x '(\"xcdx\"  \"xcdisx\"  )(mode_tile x 1))
   
    (if (= blls1 \"1\")
    (H_sub_blls $value))
     ")


   
    (action_tile "fxs" "(setq lsfx $key)
    (foreach x '(\"fxh\" \"fxsh\")(set_tile x \"0\"))
    (foreach x '(\"xcdy\"  \"xcdisy\"  \"xcdx\"  \"xcdisx\" )(mode_tile x 0))
   
    (if (= blls1 \"1\")
   (H_sub_blls $value))
      ")


   
    (action_tile "blls" "(setq blls $key)(setq blls1 $value)
    (foreach x '(\"ycdy\"  \"yDisy\"  \"ycdx\"  \"yDisx\" \"blls1\" \"blls\")(mode_tile x 0))
    (foreach x '(\"blls1\") (set_tile x \"1\"))
   
    (if (= blls1 \"1\")
    (H_sub_blls $value)(foreach x '(\"ycdy\"  \"yDisy\"  \"ycdx\"  \"yDisx\" )(mode_tile x 1)))")
    (action_tile "xcdisx" "(getyx4)(done_dialog 2)")
    (action_tile "yDisx" "(getyx4)(done_dialog 3)")
    (action_tile "xcdisy" "(getyx4)(done_dialog 4)")
    (action_tile "yDisy" "(getyx4)(done_dialog 5)")
    (action_tile "accept" "(getyx4)(done_dialog 1)")
    (setq dd (start_dialog)) (null (wcmatch "534e5" "*[~0-9]*"))




    (cond
      ((= dd 2)
       (setq xcdx (getdist "\n确定距离:"))
       (if xcdx(setq xcdx xcdx))
       )
       ((= dd 3)
       (setq ycdx (getdist "\n确定距离:"))
       (if ycdx (setq ycdx ycdx))
       )
       ((= dd 4)
       (setq xcdy (getdist "\n确定距离:"))
       (if xcdy (setq xcdy xcdy))
       )
       ((= dd 5)
       (setq ycdy (getdist "\n确定距离:"))
       (if ycdy (setq ycdy ycdy))
       )
  


       );;cond
      
   


    );while
  
  (UNLOAD_DIALOG dcl);;退出对话框



  (if (= dd 1)
    (progn
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "lsfs" lsfs)
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "vvs" blls)
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "blls1" blls1)
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "lsfx" lsfx)
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "zdjd" zdjd)
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "dist1^" xcdx);距离
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "dist2^" ycdx)
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "dist3^" xcdy)
      (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\Software\\Microsoft\\MyLispSettings\\chunxiaoyan" "dist4^" ycdy)
      (princ "\n*选择要拉伸的线条*")
      (setq ss (ssget))
      (if (null ss)(exit))
      (setq xcdx (atof xcdx))
      (setq ycdx (atof ycdx))
      (setq xcdy (atof xcdy))
      (setq ycdy (atof ycdy))
      




      );progn dd
    );if dd
  
  )




;;获取对话框内各个对象的值
(defun getyx4()
  (setq lsfs (get_tile "lsfs"))
  (setq blls (get_tile "blls"))
  (setq blls1 (get_tile "blls1"))
  (setq lsfx (get_tile "lsfx"))
  (setq zdjd (get_tile "zdjd"))
  (setq xcdx (get_tile "xcdx"))
  (setq ycdx (get_tile "ycdx"))
  (setq xcdy (get_tile "xcdy"))
  (setq ycdy (get_tile "ycdy"))
  )
  (princ)




(defun H_sub_blls(blls1)
   
  (if  (= blls1 "1")
            
    (progn
    (if (= lsfx "fxh")
     (progn
    (foreach x '("ycdx"  "yDisx")(mode_tile x 0))
    (foreach x '("ycdy"  "yDisy")(mode_tile x 1))
     )
      
      )
     (if(= lsfx "fxsh")
       (progn
    (foreach x '("ycdx"  "yDisx")(mode_tile x 1))
    (foreach x '("ycdy"  "yDisy")(mode_tile x 0))
    )


       )
   (if(= lsfx "fxs")
   (foreach x '("ycdy"  "yDisy" "ycdx"  "yDisx" )(mode_tile x 0))
    )


   );;progn
        
    (foreach x '("ycdy"  "yDisy" "ycdx"  "yDisx" )(mode_tile x 1))
   
              
  
    )
     )

(princ) 同时发表至新浪微博 开通此功能(将打开新窗口)
阅读权限售价设置主题标签


本版积分规则发表帖子 保存草稿 将此主题同步到: [url=]腾讯微博[/url]



附加选项
HTML 代码
[img] 代码
解析图片链接
禁用链接识别
禁用表情
禁用编辑器代码

使用个人签名
回帖仅作者可见
回帖倒序排列
接收回复通知
发送动态








本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 12:59 , Processed in 0.174202 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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