明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1918|回复: 5

迈总面板问题(求帮修改)

[复制链接]
发表于 2022-7-18 00:16:31 | 显示全部楼层 |阅读模式
2明经币
原帖地址:

简单的自定面板函数 - AutoLISP/Visual LISP 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)

启动面板 点击使用一个命令后,点击空格启动的是面板,请问能否修改成 空格重复上次的命令不启动面板。
请大神帮忙修改一下 谢谢!

  • (defun c:Da ()
  •   (mai_make_panel
  •     (list
  •       (list "测试"
  •         (list "测试A1" "DaMo_GD_ZNSX")
  •         (list "测试A2" "DaMo_GD_PMFH")
  •         (list "测试A3" "DaMo_GD_JYST")
  •       )
  •       (list ""
  •         (list "测试B1" "DaMo_GD_DTBL")
  •         (list "测试B2" "DaMo_GD_ZHDQ")
  •         (list "测试B3" "DaMo_GD_DQXZ")
  •       )
  •       (list ""
  •         (list "测试C1" "DaMo_GD_GYZJ")
  •         (list "测试C2" "DaMo_GD_DXFX")
  •         (list "测试C3" "DaMo_GD_PLDQ")
  •       )
  •     )
  •   )
  •   (princ)
  • )
  • (defun mai_make_panel (menulist / m n nn nnn menuname val_lst tt order_lst)
  •   (defun add_dclrow (dstr) (if dstr (setq val_lst (cons dstr val_lst))    )  )
  •   (add_dclrow "curbutton : button{width=10;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))
  •     n    0
  •     m    0
  •   )
  •   (foreach nn menulist
  •     (add_dclrow (strcat " : boxed_column{label=\"" (car nn) "\";vertical_margin=none; horizontal_margin=none;")    )
  •     (foreach nnn (cdr nn)
  •       (setq n  (1+ n)
  •         tt (car nnn)
  •         tt (if tt
  •              tt
  •              ""
  •            )
  •       )
  •       (add_dclrow (strcat " : curbutton{key=\"but" (vl-princ-to-string n) "\";label=\"" tt "\";}"))  )
  •     (repeat (- len (length nn))
  •       (setq m (1+ m))
  •       (add_dclrow (strcat " : curbutton{key=\"butno" (vl-princ-to-string m) "\";}")) )
  •     (add_dclrow "}")
  •   )
  •   (add_dclrow "}:button{label=\"退出\";key=\"cancel\";is_cancel=true;width=20;height=2.5;fixed_width=true;alignment=centered;}}"  )
  •   (setq menuname (vl-filename-mktemp "temp_pannel.dcl"))
  •   (setq nn (open menuname "w"))
  •   (foreach n (reverse val_lst) (write-line n nn))
  •   (close nn)
  •   (setq nnn (load_dialog menuname))
  •   (vl-file-delete menuname)
  •   (if (not (new_dialog "curpanel" nnn))
  •     (exit)
  •   )
  •   (setq n 0)
  •   (repeat m (mode_tile (strcat "butno" (vl-princ-to-string m)) 1) (setq m (1- m)))
  •   (foreach nn menulist
  •     (foreach nnn (cdr nn)
  •       (setq n  (1+ n)
  •         tt (car nnn)
  •         tt (if tt
  •              tt
  •              ""
  •            )
  •       )
  •       (if (= tt "")
  •         (mode_tile (strcat "but" (vl-princ-to-string n)) 1)
  •         (action_tile
  •           (strcat "but" (vl-princ-to-string n))
  •           (strcat "(done_dialog " (vl-princ-to-string n) ")")
  •         )
  •       )
  •     )
  •   )
  •   (setq nn (start_dialog))
  •   (unload_dialog nnn)
  •   (if (> nn 0)
  •     (progn (setq tt (cadr (nth (1- nn) order_lst)))
  •       (if (= (eval (read (strcat "(type c:" tt ")"))) 'SUBR)
  •         (progn (princ "\n")
  •           (eval (read (strcat "(c:" tt ")")))
  •         )
  •         (progn
  •           (princ "\n")
  •           (vla-SendCommand (vla-get-ActiveDocument(vlax-get-acad-object)) (strcat tt "\n"))
  •         )
  •       )
  •     )
  •   )
  • )
  • (princ)

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2022-7-22 08:02:06 | 显示全部楼层
记得论坛有人求救过,是定义一个按键重复上一次命令。自己搜下
  •        (progn (setq tt (cadr (nth (1- nn) order_lst)))
  •               (eval(read (strcat "(defun c:q()(Vlax-Invoke-Method (Vlax-Get (Vlax-Get-Acad-Object)
  • 'ActiveDocument) 'SendCommand (strcat \"" tt "\" \" \"))(princ)))")));自定义q为重复上次命令         
  •               (vla-SendCommand (vla-get-ActiveDocument(vlax-get-acad-object)) (strcat tt "\n"))
  •        )

回复

使用道具 举报

 楼主| 发表于 2022-7-22 09:42:42 | 显示全部楼层
liunian0524 发表于 2022-7-22 08:02
记得论坛有人求救过,是定义一个按键重复上一次命令。自己搜下
  •        (progn (setq tt (cadr (nth ( ...

  • 谢谢你的回复!!!
    回复

    使用道具 举报

    发表于 2024-7-16 21:37:09 | 显示全部楼层
    谢谢分享,.
    回复

    使用道具 举报

    发表于 2024-7-18 10:53:36 | 显示全部楼层
    我从论坛里下载迈总面板就是已改好的。 空格直接重复上次命令
    回复

    使用道具 举报

    发表于 2025-5-7 10:10:22 | 显示全部楼层
    本帖最后由 KO你 于 2025-5-7 10:13 编辑


    (defun c:Da ()
    (mai_make_panel
    (list
    (list "测试"
    (list "测试A1" "DaMo_GD_ZNSX")
    (list "测试A2" "DaMo_GD_PMFH")
    (list "测试A3" "DaMo_GD_JYST"))
    (list ""
    (list "测试B1" "DaMo_GD_DTBL")
    (list "测试B2" "DaMo_GD_ZHDQ")
    (list "测试B3" "DaMo_GD_DQXZ"))
    (list ""
    (list "测试C1" "DaMo_GD_GYZJ")
    (list "测试C2" "DaMo_GD_DXFX")
    (list "测试C3" "DaMo_GD_PLDQ"))))
    (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 (= 0 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 (= 10 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")
    (eval(read (strcat "(defun c:qqq()(Vlax-Invoke-Method (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'SendCommand (strcat \"" tt "\" \" \"))))")))
             (Vlax-Invoke-Method (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'SendCommand (strcat tt " "))
                ;(Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell" ) 'Sendkeys (strcat tt "{Enter}"))     
          )
       )
    )
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-5-22 15:53 , Processed in 0.308116 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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