明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5944|回复: 24

请帮忙完成DCL@LSP 图层列表框和复选框问题。谢谢。。

  [复制链接]
发表于 2012-11-30 23:03:30 | 显示全部楼层 |阅读模式
本帖最后由 hehoubin 于 2012-11-30 23:10 编辑

请大侠们帮忙完成这个点对话框的图层控制。谢谢!
                                                        我想当 下拉列表框为模型专用图层时,复选框为A01-A14,ACX,ABH,
                                                        下拉列表框为设计专用图层时,复选框为WALL,WINDOWS,DOOR。、
                                   下拉列表框为设计专用图层时,复选框为搜索文件里的所有图层。
                                   复选框可以拉选多个图层进行右边的操作。
  1. 主程序
  2. (vl-load-com)
  3. (defun c:TC (/ fname fn x dclid lin)
  4. (setvar "CMDECHO" 0)
  5. (setq d0lst '("a01" "a02" "a03" "a04" "a05" "a06" "a07" "a08" "a09" "a10" "a11" "a12" "a13" "a14" "acx" "bh"))
  6. (setq d0lst1 '("模型专用图层" "设计专用图层" "所有图层" ))
  7.       (setq fname (vl-filename-mktemp nil nil ".dcl" ))
  8.        (setq fn (open fname "W"  ))
  9.        (foreach x '(
  10.                      "  agtckz : dialog{"
  11.                      "  label="《 &Havis&CAD 》--图层控制--TC";"
  12.                      "     :row{"
  13.                      "     :column { "
  14.                      "     label = "用  户  图  层";"
  15.                      "     :row{"
  16.                      "     :column { "
  17.                      "     :popup_list { "
  18.                      "     key = "ky";"
  19.                      "     list = "";"
  20.                      "     }"
  21.                      "    :list_box { width=18;height=25;"
  22.                      "     key = "t0";"
  23.                      "     list = "";"
  24.                      "     }"
  25.                      "     }"

  26.                      "    :column { "
  27.                      "     label = "图层处理";width=5;height=30;"
  28.                      "     :radio_button { "
  29.                      "      label = "当前图层";width=1;height=1;"
  30.                      "     key = "k1";"
  31.                      "      }"
  32.                      "     :radio_button { "
  33.                      "      label = "打开图层";width=1;"
  34.                      "     key = "k2";"
  35.                      "      }"
  36.                      "     :radio_button { "
  37.                      "      label = "关闭图层";width=1;"
  38.                      "     key = "k3";"
  39.                      "      }"
  40.                      "     :radio_button { "
  41.                      "      label = "锁定图层";width=1;"
  42.                      "     key = "k4";"
  43.                      "      }"
  44.                      "     :radio_button { "
  45.                      "      label = "解锁图层";width=1;"
  46.                      "     key = "k5";"
  47.                      "      }"
  48.                      "     :radio_button { "
  49.                      "      label = "冻结图层";width=1;"
  50.                      "     key = "k6";"
  51.                      "      }"
  52.                      "     :radio_button { "
  53.                      "      label = "解冻图层";width=1;"
  54.                      "     key = "k7";"
  55.                      "      }"
  56.                      "     :radio_button { "
  57.                      "      label = "选物改层";width=1;"
  58.                      "     key = "k8";"
  59.                      "      }"
  60.                      "     :radio_button { "
  61.                      "      label = "选物改色";width=1;"
  62.                      "     key = "k9";"
  63.                      "      }"
  64.                      "     :radio_button { "
  65.                      "      label = "选物改线性";width=1;"
  66.                      "     key = "k10";"
  67.                      "      }"
  68.                      "      }"
  69.                      "      }"
  70.                      "      }"
  71.                      "      }"
  72.                      "    ok_cancel_help;"
  73.                      "      }"

  74.              );end ;endlist
  75.               (princ x fn)
  76.               (write-line "" fn)
  77.        );end foreach
  78.        (close fn)
  79.        (setq fn (open fname "r" ))
  80.        (setq dclid (load_dialog fname))
  81.        (while (or (eq (substr (setq lin (vl-string-right-trim "" fn)" (vl-string-left-trim "(write-line "" (read-line fn)))) 1 2) "//" ) (eq (substr lin 1 (vl-string-search " " lin)) "" ) (not (eq (substr lin (+ (vl-string-search " " lin) 1) 9) " : dialog" ))))
  82.        (new_dialog (substr lin 1 (vl-string-search " " lin)) dclid)

  83.    (start_list "t0")

  84.    (mapcar 'add_list d0lst)

  85.    (end_list)

  86.    (start_list "ky")

  87.    (mapcar 'add_list d0lst1)

  88.    (end_list)

  89.        (action_tile "k1" "(done_dialog 1)" )
  90. (setq re (start_dialog))
  91.        (cond
  92.               ((= re 1) (tcgb))

  93.   );end cond
  94.        (unload_dialog dclid)
  95.        (close fn)
  96.        (vl-file-delete fname)
  97.        (princ))


 楼主| 发表于 2012-12-1 10:21:35 | 显示全部楼层
大侠能帮忙写下吗
发表于 2012-12-1 11:40:12 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2012-12-1 20:42 编辑

能多选了,可后面程序不知道如何处理。
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
 楼主| 发表于 2012-12-1 14:06:28 | 显示全部楼层
谢谢你。zzxxQQ  你好,当 下拉列表为 所有图层 的时候,复选列表框为CAD 文件里的所有图层。能帮我在加上去吗,
将所有图层复制给(setq d0lst2  (搜索CAD文件里的所有图层))这里要怎么写
((= ky 2) (start_list "t0") (mapcar 'add_list d0lst2) (end_list))
发表于 2012-12-1 17:58:09 | 显示全部楼层
板凳改了。
 楼主| 发表于 2012-12-1 19:09:52 | 显示全部楼层
你好,那个当列表枉是所有图层 的时候 复选框还是有问题。。
能再帮看看吗?

点评

啥问题?  发表于 2012-12-1 19:16
 楼主| 发表于 2012-12-1 19:30:05 | 显示全部楼层
它把复选框的图层赋值到了列表框

点评

又改了板凳  发表于 2012-12-1 20:43
发表于 2012-12-1 21:44:22 | 显示全部楼层


  1. (defun c:test1163 (/ ilst ll1 ll2)
  2.   (cmdla0)
  3.   (defun main-pro ()
  4.     (princ "\n")
  5.   )
  6.   (defun apo1 ()
  7.     (xyp-Dcl-Gettile '("po1"))
  8.     (cond ((= po1 "0") (xyp-show-list "li1" lst0))
  9.    ((= po1 "1") (xyp-show-list "li1" lst2))
  10.    ((= po1 "2") (xyp-show-list "li1" lst3))
  11.     )
  12.   )
  13.   (setq ll1 '(k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 li1 po1)
  14. ll2 '("1" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0")
  15.   )
  16.   (xyp-initSet ll1 ll2)
  17.   (setq lst0 '("a01" "a02" "a03" "a04" "a05" "a06" "a07" "a08" "a09" "a10" "a11" "a12" "a13" "a14" "ACX" "ABH")
  18. lst1 '("模型专用图层" "设计专用图层" "所有图层")
  19. lst2 '("WALL" "WINDOWS" "DOOR")
  20. lst3 (xyp-get-layers)
  21. ilst '(("" "用户图层" ":boxed_row{")
  22.         ":column{"
  23.         ("po1" "" "poplist" "lst1" "12" "(apo1)")
  24.         ("li1" "" "list" "lst0" "12" "14")
  25.         "}"
  26.         ("" "图层处理" ":boxed_radio_column{")
  27.         ("k1" "当前图层" "radio")
  28.         ("k2" "打开图层" "radio")
  29.         ("k3" "关闭图层" "radio")
  30.         ("k4" "锁定图层" "radio")
  31.         ("k5" "解锁图层" "radio")
  32.         ("k6" "冻结图层" "radio")
  33.         ("k7" "解冻图层" "radio")
  34.         ("k8" "选物改层" "radio")
  35.         ("k9" "选物改色" "radio")
  36.         ("k10" "选物改线性" "radio")
  37.         "spacer;"
  38.         "}"
  39.         "}"
  40.         "spacer;"
  41.        )
  42.   )
  43.   (if (= (xyp-Dcl-Init Ilst "【图层控制】" t) 1)
  44.     (main-pro)
  45.   )
  46.   (cmdla1)
  47. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-12-1 23:09:46 | 显示全部楼层
谢谢
 楼主| 发表于 2012-12-1 23:16:48 | 显示全部楼层
非常感谢两位高手。让学生受益匪浅。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 05:42 , Processed in 0.205874 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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