QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单
/ B7 l% L6 O4 Y; Y# I) c能弹出一个我用VBA做的对话框,怎么实现?
" N1 u5 {( z& i- m. Q9 \/ Z" o请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp& e& Y' \  ]- y# q. C
一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,
( M& G! y6 J" v! ]能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。' e! m! Q& @+ T  R! u
例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog
, ~1 Z/ P/ f; i- }注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。5 K* f) ^8 U3 l- x
dim mnuGroup as acadmenugroup
; m, G1 x. i8 J/ i, jset mnuGroup=thisdrawing.menugroups.item(0)6 S% ^# n- s( c, H  P0 x- p* F
dim newMenu as acadpopumenu0 ~( v0 n" k9 c& |' W! k8 p& Q0 R
set newnenu=mnugroup.menus.add("TestMenu")
0 y: _+ B6 X4 V& k. z* v1 Sdim newMenuItem as AcadPopupMenuItem
/ M5 J& c; l" S, N  Z5 sdim MacroStr as string
6 \* \7 X# J# _2 K: [MacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)
. h5 ^' ]/ a% W- o8 xset newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr)
3 l, c' z- M' ?' Y0 K6 `) Jnewmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

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

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:
7 G, B1 R* z9 c" O: n& @Sub gMenu()
7 |- \1 v4 s% X3 u) O8 Y2 eDim currMenuGroup As AcadMenuGroup
2 h& C8 s: w, b- CSet currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)5 H* Y! q3 `( Y; {; V4 J0 f5 J
Dim newMenu As AcadPopupMenu  s! f6 |7 T1 I3 h# ^
Set newMenu = currMenuGroup.Menus.Add("零部件")" n% d; `' `) C: Q' t, s6 e
Dim newMenuItem As AcadPopupMenuItem: }2 `- K. J+ B
Dim Gear As String
- X: t! H: n; E, `Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
& A$ Q! Y+ q) b7 M/ iSet newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear); o7 o2 R$ ?& Z8 ]) b" I: s4 C( e% Z
newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
& v4 @; ~; i- X( y0 R! ?End Sub2 ~, W8 s' V# J) e, ~
* j) s0 `% n/ g& }: j

, R  {) y7 a3 J: _下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??6 m( @" v6 p& a5 K
我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)( J: |+ G3 p3 }2 `( I. v
0 t" G/ R, C& n" S) [
这一句改成' x+ v2 P5 X4 a. P
Gear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32)% \/ D4 [! Y  r  X/ o' G" `4 L* ?
再写一段' t  C8 Q& k; a+ I0 e# u
Sub 齿轮()
! n/ l+ M6 j1 T4 S! N: O- M'打开用户窗体
$ l" A+ {* A) _* j( u! \" ?End Sub
. F$ l/ @2 s# {- Z, K2 d5 O$ h
6 }) {! Q; w' X试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()
1 t3 r1 }' X4 U; T; n( `'打开用户窗体4 G3 E% ~' B7 k1 h
End Sub
, X! k2 ^+ ?; e: e. t, J9 s- }) D7 a7 C6 c' m) `, s

- y6 O/ J: K; }2 l1 E/ a" K) K- I( V5 K  {
这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show* D' I$ j- _/ k. o5 A
就可以了,把你的代码贴上来看看。+ f+ T4 B$ P. p; ~6 e4 O
; Q- l( i0 j9 T' }
[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,
3 l8 f' `+ L0 A4 M+ O0 y/ N6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码
: p" f( u  P- o% I5 U我是想先看看能不能实现点击后弹出这个对话框! i; E8 m( L3 w! X
谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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