QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单0 A  j1 }1 P6 b7 L: X1 Y2 [
能弹出一个我用VBA做的对话框,怎么实现?
1 y5 S4 ?% s* O! H0 _4 S; K请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp6 o/ [# b- h  o
一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,; L3 H- n! X* ?$ P
能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。/ e% N5 a0 Z! {. W8 K5 m: h
例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog
/ k$ r+ S; }+ u3 y6 P9 V, O7 g注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。
1 X( ?% Z3 s' ?! t" l* N& |9 hdim mnuGroup as acadmenugroup
, ^  d8 a- X( fset mnuGroup=thisdrawing.menugroups.item(0)
) r; a- p  c# I' r/ ]dim newMenu as acadpopumenu7 A* r) W$ p0 p/ ^: Q( }
set newnenu=mnugroup.menus.add("TestMenu")
' B3 k! }3 Q8 F( w7 Sdim newMenuItem as AcadPopupMenuItem0 _( i( I4 Q+ c, R: h3 T$ r' i
dim MacroStr as string
2 m1 j; l$ v, c! n9 H- o) nMacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)
* `$ o- f* p+ P5 ^set newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr); g& ?7 o* f" ~( V8 _
newmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

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

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:1 t! j  g* r+ T& M4 K# M: T
Sub gMenu()2 B% A$ @/ l0 r' _9 i
Dim currMenuGroup As AcadMenuGroup7 g7 {; p7 T1 R9 K) Y5 W
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
4 x2 _" M, C$ {+ ?Dim newMenu As AcadPopupMenu8 D! x8 x- C8 |. G
Set newMenu = currMenuGroup.Menus.Add("零部件")
) [( B% ^2 G/ F; ^Dim newMenuItem As AcadPopupMenuItem
! n  p# H' _- Y8 M2 i4 W% LDim Gear As String& `( {/ J' n" s. B- |
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
( q; ^( r2 u& h8 CSet newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear)
; d  ?! b1 t. f4 g# e% n! enewMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)( A/ v1 M) H- x7 N! [' o1 B7 q5 X
End Sub
: q$ C4 _: H3 L/ c
! a# A* S6 d, ]0 [9 C0 G) N& c, U# o/ M' ?) Y
下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??
: u( A+ M5 t$ z" U& s+ M6 T我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)/ a$ d$ Q5 n7 x5 i- q# L

" K0 p# L/ g$ `, ?' J2 z这一句改成2 `5 M- _: ?" l1 ~+ z5 q1 o
Gear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32), e8 Y+ }% ~, t' h0 `
再写一段
- g" h: S# |1 @. X& sSub 齿轮()
' z% p9 q9 r% u1 x8 P* u) i3 e'打开用户窗体
: u. k$ Z. M9 C; J8 N8 W' H2 o# bEnd Sub% g# t, S6 K( V) [- L" z+ z3 _2 P% c
( Y- O' G5 a! C: i4 C3 V
试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()  Z+ Z# S9 d6 l, I8 l& W3 s
'打开用户窗体
2 ~& K1 h/ G7 Y) f# h& hEnd Sub: @: d5 I9 Q- }; e5 t) Y

: O3 o- p1 V. F  L6 n
  T. _( n( M! Y/ i* u0 d7 E2 U% U) B% J" z- h6 E! E
这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show
+ \; G9 a- ?( r* h3 N& e" K就可以了,把你的代码贴上来看看。
6 x6 U7 o. s- _; N, V8 b+ B2 Q+ T) q4 p
[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,! O3 t2 t# F# Y2 l( J
6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码
, p$ V! u/ D2 N3 G1 E2 ^我是想先看看能不能实现点击后弹出这个对话框
: z! X, |- I8 S4 G) g" x谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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