QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
Sub AddASubMenu()1 M: _0 p8 Z2 l9 C
'获得当前的菜单组
; W+ m' B% w( o4 \. tDim currMenuGroup As AcadMenuGroup: G$ f# d$ V  o6 z$ L' b
& b6 {* t' G" d; x: S4 g
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
; F3 U6 W. R' I5 _) n
# N% o( f, }( s) w+ a$ U
创建新菜单

# b5 |% J' }# w/ Q
/ `" c! z( Q+ J- E8 T; \Dim newMenu As AcadPopupMenu

3 W) O) G- a5 q1 T) d
9 \& s7 D* Q+ q, aSet newMenu = currMenuGroup.Menus.Add("MyMen" & Chr(Asc("&")) & "u")
2 C6 D6 U* N) ^9 V  X) `  U

; M3 M& D. M2 K$ g& Q5 I. l" x'
添加菜单项

! I1 r5 w, j' z1 rDim macro As String3 {* b) M( s* E; U  l

2 O' g4 ?  ]! p  G4 Hmacro = Chr(vbKeyEscape) + Chr(vbKeyEscape)
$ F7 E3 }3 E0 |) \+ [/ a6 a+ L'
相当于按下两次Esc
- o9 {) g& {4 `7 u( H9 m/ d

* C- M! i! Q: F. k- O  F' I! a' j3 a0 C0 C
'draw(
含有子菜单)

. j# j9 c& B3 m1 G% B! N  e  w8 ^
Dim menuItemDraw As AcadPopupMenu

8 q  R5 f. ^4 a% J- v1 h" o
9 F, |7 a4 }! \8 x# LSet menuItemDraw = newMenu.AddSubMenu(newMenu.Count + 1, Chr(Asc("&")) & _"Draw")
9 l4 K# y0 ^0 P5 n5 o1 ]- ^+ C
0 c7 p. b  O2 k: h
'
子菜单项目:line
$ d) f$ K( N, x- K3 U, p9 h3 w; |; m3 U
1 q. e9 Y0 f  I+ ?
Dim subMenuItemLine As AcadPopupMenuItem

) m6 B( s" q& V7 _' n6 _6 U
3 F: P# C! T- p* V& E) b'Set subMenuItemLine = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, _Chr(Asc("&")) & "Line", macro & "_line ")
6 v  F% O/ v0 m9 l

+ ~6 D! j) g4 P$ a. g' E0 R'
子菜单项目:Ellipse
' E3 I0 n, @. D
* q+ I, O, c; O( j. U' \
Dim subMenuItemEllipse As AcadPopupMenuItem
% a7 s. w( H; u, f) K" `
# o3 v' ^5 o* ?9 Q% x- J/ p
'Set.subMenuItemEllipse.=menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Ellipse", macro & "_ellipse ")
, H- a4 ?) Q" W& o, y3 C9 w% m3 {5 e

$ Y/ j. I  I) m# Z! Q2 H'
子菜单项目:arc
8 i- w* i* {. Z6 E+ D! ~

2 J$ E" G1 X* n6 d# w, _. vDim subMenuItemArc As AcadPopupMenuItem
% I( k9 N: t7 O( e1 K

4 ^3 R; s6 c+ Y0 d: ]  `'Set subMenuItemArc = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Arc", macro & "_arc ")

7 e& B1 v! y1 v; C* g& }
4 k# c- ?5 g1 k'
子菜单项目:circle
5 _  r& h4 e) p2 b: U
( h1 u: q3 C" }3 S/ A
Dim subMenuItemCircle As AcadPopupMenuItem

$ B( ]: {" Z5 O3 a  v& Q9 n  a: w9 r( @
'Set subMenuItemCircle = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Circle", macro & "_circle ")
+ f" ~% J- u2 T5 `# \6 E- m
  y' t4 [  l7 |* c1 D
'
子菜单项目:SPline
- H+ C: R* v0 b8 T

- c$ ^$ d4 H$ e6 A8 h( rDim subMenuItemSPline As AcadPopupMenuItem
* V+ j( x9 J6 x% t) W* ?

+ A. T' G  S' z2 A# l# h1 ]'Set subMenuItemSPline = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "SPline", macro & "_spline ")
% e+ S! u# ]$ r4 T0 g

& X% y6 h! f) y! N8 g'
子菜单项目:Point

3 q3 u5 Q1 d# ^* x
2 k2 a3 B; P- ]Dim subMenuItemPoint As AcadPopupMenuItem

4 m. M4 Y, M; [0 T2 [  C% X! c6 T) P2 n
'Set subMenuItemPoint = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Point", macro & "_point ")
- u: w7 Y9 z' c

5 t  Y3 r+ H1 l) Y; Y( @& {& M. n/ x5 M
'
在菜单栏上显示菜单

) ?1 O$ m, E, H; b  A+ Q6 f4 T- c, Z9 }& ]! R% ^
newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
: {! ?9 h9 }% z4 H
End Sub
) x- K2 K2 K6 |1 c$ ?$ i& { * @7 r4 c/ H& s  g; J4 x

6 r+ i3 h: _3 C3 k3 ?/ H5 L & @$ y$ A8 N. T9 r
这个程序哪有错的?
发表于 2012-2-14 16:59:29 | 显示全部楼层 来自: 中国贵州贵阳
我也想问,在cad中做个小插件,想从菜单里面把它打开怎么办~~
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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