QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单
0 V. L7 b- @( D: A" a2 V: y能弹出一个我用VBA做的对话框,怎么实现?( `8 u: K  ~: w0 R( r
请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp
  L8 P$ L9 V& y4 j一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,
$ ?4 Y7 g5 Z7 Q6 p/ G能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。
7 G2 G9 X+ C* e* T* u2 Z例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog2 F& c' {4 M) t, E/ _* x
注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。$ z( e# c! s% K$ C8 q
dim mnuGroup as acadmenugroup) z' {( z0 Q3 b9 `
set mnuGroup=thisdrawing.menugroups.item(0)% j1 M( X, E# O2 p
dim newMenu as acadpopumenu, ?9 q# b. s& s& `9 o) {8 N, b# Y
set newnenu=mnugroup.menus.add("TestMenu")
* n, C- R/ g2 v0 Y9 q0 ]$ H, Bdim newMenuItem as AcadPopupMenuItem
* y4 {- {: U! `) c+ y9 B' Adim MacroStr as string
1 f- S+ L8 ]' f3 C3 U/ A9 }# O2 @MacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)
" \, `- t3 H9 s4 }) xset newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr)
4 J6 M/ m, t9 @) s* f" G. Dnewmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

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

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:
0 b( s9 p; u8 q0 Q- p# ]Sub gMenu()+ i# d8 H  x+ w$ C+ v  V
Dim currMenuGroup As AcadMenuGroup+ `" D  N' f# s! r: V( N6 M0 X
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
" D4 I4 ^# b" E; m9 D+ O# ?Dim newMenu As AcadPopupMenu
8 n# J: f8 N; l, DSet newMenu = currMenuGroup.Menus.Add("零部件")9 u3 G" i$ _, u! n9 ^/ ?6 S
Dim newMenuItem As AcadPopupMenuItem7 s9 e1 ]4 k3 p6 T
Dim Gear As String/ F& ~7 \5 K7 O3 K- }; V7 m( }
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)/ E) E0 ^  G; d5 t( f6 q" p
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear)6 m* l  i2 Q9 `7 \4 Y' P
newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
$ {" I7 L8 w, n( p  P' ~0 g: dEnd Sub
; r: s! I! ?7 `- P! A2 V6 w8 P0 P, J. p+ }: z9 }# O) u1 s

2 h* I) H3 p5 |$ A' u7 E下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??; A) N: H6 Z! c0 s' M% `
我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
; S0 {, C  G5 I, w2 R
7 `% w% }' X. A1 Y+ }$ x这一句改成, R; N& i$ @+ d! `( `6 L- c9 B
Gear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32)3 `" G. y* F6 x9 L, {1 a
再写一段( D6 x1 D4 G+ k, ]
Sub 齿轮()
7 J9 S# K* W" i/ S. e# y'打开用户窗体
5 ~; s  ]" m1 b; N6 rEnd Sub; v4 l' D3 \7 k# {
* t% q9 e/ w4 A% n5 u7 t
试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()
! u! x9 a( P0 c) c- d# b, ^'打开用户窗体; Q( o5 ~- f$ l" X/ d
End Sub
5 I& Y' r5 g5 o4 u7 F5 y
7 V* o% g! R4 k# K8 w. }: L! P$ G( ^7 E/ Y4 ~+ j

$ y6 ~* V$ w" Z! e这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show' A9 u5 u8 t7 t: k: P9 Q- h
就可以了,把你的代码贴上来看看。
. K/ k5 T1 ~- W# q0 b5 f/ ?# G# O* Q" T0 M0 J8 C: v
[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,
3 d: d6 O* ]5 z1 w) P6 \6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码+ [* a% @7 ~  R7 s; A
我是想先看看能不能实现点击后弹出这个对话框
; j' G2 h, d0 w6 u& e9 j谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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