QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 4058|回复: 11
收起左侧

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

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

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单: N2 J3 l4 M' u
能弹出一个我用VBA做的对话框,怎么实现?
& W+ j3 T1 q+ i+ r+ N" X请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp
/ k9 p% A9 i( Q+ |. m! b. l& r一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,7 ]) I6 L4 {' A: U" n9 {" V; Z+ o
能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。# n3 f* `+ o4 ~8 R; v( z
例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog7 [1 W+ F0 K* f4 Q- R+ q" H- N
注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。/ ?- C8 R1 c- p# f8 c3 t
dim mnuGroup as acadmenugroup
- `, {: n3 h9 b, vset mnuGroup=thisdrawing.menugroups.item(0)( P' w) V9 K+ M' ?& i) p7 f7 D$ @
dim newMenu as acadpopumenu6 ^( x  ~1 v+ G/ G% P
set newnenu=mnugroup.menus.add("TestMenu")
; N& F" T" Q: m8 J  L: S- [dim newMenuItem as AcadPopupMenuItem: g1 X( S/ U) s! K. I* V6 N
dim MacroStr as string% e! S$ n/ O& v/ z7 l
MacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)# b" I8 g% s( B8 D( e
set newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr)9 b1 O1 C6 R5 Q( v% }1 h
newmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

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

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:
$ N5 U$ j* ^; aSub gMenu()
+ R& @7 g( X! v" TDim currMenuGroup As AcadMenuGroup) b0 O4 [, o5 i: y; j
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)! i: E  P: @" n# H& }
Dim newMenu As AcadPopupMenu( [! m6 |; S" j
Set newMenu = currMenuGroup.Menus.Add("零部件")
& Q" f$ Z# v% m* Z% b5 w/ @8 \Dim newMenuItem As AcadPopupMenuItem8 F' g: Z" S0 y, |4 T0 _1 L9 n
Dim Gear As String( S3 T4 F8 G5 T* w9 _$ {' N; d
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
8 B( ~: ^9 g  zSet newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear)
* X  o9 Z# T" O4 QnewMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
3 P/ r( j0 ?7 v( X5 jEnd Sub! k. M5 f5 E0 H

& }2 v, O/ }0 s. x" f5 Q& @6 b) }9 a4 d* }0 \2 l& {1 r
下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??
0 a' c( X2 S" W3 Q3 d我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
2 y' T* Q: r. ^; S+ y. i6 R+ W: t
这一句改成! Y9 `0 \" p0 @9 x2 h4 Q& i9 J
Gear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32)8 ^" Z4 g/ f9 S* ?" J' ]0 t7 Y: `
再写一段  ^- c3 G6 F0 B; x6 T; i
Sub 齿轮(). L  f$ Y1 G, ?4 y4 v  p
'打开用户窗体
0 M5 O  O* n+ u7 z& xEnd Sub
: e# A$ T! ^% I$ _
% S' X) B  g2 ^4 v7 a% j5 i! o试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()" ?" c4 V6 A2 E7 v. A3 F
'打开用户窗体
0 V$ p: N- Z3 Q+ qEnd Sub
5 _; n4 M. a( F$ q8 l
0 F( B/ a, U, @) |8 e- p, X+ s1 C/ \/ |

, i1 ^7 Z% l/ K; X6 Z这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show
) D# o9 t7 z# o9 G就可以了,把你的代码贴上来看看。
  F' m( U% }1 z+ U1 D4 l% v1 y1 C* A" E! T; T
[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,/ A" c8 R) `" {/ Z$ @/ t1 O
6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码; f- X; m  L5 x* J
我是想先看看能不能实现点击后弹出这个对话框% g2 R( n( Q. W$ x
谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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