QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
Sub AddASubMenu()5 ~0 G: ~& }4 f( b
'获得当前的菜单组
8 J8 I+ G6 ~5 {; v- iDim currMenuGroup As AcadMenuGroup) E) R1 c& m* K3 I& P# j' d7 e- C
; T7 F0 h" p5 \# U) W2 Y
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
! B3 |  Y  C$ [4 ~, j

/ r6 r' {( M; E4 |9 S
创建新菜单
8 m0 `& Z2 @7 h  y. J, c$ ?& G

1 Z2 m, d+ E7 y( @" C, @. zDim newMenu As AcadPopupMenu
5 t! f( x; \  f7 U0 h5 w

0 \: {+ f" y; U4 i$ {' vSet newMenu = currMenuGroup.Menus.Add("MyMen" & Chr(Asc("&")) & "u")

' F. ]* Q2 N- z2 \. t; M6 _
& \- \% D9 \% H; Q' b'
添加菜单项
" P0 R4 K. M& C
Dim macro As String* p9 ^! A& d6 s* r2 |6 o( @

6 f  P6 k3 s* v9 {; hmacro = Chr(vbKeyEscape) + Chr(vbKeyEscape)
2 a0 T1 e8 g4 p8 n" T6 P: q'
相当于按下两次Esc
1 |1 L+ }3 f# h: a9 l

' ^) e$ k; ~( y+ F% e( d9 U: z1 e0 D! b, c# q( v$ ^( P
'draw(
含有子菜单)

' s2 n! O7 ]+ e9 b
' v" {/ {9 O: VDim menuItemDraw As AcadPopupMenu

; h7 U" [# P! Z& b4 m
: g% y! ?9 M% M7 G! TSet menuItemDraw = newMenu.AddSubMenu(newMenu.Count + 1, Chr(Asc("&")) & _"Draw")

7 D! H. d3 _9 t7 u+ i1 X
' S, n: c) s  I0 M" Z'
子菜单项目:line
! V, {" C  u  c0 k9 R. w2 ]; [

1 C6 \9 x1 J0 J" Z* S  Z  J& U+ iDim subMenuItemLine As AcadPopupMenuItem
/ H: _+ C* \9 X4 J  H4 M, i

8 B/ Z# J3 b& \) c! O'Set subMenuItemLine = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, _Chr(Asc("&")) & "Line", macro & "_line ")

& v3 m' `1 h& @: \; n: G+ [( y7 Q8 o$ G4 I/ L. U1 l" r: q6 }6 R
'
子菜单项目:Ellipse

% z; T; a" h1 u3 W+ }( e+ X8 u4 s# Q! r; ~
Dim subMenuItemEllipse As AcadPopupMenuItem
, ]% S4 l) u5 B% i+ o/ ?$ L
7 U! u1 `' y( F/ U' f8 q
'Set.subMenuItemEllipse.=menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Ellipse", macro & "_ellipse ")
8 ?* T2 K( j1 w

8 k+ f' r1 y9 A9 I& J'
子菜单项目:arc
; R* K0 d3 i& {# R' N9 G% Z" S

8 p* M  u0 k% D' ?; \9 L  I" q. cDim subMenuItemArc As AcadPopupMenuItem
( s6 w  T: ^' C1 D5 V

. e6 l1 Y% r" r( k'Set subMenuItemArc = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Arc", macro & "_arc ")

2 D/ `: W/ m* k2 `. R2 |& p' y: t' n- b$ ?1 A+ v9 g
'
子菜单项目:circle
5 a+ x& K) e0 G" y) r) T

7 w2 B3 Q; R) u( w+ j" c0 tDim subMenuItemCircle As AcadPopupMenuItem
9 g1 ?1 Q# [! \) d9 {2 _
3 X0 \/ M; M, S) g% N" X! B" \
'Set subMenuItemCircle = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Circle", macro & "_circle ")

9 t' U6 C! f! z; R( F) k( P. r0 ?5 t1 L# B8 j
'
子菜单项目:SPline
, d' P2 e. D3 \! }

! [* c8 C' K& w9 P6 ?Dim subMenuItemSPline As AcadPopupMenuItem
# \3 [1 B9 |+ H3 J

$ j/ I- r1 F/ R1 I5 N'Set subMenuItemSPline = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "SPline", macro & "_spline ")

  Y% S! }, m$ @0 P* r) g4 x3 ^- v# Q2 O; ?& J/ C  E9 P
'
子菜单项目:Point

: p4 |& m) S2 E+ y2 K. z. _8 Q9 v) X8 n
" N# z0 y8 z2 o+ k7 N( MDim subMenuItemPoint As AcadPopupMenuItem
% z- y5 ?! z1 n) r9 Z: Q$ W
% S9 a/ u; g, l) e# l) ?) F
'Set subMenuItemPoint = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Point", macro & "_point ")

$ r- X! l- J( h# n5 x( r$ _$ L* w  `. F# c0 q" w1 s: G- s6 E2 _
. ~$ k7 o1 X- h7 n
'
在菜单栏上显示菜单

2 w& q+ m: j; L. n, W
$ a7 m" C% i0 d8 e' ]newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
3 S! F" }- E: }( D! Z  I( `2 }
End Sub
1 |$ d( U$ _5 h
1 n. N! [! f* s6 X  H% f
! l$ F; ?( E1 B( [3 Q0 k5 T   j( n' ?$ z, v$ A2 S
这个程序哪有错的?
发表于 2012-2-14 16:59:29 | 显示全部楼层 来自: 中国贵州贵阳
我也想问,在cad中做个小插件,想从菜单里面把它打开怎么办~~
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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