QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 4060|回复: 11
收起左侧

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

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

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单
) P" p* a+ l) {( X) s' \能弹出一个我用VBA做的对话框,怎么实现?
1 A7 g/ t' d8 F; {1 K6 a请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp& V4 j' q( x% j5 Z8 f1 I: l
一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,) f7 M% l7 G  B! P. X: c9 H
能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。: S  I4 g6 }$ C% n9 Z
例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog; \$ N) O2 @2 C: w# ~
注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。
5 Q$ H0 B7 F% w7 `* w. xdim mnuGroup as acadmenugroup/ k) N& O/ f& ^; w, o4 u7 ^
set mnuGroup=thisdrawing.menugroups.item(0)
7 b! K& I9 ?2 _0 _9 v; i; m* Ddim newMenu as acadpopumenu
( _0 \2 F* f" c2 u* s, P: @* }( C' R/ J& T) qset newnenu=mnugroup.menus.add("TestMenu"); N$ H0 r3 r2 z- g7 y) B5 U" `
dim newMenuItem as AcadPopupMenuItem
% P- |( \2 F. z: edim MacroStr as string: U' l2 V( _5 C- ^! m
MacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)
" s' {/ q3 g7 O& M' G) c7 m4 eset newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr)
$ s* T. S: L4 @; F" O/ [newmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

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

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:
, Q& L) w( B* ~3 P8 _/ ]Sub gMenu()2 w/ T1 ?8 t9 W
Dim currMenuGroup As AcadMenuGroup/ i+ x' Q, S$ W/ i) z2 T
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0); {2 U' R7 ^) R
Dim newMenu As AcadPopupMenu  c1 o9 {# O9 h: K; K
Set newMenu = currMenuGroup.Menus.Add("零部件")8 [3 B' D( s1 `1 @9 [
Dim newMenuItem As AcadPopupMenuItem* O  B. k3 g7 q/ L6 F1 b3 h
Dim Gear As String
( W4 x# x5 B' jGear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
! M) n! w% J5 k5 _4 {* FSet newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear)
1 a) g( T* `8 L- unewMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
7 U" x2 e, {) A+ dEnd Sub
: m& b2 U! o4 {) m- E0 I) g: R6 O% X0 j& `; }
0 h4 \9 s, _! B( K, I
下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??$ J2 I* \1 a7 y% p/ V9 x' ]+ f
我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
4 D, V4 z+ V- o
' y8 M# e9 c* M0 S这一句改成
: I- X4 `. }/ v; j0 f7 n% `; yGear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32)' [  e1 U1 j1 N! f3 Q0 T' \- ^
再写一段
+ T! [) b. r) j( xSub 齿轮()
9 u4 C0 Y2 C: o- S'打开用户窗体0 |/ R# ]: o; F' y$ t7 J
End Sub5 e6 V$ D+ U: y( ?) P1 ]. ?: V
. j" X* d8 H8 |* y0 j; s
试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()
5 A1 f; h- u5 P1 H'打开用户窗体
+ R; ~& t$ ]8 V" Q* H- FEnd Sub
; B( U8 p/ N1 f7 o) t
' z. T5 Y( ^* K2 H# l
3 o1 w6 B/ Z2 ^) e0 }# e6 G$ E
; \2 J. n9 A+ h8 F+ n这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show
1 u, C9 s/ E, d$ L! u就可以了,把你的代码贴上来看看。
- P+ b" t/ ^: f- J, d, E& M$ @7 H7 V, v8 D. }
[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,
3 @) I; W5 B/ T1 P; @4 u6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码
) T3 c9 H% |6 J) y我是想先看看能不能实现点击后弹出这个对话框
5 j. p* A! O" y( }谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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