QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
Sub AddASubMenu()
, }. B. z, n5 b& W" }'获得当前的菜单组
+ p* {! M# X" I9 X) @. {+ J8 ?Dim currMenuGroup As AcadMenuGroup
5 p# e  ?( R5 L4 e" G: M# K1 c; M
" |1 x$ x9 s6 ^! gSet currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
* V0 H, q1 q" h' B

6 a  d5 e( P4 J2 n6 Q
创建新菜单

' ^; f$ @. K$ Z9 `/ V$ F: i8 }
! ]; L6 I7 V0 Q# a$ O/ z: ?Dim newMenu As AcadPopupMenu

0 n- m. [3 \% k2 G7 p/ ~& [
3 Y2 w9 A3 `/ u$ [/ |$ U/ e7 RSet newMenu = currMenuGroup.Menus.Add("MyMen" & Chr(Asc("&")) & "u")
* Y; S( p( ]3 O' p) @" i; W

; l2 t. c' e3 E+ u: i'
添加菜单项

; m- u' |. X3 i) eDim macro As String
. s2 h+ K5 e/ |0 q" H
( ~4 x& G' o/ o9 l( u* Qmacro = Chr(vbKeyEscape) + Chr(vbKeyEscape)
8 {, P+ W6 L" _/ _'
相当于按下两次Esc

/ H' L- \! F8 Y7 R6 D; @& T2 y4 g$ p
! Z' k! d0 O% C) c% k  X: G$ K# d
'draw(
含有子菜单)
+ A. P1 A( ~" ?# I
+ M4 b% h: n/ U1 C
Dim menuItemDraw As AcadPopupMenu

6 n9 ?" `: r# f8 O1 h1 C
0 f: _) h6 Q6 t( P4 R% O' YSet menuItemDraw = newMenu.AddSubMenu(newMenu.Count + 1, Chr(Asc("&")) & _"Draw")

4 z9 g# D: W# L9 V9 `- P- o9 x. s3 r
6 K# O, |# P1 z1 v'
子菜单项目:line

# p5 q1 ]$ i& B5 m/ k' o( }
+ H, @# I- m% _/ Z8 aDim subMenuItemLine As AcadPopupMenuItem

2 _' j8 ^  L/ }0 F  _5 R! Q% s- X: X: |. K! g# ^# ]1 i
'Set subMenuItemLine = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, _Chr(Asc("&")) & "Line", macro & "_line ")
& G$ A$ Y! v9 a. v' C0 m9 k3 n

# L' l- S8 ~6 t' x* s0 W'
子菜单项目:Ellipse

: o) o% D# E. B; A0 ~9 i( k
+ ]6 U! P$ _  ODim subMenuItemEllipse As AcadPopupMenuItem

5 p4 ]) {2 T1 @4 \9 f, I1 S5 D' f% J0 i: n/ c! H
'Set.subMenuItemEllipse.=menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Ellipse", macro & "_ellipse ")
, j/ R. l% L6 r

) i* U6 `0 z6 C: ~% Q' L'
子菜单项目:arc
6 W8 {, w  x7 Q
: l# s/ h) R1 v& N4 x
Dim subMenuItemArc As AcadPopupMenuItem

1 V) a; N, y  O3 _- c6 o. c. t- O4 o' ?. c
'Set subMenuItemArc = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Arc", macro & "_arc ")
, u5 \' Q' P* n$ {# D3 l; j' j$ T' w
' K# x- R: B4 ^# h! c
'
子菜单项目:circle

8 y( `3 D- @7 h9 F5 ]
  G5 O4 P5 H# D  ]Dim subMenuItemCircle As AcadPopupMenuItem

, U; q( x( o$ W/ R$ w
( |* L* \' S# O'Set subMenuItemCircle = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Circle", macro & "_circle ")

; D; Q+ s# ]6 K* y8 m; b; M2 M" y9 m7 W0 X# o# H% y! p* i3 x
'
子菜单项目:SPline
% I3 U9 }: b. |6 }2 }; O
# d: j+ y6 w! e8 ^
Dim subMenuItemSPline As AcadPopupMenuItem

; Q7 H4 U/ G9 v. u
* X5 F# `4 U' D' l'Set subMenuItemSPline = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "SPline", macro & "_spline ")

' s  [3 H. T* \1 i* [5 p7 i1 g/ h- e1 B/ y: C6 C; f9 F7 n6 i6 i" y
'
子菜单项目:Point
0 j! S, f) k7 D$ x3 m- p& \9 @7 F

3 e1 y: N" c. IDim subMenuItemPoint As AcadPopupMenuItem
# v$ [* w$ }/ l, j6 V) Y

. j- |" H# [/ ]% B! b'Set subMenuItemPoint = menuItemDraw.AddMenuItem(menuItemDraw.Count + 1, Chr(Asc("&")) & "Point", macro & "_point ")

3 z% ]9 ~4 `( L: j" P. P' B. @
6 r' M2 R$ g, [9 X& {4 T- a: A6 T% A2 f  N" y% g* q' A5 @
'
在菜单栏上显示菜单
( C, T% d8 E+ s$ C8 \9 M

5 Y% `. u0 {0 o9 h# KnewMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)

1 u; x; [2 g5 _9 Q' z2 X7 b$ pEnd Sub3 E% i: o& Z( t" k. K& @
& B7 e+ W8 x. i3 k& l

* j6 n, V" p  z9 N2 v
7 k' w$ t  I  ?7 H! 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 )

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