求高手帮忙。对话框 toggle对象的$value值不能和KEY值同步
本帖最后由 hehoubin 于 2016-4-6 17:56 编辑10 秒后保存 保存数据 | 恢复数据 字数检查 | 清除内容 加大编辑框 | 缩小编辑框http://bbs.mjtd.com/static/image/editor/resize.gif
(vl-load-com)
(defun c:xx1(/ lsfsblls lsfx zdjd xcdx xcdy ycdx yxdydcl dd sl qgpta qgptb qgptc qgptd dist1 ssen 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) 同时发表至新浪微博 开通此功能(将打开新窗口)
阅读权限售价设置主题标签
本版积分规则发表帖子 保存草稿 将此主题同步到: 腾讯微博
附加选项HTML 代码 代码解析图片链接禁用链接识别禁用表情禁用编辑器代码使用个人签名回帖仅作者可见回帖倒序排列接收回复通知发送动态
页:
[1]