QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
Sub AddASubMenu()
* [1 \) G4 B  y  G5 A3 v'获得当前的菜单组/ g/ r4 W* S1 r
Dim currMenuGroup As AcadMenuGroup  H4 l0 M& T, V( m7 {. g3 r
3 [/ g: ^0 U* w% `  P
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
8 g8 d7 y! w# m: r4 _
0 S6 a0 G2 T% {& J1 N+ l
创建新菜单

: B5 L1 \9 F6 X. s( s4 K. Q6 a& G0 I, L% h2 g" @
Dim newMenu As AcadPopupMenu
8 |$ b- ]8 o( v# Q3 a

' A& P  X. `( h* c* ySet newMenu = currMenuGroup.Menus.Add("MyMen" & Chr(Asc("&")) & "u")

8 `+ y, f) U( D, S+ L
; u# a  G6 r! g. K( F* n'
添加菜单项

, A" K" v8 F, p' o6 VDim macro As String
# ]* \# O6 b- Y1 [2 l( Z* Q; S& F! p. v
macro = Chr(vbKeyEscape) + Chr(vbKeyEscape)' g; K2 b- x7 h7 k4 V" \( B
'
相当于按下两次Esc

  u3 \1 r3 W9 d. M
/ H3 a, a1 J/ R5 n) h7 }
0 e9 V$ n0 H" P% B3 j+ i'draw(
含有子菜单)

. F2 R! R( F& p# c$ q* f$ o! \, g0 |8 x$ |; h2 P( h: i
Dim menuItemDraw As AcadPopupMenu
, d1 [3 L# k& o% Y; g+ o( L

4 p( ]$ U: ~3 l% @0 DSet menuItemDraw = newMenu.AddSubMenu(newMenu.Count + 1, Chr(Asc("&")) & _"Draw")

  P, P( n4 C2 o7 h$ X! O+ J  Z* U
5 j! T* C3 ~4 z# a3 b'
子菜单项目:line
; \& l( w8 V- @. Z0 G

2 k* W0 S0 h( r3 \+ N* l" t) IDim subMenuItemLine As AcadPopupMenuItem

% w2 t3 G1 T0 R3 O8 [/ g% k1 H# {1 ^8 t$ Y( e* U! n0 `' C
'Set subMenuItemLine = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, _Chr(Asc("&")) & "Line", macro & "_line ")

0 K  s2 A3 y  [5 [5 E
$ L1 B* y4 j% B' p' v'
子菜单项目:Ellipse
' {: d" C$ O# A

" N, Q6 _$ v4 a- x. j" rDim subMenuItemEllipse As AcadPopupMenuItem
% Y1 `+ J+ ~  q0 ?

7 R; Q. x$ U! V+ {2 v0 X'Set.subMenuItemEllipse.=menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Ellipse", macro & "_ellipse ")
1 L- P8 e3 j/ b; G
- E& J0 i, l5 y+ A8 _0 A3 T
'
子菜单项目:arc
; U; D. i. o. y3 U  p2 d- W& U
4 S7 E. `; x& [. {$ M: }) n
Dim subMenuItemArc As AcadPopupMenuItem

5 U( N9 ^5 m' Y. ?0 W/ B; }( w9 y* I- U8 _- U& f# S* b
'Set subMenuItemArc = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Arc", macro & "_arc ")

) c* d. L9 T8 ]# {, v7 T& g9 e& O
, x9 j+ q( E$ ~. j7 L/ l'
子菜单项目:circle

/ T% V7 j0 f3 K8 d. n5 i/ c: H5 @3 p" H
Dim subMenuItemCircle As AcadPopupMenuItem
( i# C; }4 m9 [, P' Q9 w; ~
' x5 S2 h# Z- ?4 Q3 K
'Set subMenuItemCircle = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Circle", macro & "_circle ")
+ [" Z7 y6 x  H4 U. K: l- s
! \2 S* p6 n& y5 s
'
子菜单项目:SPline

3 O1 X, J8 y+ d( D8 ]  I
5 u: U5 u" F+ V: c) V# {Dim subMenuItemSPline As AcadPopupMenuItem

4 @8 w1 e* O& d7 o. l3 B* g1 a# l* l3 L: [8 X* }4 N( K' _3 s8 Y9 b
'Set subMenuItemSPline = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "SPline", macro & "_spline ")

( j" R6 Z) F0 ]2 c+ Y/ p  ~" v7 z0 T+ M
'
子菜单项目:Point

) T' p5 n. U! S* k7 J5 M
+ L3 J- c( A1 l( X" \Dim subMenuItemPoint As AcadPopupMenuItem

' G! `/ n3 i) I  r! T9 M
# ^4 o- f, U, v, Q/ R" |6 j3 J'Set subMenuItemPoint = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Point", macro & "_point ")
) X* Z2 n3 ]7 b. ]# o7 ]8 w- ]7 ~  c- n( j
: y. R  y6 F+ z' r

& h, q; B- _: G' n: x'
在菜单栏上显示菜单

- `: C0 ]% R- u- t7 Y2 H! H
, |) ~( J/ ?9 ~  W  B3 D1 RnewMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)

; g* T$ x; F+ I; C$ ?% }, T( X! \6 TEnd Sub
+ _- R, @9 ^; a- j4 q' ~* ?" A ! k3 m; q5 u' N8 {: U- l
9 }# D$ ~; z0 T) p+ Q
, T& M0 g3 P$ {, M# i, P' I
这个程序哪有错的?
发表于 2012-2-14 16:59:29 | 显示全部楼层 来自: 中国贵州贵阳
我也想问,在cad中做个小插件,想从菜单里面把它打开怎么办~~
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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