找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 256|回复: 0

使用VLISP动态向AutoCAD菜单条中夹塞菜单条目

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-2-17 20:35:51 | 显示全部楼层 |阅读模式
使用VLISP动态向AutoCAD菜单条中夹塞菜单条目

  1. [font=courier new]
  2. ;; 删除菜单
  3. (defun C:RemoveBplotMenu (/ MenuBar n i MenuItem Menu tag)
  4.   (setq MenuBar (vla-get-menubar (vlax-get-acad-object)))
  5.   ;; 找菜单“文件(&F)” "&File" tag: ID采用MnFile
  6.   (setq n (vla-get-count MenuBar))
  7.   (setq i (1- n))
  8.   (while (and (>= i 0)                  ; 没有超过上限
  9.               (/= "ID采用MnFile" (vla-get-tagstring (setq menuitem (vla-item MenuBar i)))) ; 找到"文件"菜单条
  10.          )
  11.     (setq i (1- i))
  12.   )
  13.   (if (< i 0)
  14.     (setq i 0)
  15.   )                                     ; 如果没有文件菜单, 取第一条菜单
  16.   (setq menu (vla-item MenuBar i))
  17.   ;;遍历文件菜单 删除原来的批量打印条目
  18.   (setq n (vla-get-count menu))
  19.   (setq i (1- n))
  20.   (while (> i 0)
  21.     (setq menuitem (vla-item menu i))
  22.     (setq tag (vla-get-tagstring menuitem))
  23.     (if (member tag '("ID采用mnuBatchPlot" "ID采用mnuBatchPlot2" "ID采用mnuBatchPlotPopup"))
  24.       (vla-delete menuitem)
  25.     )
  26.     (setq i (1- i))
  27.   )
  28.   (princ)
  29. )
  30. ;; 添加菜单
  31. (defun C:AddBplotMenu (/ MenuBar menu menuitem bplotPopupMenu bplotmenuitem cap tag tmp i n)
  32.   (C:RemoveBplotMenu)
  33.   (setq MenuBar (vla-get-menubar (vlax-get-acad-object)))
  34.   ;; 找到菜单“文件(&F)” "&File" tag: ID采用MnFile
  35.   (setq n (vla-get-count MenuBar))
  36.   (setq i (1- n))
  37.   (while (and (>= i 0)                  ; 没有超过上限
  38.               (/= "ID采用MnFile" (vla-get-tagstring (setq menuitem (vla-item MenuBar i)))) ; 找到"文件"菜单条
  39.          )
  40.     (setq i (1- i))
  41.   )
  42.   (if (< i 0)                           ; 如果没有文件菜单, 取第一条菜单
  43.     (setq i 0)
  44.   )
  45.   (setq menu (vla-item MenuBar i))
  46.   ;; 找到打印菜单项, 设置当前插入位置
  47.   (setq i 0)
  48.   (setq n (vla-get-count menu))
  49.   (while (and (< i n)                   ; 没有超过上限
  50.               (/= "ID采用Print" (vla-get-tagstring (setq menuitem (vla-item menu i)))) ; 找到"打印"菜单条
  51.          )
  52.     (setq i (1+ i))
  53.   )
  54.   (if (= i n)                           ; 如果没有找到"打印"菜单条, 插在倒数第二条.
  55.     (setq i (- n 2))
  56.   )
  57.   ;; 在当前插入位置的下面一条添加批量打印条目
  58.   (setq bplotmenuitem
  59.          (vla-addmenuitem
  60.            menu
  61.            (setq i (1+ i))
  62.            "批量打印(&B)..."
  63.            "\003\003采用BatchPlot "
  64.          )
  65.   )
  66.   (vla-put-label bplotmenuitem "(if,
  67. (eq,$(getvar,blockeditor),1),~)批量打印(&B)...")
  68.   (vla-put-tagstring bplotmenuitem "ID采用mnuBatchPlot")
  69.   (vla-put-helpstring bplotmenuitem "批量打印、批量生成布局、批量分图实用工具程序")
  70.   ;; 再在下面创建下级批量打印实用工具子菜单
  71.   (setq bplotPopupMenu (vla-addsubmenu menu (1+ i) "批量打印实用工具(&L)"))
  72.                                         ; (vla-put-tagstring bplotPopupMenu "ID采用mnuBatchPlotPopup") ;不知道为什么不行.
  73.   ;; 下面这段代码设置批量打印实用工具子菜单的Tag
  74.   (setq n (vla-get-count menu))
  75.   (setq i (1- n))
  76.   (while (> i 0)
  77.     (setq menuitem (vla-item menu i))
  78.     (setq cap (vla-get-caption menuitem))
  79.     (if (= "批量打印实用工具(&L)" cap)
  80.       (vla-put-tagstring menuitem "ID采用mnuBatchPlotPopup")
  81.     )
  82.     (setq i (1- i))
  83.   )
  84.   (setq i 0)
  85.   ;; 下面是子菜单条目
  86.   (setq tmp
  87.          (vla-addmenuitem
  88.            bplotPopupMenu
  89.            (setq i (1+ i))
  90.            "批量打印(&C)..."
  91.            "\003\003采用bp采用doPlot "
  92.          )
  93.   )
  94.   (vla-put-label tmp "(if,
  95. (eq,$(getvar,blockeditor),1),~)批量打印(&C)...")
  96.   (vla-put-helpstring tmp "批量打印图纸,直接发送到物理打印机或虚拟打印机")
  97.   (setq tmp
  98.          (vla-addmenuitem
  99.            bplotPopupMenu
  100.            (setq i (1+ i))
  101.            "批量生成布局(&L)..."
  102.            "\003\003采用bp采用doLayout "
  103.          )
  104.   )
  105.   (vla-put-label tmp "(if,
  106. (eq,$(getvar,blockeditor),1),~)批量生成布局(&L)...")
  107.   (vla-put-helpstring tmp "批量按当前的打印设置生成布局,每个图框一个布局")
  108.   (setq tmp
  109.          (vla-addmenuitem
  110.            bplotPopupMenu
  111.            (setq i (1+ i))
  112.            "批量生成PLT文件(&P)..."
  113.            "\003\003采用bp采用doPlotFile "
  114.          )
  115.   )
  116.   (vla-put-label tmp "(if,
  117. (eq,$(getvar,blockeditor),1),~)批量生成PLT文件(&P)...")
  118.   (vla-put-helpstring tmp "批量生成PLT打印文件供机房绘图仪服务器统一打印")
  119.   (setq tmp
  120.          (vla-addmenuitem
  121.            bplotPopupMenu
  122.            (setq i (1+ i))
  123.            "批量切分图纸(&W)..."
  124.            "\003\003采用bp采用doWblock "
  125.          )
  126.   )
  127.   (vla-put-label tmp "(if,
  128. (eq,$(getvar,blockeditor),1),~)批量切分图纸(&W)...")
  129.   (vla-put-helpstring tmp "自动根据图框切分图纸,每个图框一个DWG文件,供归档用")
  130.   (setq tmp
  131.          (vla-addmenuitem
  132.            bplotPopupMenu
  133.            (setq i (1+ i))
  134.            "打印现有布局(&A)..."
  135.            "\003\003采用bp采用doPlotLayout "
  136.          )
  137.   )
  138.   (vla-put-label tmp "(if,
  139. (eq,$(getvar,blockeditor),1),~)打印现有布局(&A)...")
  140.   (vla-put-helpstring tmp "按现有的布局显示顺序批量打印现有的布局空间")
  141.   (vla-AddSeparator
  142.     bplotPopupMenu
  143.     (setq i (1+ i))
  144.   )
  145.   (setq tmp (vla-addmenuitem
  146.               bplotPopupMenu
  147.               (setq i (1+ i))
  148.               "清除批量打印数据(&D)"
  149.               "\003\003采用DeleteBPlotData "
  150.             )
  151.   )
  152.   (vla-AddSeparator
  153.     bplotPopupMenu
  154.     (setq i (1+ i))
  155.   )
  156.   (vla-addmenuitem
  157.     bplotPopupMenu
  158.     (setq i (1+ i))
  159.     "捐助作者支持开发(&D)"
  160.     "\003\003采用Browser (findfile "donate.htm") "
  161.   )
  162.   (vla-addmenuitem
  163.     bplotPopupMenu
  164.     (setq i (1+ i))
  165.     "访问软件主页(&M)"
  166.     "\003\003采用Browser [url]http://fresco.yo2.cn/archives/92111[/url] "
  167.   )
  168.   (vla-addmenuitem
  169.     bplotPopupMenu
  170.     (setq i (1+ i))
  171.     "批量打印帮助(&H)"
  172.     "\003\003采用Browser (findfile "bp采用help.htm") "
  173.   )
  174.   (princ)
  175. )
  176. ;; 加载批量打印菜单
  177. (C:AddBplotMenu)
  178. (princ)[/font]
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 17:42 , Processed in 0.118550 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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