QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
Sub AddASubMenu()
# k) k& z5 |0 r$ _' |'获得当前的菜单组
8 E2 |3 v1 ?! {! O* ]) HDim currMenuGroup As AcadMenuGroup& `1 N# }+ I) L; t
( F- F) d/ f1 M# T7 i. \
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
, v1 E, \9 C5 X7 z) f
, o8 R: g, o; _( B  J# ~3 U# `
创建新菜单

: u! \0 H4 y" _8 d2 ]4 {
' |4 O: a% [7 W" MDim newMenu As AcadPopupMenu

  _" i! Q9 R$ l) l; u4 }
; g) E3 C% d6 y, o7 J) z3 ~4 K$ pSet newMenu = currMenuGroup.Menus.Add("MyMen" & Chr(Asc("&")) & "u")

9 h4 c' D) e& o: X
) q, i7 U$ t. r$ P'
添加菜单项

& U7 M4 \3 O7 M7 Z5 IDim macro As String# J! V" [. L/ k" d' `5 g

, W3 g, N9 Y! b* `: Jmacro = Chr(vbKeyEscape) + Chr(vbKeyEscape): S( q6 L% \2 }* E
'
相当于按下两次Esc
( n7 m! r8 {  y. Z$ Z' V

- Z: [$ |: K  p: Q( B: P7 ?* t
: F. {: K4 h7 X, D2 O'draw(
含有子菜单)
# Y/ `" W# q' h1 E; m% A$ a

0 O" p% V6 h4 M9 n2 d$ NDim menuItemDraw As AcadPopupMenu
9 k: P! C8 A/ Q8 @; o: y

: z. ]3 j6 V8 q8 p3 tSet menuItemDraw = newMenu.AddSubMenu(newMenu.Count + 1, Chr(Asc("&")) & _"Draw")

8 y8 ]' ]5 X+ X9 i% P' h* t, m% [$ {6 l! B, k; K5 m# y! b& n* x
'
子菜单项目:line
% T0 d3 e# U" P, D
( ~3 K- G! P# `  E
Dim subMenuItemLine As AcadPopupMenuItem
$ U9 m5 @. g5 a  ?
* z+ B" O8 @6 E% P7 C
'Set subMenuItemLine = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, _Chr(Asc("&")) & "Line", macro & "_line ")
; m# X+ R* z, S, v3 b
( b6 J* V. ]' N- o, ~$ x6 V
'
子菜单项目:Ellipse

! O; V- c! c5 K- N
. w8 z" r/ u6 T. q% e0 uDim subMenuItemEllipse As AcadPopupMenuItem
( g( J9 o1 z5 r& W7 A

6 O9 Z4 y% D. R. c$ o1 V+ P'Set.subMenuItemEllipse.=menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Ellipse", macro & "_ellipse ")
9 D7 `  \* u- w; s5 j

/ K6 H* f5 p" E'
子菜单项目:arc
+ l" C2 E! u- X: K
! ]- S! `: L$ Q& K/ g
Dim subMenuItemArc As AcadPopupMenuItem
: ]" ~/ G' e9 t: P5 C& d: x

6 N+ O3 v* m# P6 V" u  l1 {'Set subMenuItemArc = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Arc", macro & "_arc ")

9 F  ?& ^  o% L, w8 k7 S  _2 t! _7 }! G* t5 R* t' P. W& a; [. j: J- K' }
'
子菜单项目:circle
2 k8 X+ S' S7 i- G4 R# s  P4 ^

, C+ R3 a8 f* G% aDim subMenuItemCircle As AcadPopupMenuItem

; x; a$ e" q, T8 T4 m8 W& B" I5 ?. w# V# h  Q4 u
'Set subMenuItemCircle = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Circle", macro & "_circle ")

- i# C, O! J. ]/ O- _4 r( I' e) ^" m" Q$ S
'
子菜单项目:SPline

3 f- T! m: q# A' P
  J, M- @' r9 ADim subMenuItemSPline As AcadPopupMenuItem
9 M1 ~- u# H) q" w  P5 k
, N* m: \1 o2 e7 K% E
'Set subMenuItemSPline = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "SPline", macro & "_spline ")
' b$ R& ]5 I) S: w8 N' `
+ z: k, E) b$ B, T1 t+ A6 {
'
子菜单项目:Point

' R" E* I& L- C4 B+ H& {' C- o/ z- `5 `9 k( w" }
Dim subMenuItemPoint As AcadPopupMenuItem

$ ?4 K* N; F. Q  r/ q8 U! D' ~9 h0 \, A1 [5 k
'Set subMenuItemPoint = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Point", macro & "_point ")
) E  q, C0 y2 @6 `/ n8 i: A3 q

1 ?* h& j2 m* m) U9 p) o: X  f
$ _+ h6 [* ]' N7 b) i" s; A'
在菜单栏上显示菜单
  ]5 _9 D7 i+ i* v

# c, n1 ?+ ]: l) d$ [' mnewMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)

9 q6 w+ U/ @$ q6 o8 X2 @* E2 w$ \End Sub( i' V! j/ C" N5 J1 V3 r" Z4 @; ]

# T1 f) H! a3 @5 c6 y2 d 2 {* f+ T: W; q- S/ \# l$ }

6 c( J1 Q1 F+ {7 b2 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 )

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