明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5318|回复: 8

工具箱 升级 (改别人的)

[复制链接]
发表于 2017-11-7 17:22:33 | 显示全部楼层 |阅读模式
本帖最后由 gaomingabc456 于 2017-11-7 17:25 编辑

(defun c:xxx ()
  (mai_make_panel
   (list
   (list "AA"
            (list  "A1"  "A1");(list  按钮标签  运行的命令)
            (list  "A2"  "A2");(list  按钮标签  运行的命令)
            (list  "A3"  "A3");(list  按钮标签  运行的命令)
            (list  "A4"  "A4");(list  按钮标签  运行的命令)
            (list  "A5"  "A5");(list  按钮标签  运行的命令)
            (list  "A6"  "A6");(list  按钮标签  运行的命令)
            (list  "A7"  "A7");(list  按钮标签  运行的命令)
            (list  "A8"  "A8");(list  按钮标签  运行的命令)
      ) ;_ 结束list
          (list "BB"
            (list  "B1"  "B1");(list  按钮标签  运行的命令)
            (list  "B2"  "B2");(list  按钮标签  运行的命令)
            (list  "B3"  "B3");(list  按钮标签  运行的命令)
            (list  "B4"  "B4");(list  按钮标签  运行的命令)
            (list  "B5"  "B5");(list  按钮标签  运行的命令)
            (list  "B6"  "B6");(list  按钮标签  运行的命令)
            (list  "B7"  "B7");(list  按钮标签  运行的命令)
            (list  "B8"  "B8");(list  按钮标签  运行的命令)
      ) ;_ 结束list
        (list "CC"
            (list  "C1"  "C1");(list  按钮标签  运行的命令)
            (list  "C2"  "C2");(list  按钮标签  运行的命令)
            (list  "C3"  "C3");(list  按钮标签  运行的命令)
            (list  "C4"  "C4");(list  按钮标签  运行的命令)
            (list  "C5"  "C5");(list  按钮标签  运行的命令)
            (list  "C6"  "C6");(list  按钮标签  运行的命令)
            (list  "C7"  "C7");(list  按钮标签  运行的命令)
            (list  "C8"  "C8");(list  按钮标签  运行的命令)
      ) ;_ 结束list
       (list "DD"
            (list  "D1"  "D1");(list  按钮标签  运行的命令)
            (list  "D2"  "D2");(list  按钮标签  运行的命令)
            (list  "D3"  "D3");(list  按钮标签  运行的命令)
            (list  "D4"  "D4");(list  按钮标签  运行的命令)
            (list  "D5"  "D5");(list  按钮标签  运行的命令)
            (list  "D6"  "D6");(list  按钮标签  运行的命令)
            (list  "D7"  "D7");(list  按钮标签  运行的命令)
            (list  "D8"  "D8");(list  按钮标签  运行的命令)
      ) ;_ 结束list
    ) ;_ 结束list
  ) ;_ 结束mai_mak_panel
  (princ)
)


