明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3772|回复: 11

[讨论] 【咨询】自定面板始终显示在最前方

[复制链接]
发表于 2013-5-10 23:35:30 | 显示全部楼层 |阅读模式
本帖最后由 yaokui25 于 2013-5-10 23:46 编辑

比如  由szmaicy 楼主提供的源码  【[资源] 简单的自定面板函数
地址:http://bbs.mjtd.com/thread-84942-1-1.html
如何能让命令条始终显示在最前方,而且不耽误作业
不用的时候点击一下取消就关闭呢
这样的话,可以集成一些常用的命令。不用做图标了(而且能显示在最前方)

借花献佛
源码如下: 比如修改哪些地方能实现,还请老大们出手
如果说下面的代码无法实现,那位好心人能否给个类似的模板,自己可以添加以下命令进去

;修改版,向飞诗学习
(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 "") tt order_lst
           )
           (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
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-7-28 23:48:08 | 显示全部楼层
面板里字体如何调大?
发表于 2020-7-30 10:09:31 | 显示全部楼层
学习,感谢分享!!
发表于 2013-5-11 07:12:45 来自手机 | 显示全部楼层
新版迷你好像有非模态
 楼主| 发表于 2013-5-11 07:15:14 | 显示全部楼层
仲文玉 发表于 2013-5-11 07:12
新版迷你好像有非模态

谢谢回复,哪里能找到呢?
发表于 2013-5-11 07:20:05 来自手机 | 显示全部楼层
opendcl也可以达到你的要求,论坛g版有个例子,自己找下,我手机上论坛不方便
 楼主| 发表于 2013-5-12 10:56:05 | 显示全部楼层
这个没人关注?顶起来
发表于 2013-5-13 10:55:54 | 显示全部楼层
lisp就别想了
 楼主| 发表于 2013-5-13 11:05:47 | 显示全部楼层
hao3ren 发表于 2013-5-13 10:55
lisp就别想了

谢谢您的回复,知道了
不想了
发表于 2014-2-19 21:14:50 | 显示全部楼层
我也在纠结此问题
发表于 2014-2-20 09:27:14 | 显示全部楼层
怎么可能,dcl永远没有非模态,最多就是执行命令再打开窗口
发表于 2014-2-20 10:37:57 | 显示全部楼层
无需编程,用CAD本身自定义一个工具栏即可,请参阅CAD帮助文件中自定义工具栏的说明!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-6 07:25 , Processed in 0.198921 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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