QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单
4 y) k: F; ?) ^$ v能弹出一个我用VBA做的对话框,怎么实现?: `5 b% n8 d& ]! }! i' I* r
请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp
9 q$ p; v' _" f3 l2 `9 i7 ^一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,
, y# W1 P0 f! W1 h# {# b% ~' W能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。4 |5 ]$ L: i6 W) h! z4 h
例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog
* i; K1 C7 h) h9 e注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。3 c0 q  b: M# x% f. t
dim mnuGroup as acadmenugroup: B; b) r9 E+ u' V
set mnuGroup=thisdrawing.menugroups.item(0)! K' K: t: y6 n: \
dim newMenu as acadpopumenu( y# Y3 e+ e6 f) h7 X% O# H% Y
set newnenu=mnugroup.menus.add("TestMenu")
& t7 P* |2 {6 B9 i0 w! G8 x& Ndim newMenuItem as AcadPopupMenuItem
8 |9 N6 Y* ]$ N, J  s+ b  M9 F- ]dim MacroStr as string
) `. q4 |; h1 O- vMacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)
1 k, u" u, r/ o! b3 a& d# \0 bset newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr)
3 A4 n! l/ r3 `( Q0 unewmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

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

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:1 X: p# t" k% @- `: Q/ q& J2 l7 \, w
Sub gMenu()' h( r1 N. L8 F2 Y
Dim currMenuGroup As AcadMenuGroup
  f0 A/ P7 ?1 T3 @Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)% e) X# @+ n% N% u
Dim newMenu As AcadPopupMenu
2 E6 m- o) @2 S# L: _1 ZSet newMenu = currMenuGroup.Menus.Add("零部件")
# [* c5 Y; K$ F: C4 y5 DDim newMenuItem As AcadPopupMenuItem
0 g1 [2 c9 I, u0 P) E3 aDim Gear As String7 W# O# J+ W  n) I1 V
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)( a3 I) j$ M; a0 {$ z! A( P+ i6 F
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear)
, q) L# U& B. h! l  |newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
3 F) Y  R7 ^- c6 B1 E% UEnd Sub
* E9 _8 ~+ H* w; l8 m
3 ?/ @/ a; V) t# h" u  S( h6 F0 g+ s6 T' \0 N, }: W* a# P
下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??
& u$ H$ W1 {% P" O0 z0 q我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)' }  u7 W9 S& k- n6 U

' Z( v0 }+ C6 s+ F+ c& e4 j0 K这一句改成% b2 R+ ?5 L# T* H' T1 I
Gear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32)
8 |1 D9 {1 u5 b& y再写一段
1 n3 J8 T0 u& r( dSub 齿轮()+ G2 H4 Q1 l; U, x
'打开用户窗体
9 W" V2 t' V  H; W  x3 {End Sub
3 X* \" q$ ]3 H( n: c, i
  W8 x2 d9 I# |, W; E" i+ d* o试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()
8 Q- v, K1 M, q  I4 N'打开用户窗体
* b# P9 ~+ E- M0 Q( E, D& HEnd Sub
  Q9 V& X  R8 F0 ?* o( R# E. @1 L$ j) a: W1 Z% N; i6 G
. N) f) [8 i( k$ q; }* k1 u
# Y. W9 n9 _: x0 ^' q0 X" U5 V6 B
这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show4 o8 O$ Y" P# M! S0 n: d# |
就可以了,把你的代码贴上来看看。
0 I) l5 Q0 j# I6 _9 H4 s4 l0 n& n6 Q6 d; n
[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,8 L5 C' a( m) m, e. r" d
6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码
3 h/ h: ]2 |4 O6 F! [0 ?9 J我是想先看看能不能实现点击后弹出这个对话框7 t. y+ u6 P6 _7 _
谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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