QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4197|回复: 11
收起左侧

[已答复] 菜单上的宏命令

[复制链接]
发表于 2007-6-1 20:53:35 | 显示全部楼层 |阅读模式 来自: 中国福建福州

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单
( Q5 g  ?- F  l4 y& F* \能弹出一个我用VBA做的对话框,怎么实现?
/ C8 Y2 `7 L/ X" n请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp: W9 w% s1 y* b% Q8 w
一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,
+ B3 `, f* E$ Q; x8 m7 l# n能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。7 Y: L" Z9 H( W, n; e+ a5 o' {
例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog; ^) l/ B: @# X- Z2 d7 z( R' @
注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。
7 @  G8 l! s6 L& N; z- Rdim mnuGroup as acadmenugroup
" p' D8 l/ W1 U) E" X1 T( A# V0 Y) dset mnuGroup=thisdrawing.menugroups.item(0); ^1 c, j7 U, }
dim newMenu as acadpopumenu
) t6 c) A5 i7 [& d  s5 |8 Fset newnenu=mnugroup.menus.add("TestMenu"); a& B8 U; |3 F, f, \
dim newMenuItem as AcadPopupMenuItem! d$ ^  p$ T, {2 W' |% t+ }4 e
dim MacroStr as string- o: t+ |" i9 D& [, J% U- a( W
MacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)
5 u. X. c$ ]9 o' U; `: nset newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr)
, s) M% {8 \, a7 @2 Wnewmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

参与人数 1三维币 +5 收起 理由
★新手★ + 5 技术讨论

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:
' j' k% T% y  z" ^+ }! SSub gMenu()% O* @8 G& t2 r$ D4 |9 J8 I+ ~( q
Dim currMenuGroup As AcadMenuGroup
  v# D7 t; B. B+ }( N4 d# e0 sSet currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)- a; a$ ?# p, w3 |/ F: I" e; ]
Dim newMenu As AcadPopupMenu3 q/ E6 l; Z0 X2 k& ]7 g' f2 L
Set newMenu = currMenuGroup.Menus.Add("零部件")% A  {3 {4 t* V6 z
Dim newMenuItem As AcadPopupMenuItem4 {1 v2 _/ |( @! ]# I1 p
Dim Gear As String
. c5 X; E# L  O. QGear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
" k$ r9 v& p: Y" `, [Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear)- n% y0 n, r7 Y1 x9 J# x
newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)7 S, E6 h$ e- g4 U# r
End Sub4 e5 s8 E: c" T- {7 ]
+ U: ~  R9 U1 \' }: B, Z  a/ _
! p5 M8 O' `) O! L3 h1 \8 F- q1 A  j
下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??
  P8 J, g+ v8 X我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)8 j9 E9 Y6 Z* K: ?
; D  Y5 l! }; h
这一句改成
, i$ x& r' I& y8 RGear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32)
$ v) z0 B0 Q& j* m3 _再写一段* a+ u) s9 _1 w. }
Sub 齿轮()! |, }, k8 a2 l4 v" X5 n
'打开用户窗体
# {2 b% I" X2 a: [: }2 e! O' NEnd Sub
- _- g% |% \' ~8 m! Y
2 u9 f0 }. Q# i' N9 e% a  k: Y- k试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()
1 a5 ^( C2 h/ ?& s9 z8 E6 N'打开用户窗体
* y; b9 }  F6 s+ ~9 g+ WEnd Sub! x7 R9 j+ X6 G! @' s. N- p
9 W$ l. F9 h  E
, z  P+ W5 ~1 E& g
/ w3 W5 |1 O# R/ Z+ q0 c
这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show9 ^# Z0 R6 V% q% d% I
就可以了,把你的代码贴上来看看。
- l% m& b/ D7 Q" Y/ a+ d; o0 q) @$ j# [* ]2 W3 H
[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,
2 R# ~6 k8 }3 L# o# h; z; P% k0 |6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码
- x8 b9 x0 g; @5 s, @2 f我是想先看看能不能实现点击后弹出这个对话框2 S7 g. X0 V0 J7 i3 M
谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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