明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3197|回复: 10

自定义面板求助

[复制链接]
发表于 2012-8-6 20:27 | 显示全部楼层 |阅读模式
(defun c:xxx ()
  (mai_make_panel
    (list
      (list "梁"
            (list "画    梁" "circle") ;(list  按钮标签  运行的命令)
            (list "单线变梁" "mini_line_to_beam")
            (list "筏板梁倒角" "mini_foundation_beam")
            (list "修补梁柱" "mini_fix_beam")
            (list "修补双线" "mini_fix_dline")
            (list "框选修补线" "mini_fix_line")
      ) ;_ 结束list
      (list "柱"
            (list " + 型柱" "mini_c_column")
            (list " L 型柱" "mini_l_column")
            (list " T 型柱" "mini_t_column")
            (list " ○ 型柱" "mini_O_column")
            (list " □ 型柱" "mini_r_column")
            (list "轴线布柱" "mini_axis_column")
            (list "填 充 柱" "mini_fill_column")
            (list "墙体填充" "mini_fill_wall")
            (list "转PKPM GS柱" "mini_pline_to_beam")
            (list "多线变柱" "mini_pline_to_column")
      ) ;_ 结束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_pannel.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=\"迷你自定义面板\";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)
              )
       )
   )
)
以前有人发过这段代码。但没有详细说明怎么用。请问如果要加载lsp fas arx等文件应该修改那里?怎么改?希望高手们帮忙解惑。

 楼主| 发表于 2012-8-7 08:46 | 显示全部楼层
没人顶吗?先顶一个,等楼下解决
发表于 2012-9-10 23:16 | 显示全部楼层
ap加载lsp fas arx。
(list "画    梁" "circle") ;(list  按钮标签  运行的命令)
画    梁改成画圆。呵呵
发表于 2022-2-7 19:19 | 显示全部楼层
(list "你的插件名称" "插件命令") ;(list  按钮标签  运行的命令)
发表于 2022-2-12 08:24 | 显示全部楼层
qazxswk 发表于 2022-2-7 19:19
(list "你的插件名称" "插件命令") ;(list  按钮标签  运行的命令)

插件命令我的怎么不行
发表于 2022-2-12 12:00 | 显示全部楼层
世井 发表于 2022-2-12 08:24
插件命令我的怎么不行

你要把你的插件跟这个面板文件同时加载。
发表于 2022-2-12 12:09 | 显示全部楼层
qazxswk 发表于 2022-2-12 12:00
你要把你的插件跟这个面板文件同时加载。

(defun c:TT ()
  (mai_make_panel
    (list
      (list "一"
            (list "111" "TTT") ;(list  按钮标签  运行的命令)
            (list "" "")
            (list "" "")
            (list "" "")
            (list "" "")
            (list "" "")
      ) ;_ 结束list
      (list "二"
            (list "" "")
            (list "" "")
            (list "" "")
            (list "" "")
            (list "" "")
            (list "" "")
            (list "" "")
            (list "" "")
            (list "" "")
            (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_pannel.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=\"迷你自定义面板\";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)
              )       )   ));;;;;


(defun c:ttt (/ p1 )  (setq P1 (getpoint "\n请指定点写入:"))  (command "._text" P1 "6" "0")  (princ)  )
已经加载了还是不行
发表于 2022-2-12 12:52 | 显示全部楼层
(list "111" "TTT") ;(list  按钮标签  运行的命令)
大写TTT换成小写试试
发表于 2022-2-12 13:53 | 显示全部楼层
qazxswk 发表于 2022-2-12 12:52
(list "111" "TTT") ;(list  按钮标签  运行的命令)
大写TTT换成小写试试

大小写都试过了不行
发表于 2022-2-12 14:23 | 显示全部楼层
世井 发表于 2022-2-12 13:53
大小写都试过了不行

我试了一下你前面发的源代码,在浩辰CAD2022上是可以运行的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 23:44 , Processed in 0.232095 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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