QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
Sub AddASubMenu()* n* I4 }- Q' S* ]
'获得当前的菜单组! ?' K0 d1 F4 H/ V. j. z2 K. x
Dim currMenuGroup As AcadMenuGroup" a3 _! Q0 u; C+ u/ S! @; E
: o  X# @3 i& x
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
* ~5 k7 _. G+ s' a/ A0 k5 A

& v" X3 I1 J' D- Y
创建新菜单
- f* j& m0 j& v
2 o* L; D9 c- k: |  {9 p
Dim newMenu As AcadPopupMenu

, [  u1 K! v' n3 R% {" V6 |( c! P9 O; I6 |6 j$ A, U
Set newMenu = currMenuGroup.Menus.Add("MyMen" & Chr(Asc("&")) & "u")

1 L8 n, t+ X# W, E% O: u* _, ?. A' I/ H/ q' u8 Z; }3 e
'
添加菜单项

# j: H% N% d% Z6 k, M5 b0 GDim macro As String6 r$ L4 S  P$ Z! F

/ F6 n2 L6 C! r" l$ Gmacro = Chr(vbKeyEscape) + Chr(vbKeyEscape)! l4 |7 Y! G2 d; Q" ~
'
相当于按下两次Esc

1 H8 O" {: y: A6 _* U  h4 ~% e  k" D" ]3 B# c0 E( v4 V3 F

8 b) t. N3 E9 M; @8 H+ L'draw(
含有子菜单)

3 z) _! B9 [4 _8 L! o" V! \8 ]) P3 q5 Z
Dim menuItemDraw As AcadPopupMenu

9 v: V6 [! X1 U3 a  L1 y* }
$ Z! ~2 m; j  \$ _5 fSet menuItemDraw = newMenu.AddSubMenu(newMenu.Count + 1, Chr(Asc("&")) & _"Draw")
" V, Z# w2 N; T! t

" k  @/ U: V2 Y$ t' z6 ?1 g' k'
子菜单项目:line

2 b7 Q2 {, K- H: b) T
. M5 ?# h! u9 O8 ?* c7 O: i6 E+ FDim subMenuItemLine As AcadPopupMenuItem

) ^( d+ F1 U7 N" `4 w5 e' p1 @( z" q; E1 i
'Set subMenuItemLine = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, _Chr(Asc("&")) & "Line", macro & "_line ")

' A5 ~/ V+ F7 m2 g* o; o
/ k$ U( v6 K& K9 P7 m# l6 |/ a'
子菜单项目:Ellipse
6 @9 f# E  V" K: B

+ ~% o3 s2 S8 m8 e3 EDim subMenuItemEllipse As AcadPopupMenuItem
  `6 R) i- P* [5 g. u3 l

# \( P, P- W  s% J$ g# s'Set.subMenuItemEllipse.=menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Ellipse", macro & "_ellipse ")

4 ~* T- h  ?/ F3 G2 a5 A
+ q0 K* E0 v$ k$ I# s3 T'
子菜单项目:arc
1 O, }, G# n/ E4 w5 s% v
9 Q- U  ?( }- O* y( X; m* h; J
Dim subMenuItemArc As AcadPopupMenuItem

% k1 t& a' H! [& I* @) S9 ~$ _. A* n& \1 F& X. i
'Set subMenuItemArc = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Arc", macro & "_arc ")
3 `& M9 U  v" s: a3 ?. o8 m2 a
" e5 s* Y4 \2 p. n6 _6 b
'
子菜单项目:circle
% D# Z: M$ T. t, q0 }3 z
; y3 n3 m+ k2 I' O- V+ V# }
Dim subMenuItemCircle As AcadPopupMenuItem
7 o' N0 D# D1 L0 G

3 W* ^$ W5 C8 W7 V7 @& \' G'Set subMenuItemCircle = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Circle", macro & "_circle ")

+ A0 ?; c# b/ ^$ R: e8 O' O% [1 p4 E! {# D
'
子菜单项目:SPline
7 W+ h; |' `& Y
' ~) L$ l/ L2 `
Dim subMenuItemSPline As AcadPopupMenuItem

( q) v% H- S: N; D2 R5 C
5 q4 {& @6 T4 m1 X'Set subMenuItemSPline = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "SPline", macro & "_spline ")
- Z6 h& f* x. j% d& V0 u
5 ?5 B. H+ @% _: Z. a7 Y9 @# J
'
子菜单项目:Point
6 w! c: e2 b+ ?
$ ^5 O) P9 W! m7 V: C
Dim subMenuItemPoint As AcadPopupMenuItem

- t, @9 k0 s+ ?( U$ B8 ^
2 g4 H& N7 O& R'Set subMenuItemPoint = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Point", macro & "_point ")
* s! _* k4 ~0 d; B+ m

. d$ C8 N$ n7 C  x: y
  M# j  h1 t/ |+ c; I5 E'
在菜单栏上显示菜单
3 S6 M, G( I2 [9 }: S& [% h

1 X& \) f! d# `1 onewMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)

9 d& C- x; g! k$ `/ rEnd Sub
7 d6 ?7 v5 Q: E( ?+ s! p% h 7 a3 F. b) Z1 {' h
) I* t: ^! B1 K+ v! L6 [  J
4 `8 Z3 y* L2 e7 f! C- \: z
这个程序哪有错的?
发表于 2012-2-14 16:59:29 | 显示全部楼层 来自: 中国贵州贵阳
我也想问,在cad中做个小插件,想从菜单里面把它打开怎么办~~
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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