QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我在MDT下用VBA作了个菜单,现在想靠点击其上的子菜单5 n  ?# ~( p2 [0 v: G! C3 \( V  z
能弹出一个我用VBA做的对话框,怎么实现?
* v+ L) V& Y4 q$ }请各位帮帮忙!!
发表于 2007-6-1 21:01:46 | 显示全部楼层 来自: 中国上海
编译成fas文件 加载到acad.lsp. Q0 d; m/ @' |/ B
一级菜单是fas文件 二级是vlx文件
 楼主| 发表于 2007-6-1 21:13:17 | 显示全部楼层 来自: 中国福建福州
楼上的大哥,
' }% ?' Z# `- e0 p7 E4 @0 g" }6 P8 X能不能把过程讲具体点,我.........
发表于 2007-6-1 21:19:45 | 显示全部楼层 来自: 中国浙江宁波
定义菜单时,直接写宏代码就可以了。
" Y5 _7 B, h5 R# t. e. ^& \例如,菜单项为[对话框调用]^C^C_-VbaRun 对话框.dvb!ViewDialog
* W0 P7 e, r. n. ]5 L注意要先加载vba程序文件(对话框.dvb),ViewDialog是定义的调用对话框的sub。
发表于 2007-6-1 21:37:00 | 显示全部楼层 来自: 中国浙江宁波
如果菜单项也是通过程序创建的话,道理也相同。8 J) |9 ]+ Q( |& a1 x9 l2 i
dim mnuGroup as acadmenugroup
. j+ n. l$ L$ H# u, q. rset mnuGroup=thisdrawing.menugroups.item(0)
+ p5 N  U- _* ]3 i0 C6 [dim newMenu as acadpopumenu9 y' R1 H) T( p, N8 Z
set newnenu=mnugroup.menus.add("TestMenu")
8 Z8 i( a- e: i3 D/ Jdim newMenuItem as AcadPopupMenuItem
7 z/ ]* z9 R% V& Q0 S0 ydim MacroStr as string; ]8 t/ z# K$ b$ c
MacroStr=chr(3)+chr(3)+chr(95)+"此处为调用对话框的sub名"+chr(32)
* c' n0 V% U' W( c" gset newMenuItem=newmenu.addmenuitem(newmenu.count+1,"Test",Macrostr)
. G0 \' p& G2 h4 e6 i# V% c  Rnewmenu.insertinmenubar(thisdrawing.menubar.count+1)

评分

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

查看全部评分

 楼主| 发表于 2007-6-1 21:42:58 | 显示全部楼层 来自: 中国福建福州
以下是我的菜单编码:, R! u: j5 _3 a' M
Sub gMenu()" F5 p, H' G( ?7 F9 _
Dim currMenuGroup As AcadMenuGroup* g! Q1 E9 r- L
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0); }, f. C& a" E7 m8 [4 B
Dim newMenu As AcadPopupMenu+ {1 I% W8 q3 d) j% B+ W5 x( E
Set newMenu = currMenuGroup.Menus.Add("零部件")% s$ Q. w! V, W
Dim newMenuItem As AcadPopupMenuItem1 e9 T) i6 D4 D- S3 [8 X
Dim Gear As String
6 c% Z4 l, F+ k6 EGear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32)
+ \5 ?- G5 g6 a- d  t7 @& ZSet newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "齿轮", Gear)
0 i4 k. D$ r% S; FnewMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
# W; ~' t7 k7 U8 sEnd Sub2 H. \- W! R# i, D

# @8 z# R: @  E/ ^" D0 N$ s) u- p" j8 o$ Z! ]! d8 @
下图是当我点击菜单“零部件”下的“齿轮”时能弹出的对话框,怎么实现?
c.JPG
 楼主| 发表于 2007-6-1 21:49:55 | 显示全部楼层 来自: 中国福建福州
4楼的老大,能不能留下你的QQ或者电话什么的??/ n* i1 ]" ?1 Q$ f# e+ ~1 n0 f, B2 m
我还有一些问题想向您请教!!
发表于 2007-6-1 23:38:30 | 显示全部楼层 来自: 中国
Gear = Chr(3) + Chr(3) + Chr(95) + "齿轮" + Chr(32); z& m$ l8 ^7 }9 ~; t- k) ]
( s9 b4 l8 d" H" I
这一句改成
& H/ E" e! f. T. CGear = "-VBARUN" & Chr(13) + "齿轮" + Chr(32)
( w$ \, m- E, ^3 Y" [! c0 s再写一段" I. P# R- b! ~) F% _1 {
Sub 齿轮()0 B5 {% u! ^  R
'打开用户窗体
3 R( _1 m3 q/ l, O7 w! I" VEnd Sub
% X+ V( o1 ~# B" E1 N  ^" k: X+ y: K8 E& z5 N: L
试试吧
发表于 2007-6-2 08:21:53 | 显示全部楼层 来自: 中国浙江宁波
按8楼说的试试,你首先要加载了你的DVB文件,然后在宏中调用显示对话框的sub,你没有给string变量Gear赋值,怎么能实现?你最好结合lisp注册一个CAD命令,那么在宏中只需要写命令的名称就可以了。
 楼主| 发表于 2007-6-2 09:47:31 | 显示全部楼层 来自: 中国福建福州
Sub 齿轮()
; [" S: Z0 j" J'打开用户窗体  N# x3 T! D. i& ?3 _
End Sub$ j0 S8 m' D( R* A

/ x* F% `" J) B5 ]/ ]2 O9 r) S  ]( o" j' D2 v3 c2 D
1 l( j. ^# C/ P1 ?) l' g
这一段怎么实现??
发表于 2007-6-2 10:05:32 | 显示全部楼层 来自: 中国浙江宁波
加入代码 userform1.show' j0 l8 I9 \" ?! A  r
就可以了,把你的代码贴上来看看。
! s0 V+ G1 @0 `. _6 Q! G0 ~1 q4 S  m4 Y: n0 }
[ 本帖最后由 sealive_leafage 于 2007-6-2 10:08 编辑 ]
 楼主| 发表于 2007-6-2 11:10:45 | 显示全部楼层 来自: 中国福建福州

回复 #11 sealive_leafage 的帖子

我的代码?菜单代码在6楼,
+ f- R" l0 W) I% m) R6楼上的图是我在VBA中用各个控件做的对话框还没有添加代码0 @1 [5 `( N. ^3 Q; W/ I6 d3 \
我是想先看看能不能实现点击后弹出这个对话框3 C  k" A2 s2 z4 a
谢谢楼上的帮忙!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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