明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1998|回复: 1

[提问] 多层面板修改

[复制链接]
发表于 2014-12-17 11:42 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 love1030312 于 2014-12-17 11:49 编辑

         论坛大神们的程序 在此感谢此程序原作者  
       我想修改下帮助文件 不要通用了   改成单个的
        论坛所有面板程序字体颜色都是黑色
      能否换成其他颜色  这样比较新颖  哈哈   不知道能否实现这功能
  1. ;;示例qq
  2. (defun c:qq ( / titl titl0 msg lst switch
  3.         main more-1 more-2
  4.         more-3 more-4 more-5 )
  5.   ;通用定义
  6.   (setq titl0 "xx工具箱 v20141203")
  7.   (setq msg
  8.     (strcat
  9.       "\nmade by lostbalance"
  10.     )
  11.   )
  12.   (setq switch "main 主页面(&Z)")
  13. ;;================================
  14.   (defun main()
  15.     (setq *panel-num* 0)
  16.     (setq lst
  17.       '(
  18.         (
  19.           ("命令组1"
  20.             (
  21.               "FUNC1 命令1"
  22.               "FUNC2 命令2"
  23.               "FUNC3 命令3"
  24.               "more-1 =汇总= (&W)"
  25.             )
  26.           )
  27.           ("命令组2"
  28.             (
  29.               "FUNC4 命令4"
  30.               "FUNC5 命令5"
  31.               "FUNC6 命令6"
  32.               "more-2 =汇总= (&E)"
  33.             )
  34.           )
  35.           ("命令组3"
  36.             (
  37.               "FUNC7 命令7"
  38.               "FUNC8 命令8"
  39.               "FUNC9 命令9"
  40.               "more-3 =汇总= (&R)"
  41.             )
  42.           )
  43.         )
  44.         (
  45.           ("命令组4"
  46.             (
  47.               "FUNC10 命令10"
  48.               "FUNC11 命令11"
  49.               "FUNC12 命令12"
  50.               "more-4 =汇总= (&S)"
  51.             )
  52.           )
  53.           ("命令组5"
  54.             (
  55.               "FUNC13 命令13"
  56.               "FUNC14 命令14"
  57.               "FUNC15 命令15"
  58.               "more-5 =汇总= (&D)"
  59.             )
  60.           )
  61.         )
  62.       )
  63.     )
  64.     (WYB-panel titl0 msg lst switch nil nil)
  65.   )
  66.   (defun more-1 (/ titl lst)
  67.     (setq *panel-num* 1)
  68.     (setq titl "命令组1")
  69.     (setq lst
  70.       '(
  71.         (
  72.           (""
  73.             (
  74.               "FUNC1 命令1 (&S)"
  75.               "FUNC2 命令2 (&D)"
  76.               "FUNC3 命令3 (&F)"
  77.             )
  78.           )
  79.           (""
  80.             (
  81.               "FUNCA1 命令A1 (&W)"
  82.               "FUNCA2 命令A2 (&E)"
  83.             )
  84.           )
  85.         )
  86.       )
  87.     )  
  88.     (WYB-panel titl msg lst switch 20 nil)
  89.   )
  90.   (defun more-2 (/ titl lst)
  91.     (setq *panel-num* 2)
  92.     (setq titl "命令组2")
  93.     (setq lst
  94.       '(
  95.         (
  96.           (""
  97.             (
  98.               "FUNC4 命令4 (&S)"
  99.               "FUNC5 命令5 (&D)"
  100.               "FUNC6 命令6 (&F)"
  101.             )
  102.           )
  103.           (""
  104.             (
  105.               "FUNCB1 命令B1 (&W)"
  106.               "FUNCB2 命令B2 (&E)"
  107.               "FUNCB3 命令B3 (&R)"
  108.             )
  109.           )
  110.         )
  111.       )
  112.     )  
  113.     (WYB-panel titl msg lst switch 20 nil)
  114.   )
  115.   (defun more-3 (/ titl lst)
  116.     (setq *panel-num* 3)
  117.     (setq titl "命令组3")
  118.     (setq lst
  119.       '(
  120.         (
  121.           (""
  122.             (
  123.               "FUNC7 命令7 (&S)"
  124.               "FUNC8 命令8 (&D)"
  125.               "FUNC9 命令9 (&F)"
  126.             )
  127.           )
  128.           (""
  129.             (
  130.               "~FUNCC1 命令C1 (&W)"
  131.               "~FUNCC2 命令C2 (&E)"
  132.               "~FUNCC3 命令C3 (&R)"
  133.             )
  134.           )
  135.         )
  136.       )
  137.     )  
  138.     (WYB-panel titl msg lst switch 20 nil)
  139.   )
  140.   (defun more-4 (/ titl lst)
  141.     (setq *panel-num* 4)
  142.     (setq titl "命令组4")
  143.     (setq lst
  144.       '(
  145.         (
  146.           (""
  147.             (
  148.               "FUNC10 命令10 (&S)"
  149.               "FUNC11 命令11 (&D)"
  150.               "FUNC12 命令12 (&F)"
  151.             )
  152.           )
  153.           (""
  154.             (
  155.               "~FUNCD1 命令D1 (&W)"
  156.               "~FUNCD2 命令D2 (&E)"
  157.               "~FUNCD3 命令D3 (&R)"
  158.             )
  159.           )
  160.         )
  161.       )
  162.     )  
  163.     (WYB-panel titl msg lst switch 20 nil)
  164.   )
  165.   (defun more-5 (/ titl lst)
  166.     (setq *panel-num* 5)
  167.     (setq titl "命令组5")
  168.     (setq lst
  169.       '(
  170.         (
  171.           (""
  172.             (
  173.               "FUNC13 命令13 (&S)"
  174.               "FUNC14 命令14 (&D)"
  175.               "FUNC15 命令15 (&F)"
  176.             )
  177.           )
  178.           (""
  179.             (
  180.               "FUNCE1 命令E1 (&W)"
  181.               "FUNCE2 命令E2 (&E)"
  182.               "FUNCE3 命令E3 (&R)"
  183.             )
  184.           )
  185.         )
  186.       )
  187.     )  
  188.     (WYB-panel titl msg lst switch 20 nil)
  189.   )

  190.   (cond
  191.     ((= *panel-num* 1)(more-1))
  192.     ((= *panel-num* 2)(more-2))
  193.     ((= *panel-num* 3)(more-3))
  194.     ((= *panel-num* 4)(more-4))
  195.     ((= *panel-num* 5)(more-5))
  196.     ((main))
  197.   )
  198.   (princ)
  199. )

  200. ;;==========================================
  201. ;;5.3 多层面板
  202. ;;(WYB-panel titl msg lst switch bwidth flag)
  203. ;;titl:   标题
  204. ;;msg:    帮助提示
  205. ;;buttons:  按钮列表(命令前加"~",按钮变灰|名称后面加"(&字母)",设置面板按钮的快捷键)
  206. ;;switch:   下按钮(str,"快捷键 命令名"),nil取消
  207. ;;Bwidth:   按钮的宽度,nil为自动调整
  208. ;;flag:    nil 先行后列|T 先列后行
  209. ;;==========================================
  210. ;;v1.0 by llsheng-73 edata
  211. ;;v1.1 by lostbalance 20141203
  212. ;;==========================================
  213. (defun WYB-panel ( titl msg buttons switch Bwidth flag
  214.           / strsplist makedcl dclfile lst-s lst-t cmdlst
  215.             dcl-str Bwidth-str cmd-n dcl act act-lst i ctl cmd
  216.           )
  217.   (defun strsplist (str / i)
  218.     (if (setq i (vl-string-search " " str))
  219.       (list (substr str 1 i) (vl-string-trim " " (substr str (+ 2 i))))
  220.     )
  221.   )
  222.   (defun makedcl (lst / fileid dclhandle)
  223.     (setq dclfile (vl-filename-mktemp nil nil ".dcl")
  224.       fileid  (open dclfile "w")
  225.     )
  226.     (cond
  227.       ((= (type lst) 'str) (write-line lst fileid))
  228.       ((= (type lst) 'list) (foreach n lst (write-line n fileid)))
  229.     )
  230.     (close fileid)
  231.     (setq dclhandle (load_dialog dclfile))
  232.   )
  233.   (if Bwidth (setq Bwidth-str (strcat "fixed_width = true; width = " (rtos Bwidth) "; "))(setq Bwidth-str ""))
  234.   (if flag
  235.     (setq
  236.       lst-s "\n:column{ label = ""
  237.       lst-t "\n:row{ children_alignment = top; children_fixed_height = true; label = ""
  238.     )
  239.     (setq
  240.       lst-s "\n:row{ children_alignment = top; children_fixed_height = true; label = ""
  241.       lst-t "\n:column{label = ""
  242.     )
  243.   )
  244.   (setq
  245.     cmdlst '("esc")
  246.     dcl-str (strcat (vl-string-translate "$~" "ab" (vl-filename-base (vl-filename-mktemp)))
  247.           ":dialog{label="" titl "";"
  248.         )
  249.   )
  250.   (foreach xxx buttons
  251.     (if (listp xxx);列集合
  252.       (progn
  253.         (setq dcl-str (strcat dcl-str "\nspacer_1;" lst-s "";"))
  254.         (foreach xx xxx
  255.           (if (listp xx);命令列
  256.             (progn
  257.               (setq dcl-str (strcat dcl-str lst-t (car xx) "";"))
  258.               (foreach x (last xx)
  259.                 (setq
  260.                   cmd-n (strsplist x)
  261.                   dcl-str (if cmd-n
  262.                         (strcat dcl-str "\n:button{ " Bwidth-str
  263.                           "key ="" (car cmd-n) ""; label="" (last cmd-n) ""; "
  264.                           (if (= (substr (car cmd-n) 1 1) "~") "is_enabled = false; " "")
  265.                           "}"
  266.                         )
  267.                         (strcat dcl-str "\nspacer_0;")
  268.                       )
  269.                   cmdlst (if (/= (car cmd-n) nil) (cons (car cmd-n) cmdlst) cmdlst)
  270.                 )
  271.               )
  272.               (setq dcl-str (strcat dcl-str "}"))
  273.             )
  274.             (setq dcl-str (strcat dcl-str "\nspacer_0;"))
  275.           )
  276.         )
  277.         (setq dcl-str (strcat dcl-str "}"))
  278.       )
  279.     )
  280.   )
  281.   (setq cmdlst (cdr (reverse cmdlst))
  282.     dcl-str (strcat dcl-str "\nspacer_1;\n:row{ alignment = centered; fixed_width = true; \nspacer_0;")
  283.   )
  284.   (if (and switch (setq cmd-n (strsplist switch)))
  285.     (setq
  286.       dcl-str (strcat dcl-str
  287.           "\n:button{ fixed_width = true; width = 4; key = "" (car cmd-n) ""; label = "" (last cmd-n) "";}")
  288.       cmdlst (if (/= (car cmd-n) nil) (cons (car cmd-n) cmdlst) cmdlst)
  289.     )
  290.   )
  291.   (if msg
  292.     (setq dcl-str (strcat dcl-str "\n:button{ fixed_width = true; width = 4; key = "help"; label = " 帮助 ";}"))
  293.   )
  294.   (setq
  295.     dcl-str (strcat dcl-str
  296.         "\n:button{ fixed_width = true; width = 4; key="cancel"; label=" 关闭 "; is_cancel = true;is_default = true;}}}")
  297.     dcl (makedcl dcl-str)
  298.     act-lst '()
  299.     i 1
  300.   )
  301.   (foreach key cmdlst
  302.     (setq act (strcat "(action_tile "" key """(done_dialog " (itoa i) ")")")
  303.       act-lst (cons act act-lst)
  304.       i (1+ i)
  305.     )
  306.   )
  307.   (new_dialog (substr dcl-str 1 8) dcl)  
  308.   (action_tile "cancel" "(done_dialog 0)")
  309.   (if msg (action_tile "help" "(alert msg)"))
  310.   (eval (read (strcat "(progn" (apply 'strcat act-lst) ")")))
  311.   (setq ctl (start_dialog))
  312.   (unload_dialog dcl)
  313.   (vl-file-delete dclfile)
  314.   (if (/= ctl 0)
  315.     (progn
  316.       (setq cmd (nth (- ctl 1) cmdlst))
  317.       ;;检查命令是否~开头,有就去掉,如果运行中没有更改该命令button的enable值,这句可以不要
  318.       (if (= (substr cmd 1 1) "~") (setq cmd (substr cmd 2 (1- (strlen cmd)))))
  319.       (cond ;新的命令判断方式,代码更短
  320.         ((boundp (read (strcat "c:" cmd)))(princ "\n")(eval (read (strcat "(c:" cmd ")"))))
  321.         ((boundp (read cmd))(princ "\n")(eval (read (strcat "(" cmd ")"))))
  322.         (t (princ "\n")(vl-cmdf cmd))
  323.       )
  324.     )
  325.   )
  326. )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-12-17 13:47 | 显示全部楼层
字体改别的颜色用opendcl~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 08:52 , Processed in 0.266090 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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