(defun mai_make_panel ( menulist / n num_nobut num_button nn nnn menuname val_lst add_dclrow tt order_lst in num_image)
  (defun add_dclrow ( dstr / ) (if dstr (setq val_lst (cons dstr val_lst))))
  (setq menuname (strcat (vl-filename-mktemp) "temp_pannel1.dcl"))
  (add_dclrow "curbutton:button{width=10;vertical_margin=none;vertical_margin=none;}")
  (add_dclrow "curimage:image{width=10;height=0.2;vertical_margin=none;vertical_margin=none;}")
  (add_dclrow "curpanel:dialog{label=\"工具箱 1\";alignment=centered;vertical_margin=none;horizontal_margin=none;")
  (add_dclrow ":row{")
  (setq len (apply 'max (mapcar 'length menulist))
        order_lst (apply 'append (mapcar 'cdr menulist))
        num_button 0
        num_nobut 0
        in 0
        num_image 0
  )
  (foreach nn menulist
        (setq in 0)
        (add_dclrow (strcat " : boxed_column{label=\"" (car nn) "\";vertical_margin=none; horizontal_margin=none;"))
        (foreach nnn (cdr nn)
           (setq num_button (1+ num_button)
                 in (1+ in)
                 num_image (1+ num_image)
                 tt (car nnn)
                 tt (if tt tt "")
           )
           (add_dclrow (strcat ":curbutton{label=\"" tt "\";key=\"but" (itoa num_button) "\";}"))
           (if (= 4 in)
               (progn (add_dclrow (strcat ":curimage{key=\"ima" (itoa num_image) "\";color=18;}"))                      (setq in 0)
                )
            )
         )
        (repeat (- len (length nn))
           (setq num_nobut (1+ num_nobut)
                 in (1+ in)
                 num_image (1+ num_image)
           )
           (add_dclrow (strcat " : curbutton{key=\"butno" (itoa num_nobut) "\";color=-2;}"))
           (if (= 4 in)
               (progn (add_dclrow (strcat ":curimage{key=\"ima" (itoa num_image) "\";}"))
                      (setq in 0)
               )
           )
        )
        (add_dclrow "spacer;}")
  )
  (add_dclrow "}
       :row {
       :text {key =\"label1\";width=13.35;height=1.875;fixed_heigh =true;fixed_width=true;}
       :button{label=\"退出\";key=\"cancel\";is_cancel=true;width=10;fixed_width=true;alignment=centered;}
       :curbutton{label=\"下一页\";key=\"nextl\";width=10;fixed_width=true;alignment=centered;}}}")
   (vl-file-delete menuname)
   (setq nn (open menuname "w"))
   (foreach n (reverse val_lst) (write-line n nn))
   (close nn)
   (setq nnn (load_dialog menuname))
   (if (not (new_dialog "curpanel" nnn)) (exit))
   (setq n 0)
   (repeat num_nobut (mode_tile (strcat "butno" (itoa num_nobut)) 1) (setq num_nobut (1- num_nobut)))
   (foreach nn menulist
        (foreach nnn (cdr nn)
           (setq n (1+ n)
                 tt (car nnn)
                 tt (if tt tt "")
           )
           (if (= tt "")
               (mode_tile (strcat "but" (itoa n)) 1)
               (action_tile (strcat "but" (itoa n)) (strcat "\(done_dialog " (itoa n) "\)"))
           )
        )
  )
   (action_tile "nextl" "(aaa22)")
   (setq nn (start_dialog))
   (unload_dialog nnn)
   (vl-file-delete menuname)
   (if (> nn 0)
       (progn (setq tt (cadr (nth (1- nn) order_lst)))
              (princ "\n")
              (if (= (eval (read (strcat "(type c:" tt ")"))) 'SUBR)
                  (eval (read (strcat "(c:" tt ")")))
                  (vl-cmdf tt)
              )
       )
   )
)
(defun aaa22 ()
(mai_make_panel1
    (list
      (list "OO"
            (list  "O1"  "O1");(list  按钮标签  运行的命令)
            (list  "O2"  "O2");(list  按钮标签  运行的命令)
            (list  "O3"  "O3");(list  按钮标签  运行的命令)
            (list  "O4"  "O4");(list  按钮标签  运行的命令)
            (list  "O5"  "O5");(list  按钮标签  运行的命令)
            (list  "O6"  "O6");(list  按钮标签  运行的命令)
            (list  "O7"  "O7");(list  按钮标签  运行的命令)
            (list  "O8"  "O8");(list  按钮标签  运行的命令)
      ) ;_ 结束list
          (list "PP"
            (list  "P1"  "P1");(list  按钮标签  运行的命令)
            (list  "P2"  "P2");(list  按钮标签  运行的命令)
            (list  "P3"  "P3");(list  按钮标签  运行的命令)
            (list  "P4"  "P4");(list  按钮标签  运行的命令)
            (list  "P5"  "P5");(list  按钮标签  运行的命令)
            (list  "P6"  "P6");(list  按钮标签  运行的命令)
            (list  "P7"  "P7");(list  按钮标签  运行的命令)
            (list  "P8"  "P8");(list  按钮标签  运行的命令)
      ) ;_ 结束list
        (list "QQ"
            (list  "Q1"  "Q1");(list  按钮标签  运行的命令)
            (list  "Q2"  "Q2");(list  按钮标签  运行的命令)
            (list  "Q3"  "Q3");(list  按钮标签  运行的命令)
            (list  "Q4"  "Q4");(list  按钮标签  运行的命令)
            (list  "Q5"  "Q5");(list  按钮标签  运行的命令)
            (list  "Q6"  "Q6");(list  按钮标签  运行的命令)
            (list  "Q7"  "Q7");(list  按钮标签  运行的命令)
            (list  "Q8"  "Q8");(list  按钮标签  运行的命令)
      ) ;_ 结束list
       (list "RR"
            (list  "R1"  "R1");(list  按钮标签  运行的命令)
            (list  "R2"  "R2");(list  按钮标签  运行的命令)
            (list  "R3"  "R3");(list  按钮标签  运行的命令)
            (list  "R4"  "R4");(list  按钮标签  运行的命令)
            (list  "R5"  "R5");(list  按钮标签  运行的命令)
            (list  "R6"  "R6");(list  按钮标签  运行的命令)
            (list  "R7"  "R7");(list  按钮标签  运行的命令)
            (list  "R8"  "R8");(list  按钮标签  运行的命令)
      ) ;_ 结束list
    ) ;_ 结束list
  ) ;_ 结束mai_mak_panel
(princ)
)


(defun mai_make_panel1 ( menulist / n num_nobut num_button nn nnn menuname val_lst add_dclrow tt order_lst in num_image)
  (defun add_dclrow ( dstr / ) (if dstr (setq val_lst (cons dstr val_lst))))
  (setq menuname (strcat (vl-filename-mktemp) "temp_pannel12.dcl"))
  (add_dclrow "curbutton:button{width=10;vertical_margin=none;vertical_margin=none;}")
  (add_dclrow "curimage:image{width=10;height=0.2;vertical_margin=none;vertical_margin=none;}")
  (add_dclrow "curpanel:dialog{label=\"工具箱 2\";alignment=centered;vertical_margin=none;horizontal_margin=none;")
  (add_dclrow ":row{")
  (setq len (apply 'max (mapcar 'length menulist))
        order_lst (apply 'append (mapcar 'cdr menulist))
        num_button 0
        num_nobut 0
        in 0
        num_image 0
  )
  (foreach nn menulist
        (setq in 0)
        (add_dclrow (strcat " : boxed_column{label=\"" (car nn) "\";vertical_margin=none; horizontal_margin=none;"))
        (foreach nnn (cdr nn)
           (setq num_button (1+ num_button)
                 in (1+ in)
                 num_image (1+ num_image)
                 tt (car nnn)
                 tt (if tt tt "")
           )
           (add_dclrow (strcat ":curbutton{label=\"" tt "\";key=\"but" (itoa num_button) "\";}"))
           (if (= 4 in)
               (progn (add_dclrow (strcat ":curimage{key=\"ima" (itoa num_image) "\";color=18;}"))                      (setq in 0)
                )
            )
         )
        (repeat (- len (length nn))
           (setq num_nobut (1+ num_nobut)
                 in (1+ in)
                 num_image (1+ num_image)
           )
           (add_dclrow (strcat " : curbutton{key=\"butno" (itoa num_nobut) "\";color=-2;}"))
           (if (= 4 in)
               (progn (add_dclrow (strcat ":curimage{key=\"ima" (itoa num_image) "\";}"))
                      (setq in 0)
               )
           )
        )
        (add_dclrow "spacer;}")
  )
   (add_dclrow "}:button{label=\"退出\";key=\"cancel\";is_cancel=true;width=10;fixed_width=true;alignment=centered;}}")
   (vl-file-delete menuname)
   (setq nn (open menuname "w"))
   (foreach n (reverse val_lst) (write-line n nn))
   (close nn)
   (setq nnn (load_dialog menuname))
   (if (not (new_dialog "curpanel" nnn)) (exit))
   (setq n 0)
   (repeat num_nobut (mode_tile (strcat "butno" (itoa num_nobut)) 1) (setq num_nobut (1- num_nobut)))
   (foreach nn menulist
        (foreach nnn (cdr nn)
           (setq n (1+ n)
                 tt (car nnn)
                 tt (if tt tt "")
           )
           (if (= tt "")
               (mode_tile (strcat "but" (itoa n)) 1)
               (action_tile (strcat "but" (itoa n)) (strcat "\(done_dialog " (itoa n) "\)"))
           )
        )
  )
   (setq nn (start_dialog))
   (unload_dialog nnn)
   (vl-file-delete menuname)
   (if (> nn 0)
       (progn (setq tt (cadr (nth (1- nn) order_lst)))
              (princ "\n")
              (if (= (eval (read (strcat "(type c:" tt ")"))) 'SUBR)
                  (eval (read (strcat "(c:" tt ")")))
                  (vl-cmdf tt)
              )
       )
   )
)





本帖子中包含更多资源

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

x
发表于 2017-11-12 11:55:45 | 显示全部楼层
这是老迈的吧
发表于 2017-11-12 16:15:27 来自手机 | 显示全部楼层
顶一下楼主,改进了哪些内容?
发表于 2017-11-12 21:06:18 | 显示全部楼层
本帖最后由 jun353835273 于 2017-11-13 08:53 编辑

这种改法感觉不是很科学, 可以设定一页显示的行数和列数。在每一页添加 "下一页"  "返回"的按钮。每次运行调用对话框生成函数就可以了,如果照你现在的改法如果设定了4页,还得搞四个mai_make_panel2 mai_make_panel3 mai_make_panel4 的函数

本帖子中包含更多资源

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

x
发表于 2017-11-14 08:48:26 | 显示全部楼层
没学到老迈的精髓,改的和没改看不出区别在那里
发表于 2017-11-14 13:09:12 | 显示全部楼层
发表于 2019-1-6 15:17:22 来自手机 | 显示全部楼层
支持一下,加油!
发表于 2022-12-27 15:15:21 | 显示全部楼层
请问是否可以把下一页这几个字放到第一个面板退出这几个字的下面吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 06:30 , Processed in 0.166477 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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