QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2642|回复: 1
收起左侧

cad vba二次开发创建菜单问题求助

[复制链接]
发表于 2011-5-29 12:11:34 | 显示全部楼层 |阅读模式 来自: 中国河北保定

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
Sub AddASubMenu()* h5 x3 a; y) B  U5 @
'获得当前的菜单组
  y+ A  W0 U2 {+ g% ~* s9 IDim currMenuGroup As AcadMenuGroup0 O  s/ H% _( F  N* K$ ^* x

( [# y7 u# ^; ySet currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)

. Q' L& j/ Q5 Z$ g9 a9 U, U; h. G0 p, w0 `2 t) J
创建新菜单
  a: a( J4 P  k0 N- y
# T; V/ c5 b2 e" E: y, a4 X
Dim newMenu As AcadPopupMenu
& V+ P2 D1 @- f0 C# G

: X; b8 [2 L/ v1 `Set newMenu = currMenuGroup.Menus.Add("MyMen" & Chr(Asc("&")) & "u")
+ |' u8 O2 R- x8 ?. g# k- v/ n4 ]9 _

( q7 \: `- h! r, g$ l8 a'
添加菜单项

& l, v1 {6 L2 f" V6 W% F5 x' BDim macro As String# r" D' p  Z% s9 R1 D* R
. Y1 [: {& p" I3 i
macro = Chr(vbKeyEscape) + Chr(vbKeyEscape)
9 T( [8 X6 S" g'
相当于按下两次Esc

6 z# h# l1 J5 ^+ d% \7 Y# y" ?9 Y# h2 @' F

$ U( e* @9 k# k" G'draw(
含有子菜单)
9 U3 O+ }0 P5 T; W( v8 n1 s' S

5 M, `* t7 I; S. R/ cDim menuItemDraw As AcadPopupMenu
7 @5 @% p$ z; L% K) |

4 h1 `" e6 d5 {Set menuItemDraw = newMenu.AddSubMenu(newMenu.Count + 1, Chr(Asc("&")) & _"Draw")
' @& w% U) J. f* `% L# e
' f, \5 Q& B) X3 F9 W# q; h
'
子菜单项目:line

, D2 _0 k% f! {/ `2 }! ~+ z) x* V" @$ f- ?
Dim subMenuItemLine As AcadPopupMenuItem

9 {$ }: w3 E. n
) v5 I& f7 D! |; H& b6 R7 b; U; A$ k'Set subMenuItemLine = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, _Chr(Asc("&")) & "Line", macro & "_line ")

7 |  C4 N5 W# v) N; O' _
8 Z5 g3 H. A- M- i' v5 f'
子菜单项目:Ellipse
4 J6 \( o) L# Z/ N

2 z% i- C; v$ K+ yDim subMenuItemEllipse As AcadPopupMenuItem
8 @- B9 a! Z0 s
6 G9 y& }1 D% p# h. t" a
'Set.subMenuItemEllipse.=menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Ellipse", macro & "_ellipse ")

- g1 V" W  p4 R# p2 v) F! C! \
+ P3 T9 V  V/ y- c7 A" [& K7 I2 \+ D'
子菜单项目:arc
9 d3 }1 `; W' f5 M. c& R9 z( X4 l
# z1 x% q/ D5 q
Dim subMenuItemArc As AcadPopupMenuItem

# W: o# ]- P) W0 a; y
# C0 G8 N0 m# T7 u'Set subMenuItemArc = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Arc", macro & "_arc ")
7 Y" V( M+ ?) k

3 T! ?3 N( B2 }& s'
子菜单项目:circle
6 j7 `2 L8 R% @) V4 O' t$ ?% Y! G

( a) U' t0 f3 dDim subMenuItemCircle As AcadPopupMenuItem
9 g' q. M# @& l

& m, m. ^9 n6 Q. f'Set subMenuItemCircle = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Circle", macro & "_circle ")

! D& V/ q# j7 b7 q( H: e( j
  ]' u! s. M: y  D. r'
子菜单项目:SPline

3 D5 Y$ r" P& W, J/ z
4 [4 ]0 Z: p/ O8 @' y" bDim subMenuItemSPline As AcadPopupMenuItem
3 ]9 w5 _, V2 c" `3 H1 w3 ^
: W  b1 t$ B+ x
'Set subMenuItemSPline = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "SPline", macro & "_spline ")

2 R4 m- h+ [7 Q6 `
1 x( u# _1 v/ m( i! r* T+ u'
子菜单项目:Point

! L0 p; u7 @! h6 P6 H( G/ }3 ~9 x$ o8 y" H
Dim subMenuItemPoint As AcadPopupMenuItem
- Q9 ~- T2 X% w9 b, c+ a. L
  V6 Y5 o2 h1 R3 D
'Set subMenuItemPoint = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Point", macro & "_point ")

1 R# S; p% ^6 k2 o" C  r; Q9 }) X: t  }
1 T. J7 c# X+ s$ ?& S
'
在菜单栏上显示菜单
1 d6 B  v9 J) h% x
0 t0 c; A/ N7 x7 r
newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
& q! a* s  n( G! z& ]
End Sub
4 q0 I& D, f9 {9 Q' a  |
& E  v/ x. k. Y3 @* S. e3 o
( _" O, J2 Q9 g/ U/ y( ~. W: q; E , g) d+ ?' H2 q! W8 ?! o5 j
这个程序哪有错的?
发表于 2012-2-14 16:59:29 | 显示全部楼层 来自: 中国贵州贵阳
我也想问,在cad中做个小插件,想从菜单里面把它打开怎么办~~
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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