QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单0 I3 j0 a+ ?/ @7 x1 x
能弹出一个我用VBA做的对话框,怎么实现?
: I& v7 r$ k% V( s请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp
' p# [2 d$ e" z- Z0 w% y一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,# _4 G; y. O1 G0 }8 h
能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。
# H* K# e2 o7 e" x& a# Q例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog- t' u7 G' J8 P: W; ^
注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。$ F0 x) A+ G5 k0 P. n+ C
dim mnuGroup as acadmenugroup
$ O; G. K/ N; a2 ^' U* i9 gset mnuGroup=thisdrawing.menugroups.item(0)
$ _4 o& h7 K+ ?3 adim newMenu as acadpopumenu
( h2 K, e2 K1 V( p, |0 mset newnenu=mnugroup.menus.add("TestMenu")
7 v% D0 C: M3 R- A# `- H/ Jdim newMenuItem as AcadPopupMenuItem
% V, O. H9 ]8 {$ c2 a5 g3 I& Ydim MacroStr as string
" H7 @; G! X2 E$ K2 X& j8 |8 lMacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)
6 N" J7 ^5 R7 p4 Y0 yset newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr)7 B) M6 D+ A5 }
newmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

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

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:
1 F7 l9 Z* t, G1 w) ^0 ]) }) }Sub gMenu()
+ o, |. f! Z/ g" r8 X- c. N2 LDim currMenuGroup As AcadMenuGroup
: A2 |9 e$ H) u2 D2 Z, U( _Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
/ y7 D3 r& Z+ f) h8 y: A4 g7 \" lDim newMenu As AcadPopupMenu4 M4 b8 ^( a/ \1 b1 \5 S/ n
Set newMenu = currMenuGroup.Menus.Add("零部件")
$ K& z7 H+ D6 B3 i7 [Dim newMenuItem As AcadPopupMenuItem+ E6 Y" A! ]* s
Dim Gear As String
( c: t7 G" l+ R7 N1 Y$ R) L; \Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)- R2 h3 Z0 U. _# x+ r; Z/ V$ a, @
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear)1 C/ Q2 h5 N5 y% i9 d
newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)5 K' {2 v) Y% F* W  H
End Sub
7 M  V0 @) q# Z2 R1 i' `3 d+ P! \5 p2 C4 n4 m
5 ^  J5 x4 s0 O, {* M% V6 Y
下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??
5 f5 ]- ]  B) _7 u9 j5 h8 H我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)/ I$ W! `( @( N' i4 T+ A

, B  k8 R- u! K, l7 j这一句改成5 v" ^# G. l/ {( G3 a" \% `% w* t
Gear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32)( S1 h' D. O6 w4 c% d  A7 i
再写一段% N2 }# s4 u. M+ O8 v, c( X. s
Sub 齿轮()
) F- ]3 m0 U( O" z( Z8 ]'打开用户窗体, ?. f' [& w% x# O
End Sub
: h7 \/ S0 U% p( T( K% z9 m% a. q7 F) p0 f" }, D! g7 n6 M  x
试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()& @+ A$ P7 ~7 \7 X) \
'打开用户窗体
, t" i  Q" l/ N0 X' UEnd Sub
' m* u6 r! c# h' G5 E& h% H. h+ V5 i8 X; ]( @5 G9 C; B
5 i# Y0 M6 P+ d1 b: N7 b+ z; S; v
) u( N3 C% j+ c3 B; \3 C; P4 l
这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show! G9 Q6 j" Y4 `% u, R1 {
就可以了,把你的代码贴上来看看。# T( Y- u) C/ {1 W0 o

" i, ]! v1 I. V8 I[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,& I8 \" T! j  s3 F9 Q+ f
6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码
: z6 }  G1 U9 c, K我是想先看看能不能实现点击后弹出这个对话框3 ^- N0 O  e* h7 z2 b5 q
谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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