乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 73|回复: 3

[VBA]关于CAD回车键重复响应自定义菜单中VBA宏命令问题的再次请教

[复制链接]

3

主题

6

帖子

1

银币

初来乍到

Rank: 1

铜币
18
发表于 2006-1-18 11:15:00 | 显示全部楼层 |阅读模式
各位老大:上次我请教了这个问题,仍是不得其解,帮忙再看一下,如下是我自定义的菜单:
Sub AddExtMenu()
   
    On Error Resume Next
    '获得当前菜单组
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
   
    '创建新菜单
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add("mynewmenu" & Chr(Asc("&")) & "P")
   
    '添加菜单项
    Dim macro As String
    macro = Chr(vbKeyEscape) + Chr(vbKeyEscape)
   
    Dim menuItemOpen As AcadPopupMenuItem
   
    '在菜单中调用宏
    Set menuItemOpen = newMenu.AddMenuItem(newMenu.Count + 1, Chr(Asc("&")) & "myprogram", macro & "-vbarun" + Chr(32) + "E:/other/VBA/project.dvb!Area.test" + Chr(32))
    '在菜单栏上显示菜单
    newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
    '释放对象
   
    Set currMenuGroup = Nothing
    Set newMenu = Nothing
    Set menuItemOpen = Nothing
End Sub
1、怎样修改才能在CAD中利用“回车”来重复响应,从而重复执行调用的E:/other/VBA/project.dvb!Area.test宏?
2、E:/other/VBA/project.dvb!Area.test宏可否改成相对路径,且仍能找到宏test?(test宏在Area模块里)
听说可以用LISP调用宏,可是我不知如何使用,找便了乐筑天下也没有合适的例子。可否赐教!谢谢。
回复

使用道具 举报

20

主题

115

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2006-1-18 14:14:00 | 显示全部楼层
你可以参照以下代码编码编写:
在LISP中编写如下代码:
(defun c:aa()
   (command "-vbarun" "AddGxPnt")
)

你可以在AutoCad2000doc.lsp中加入自动加载VBA程序和上述LISP程序的代码,这样你进入CAD中直接输入aa 命令即可运行,回车也能重复执行
回复

使用道具 举报

3

主题

6

帖子

1

银币

初来乍到

Rank: 1

铜币
18
发表于 2006-1-19 12:23:00 | 显示全部楼层
我在acad2004doc.lsp文件里加入了:
(vl-vbaload (findfile "E:/other/VBA/Project.dvb"))
(defun croject()
    (setvar "cmdecho" 0)
; (vl-vbarun "AddExtMenu")
(princ)
)
(defun s::STARTUP()
  (command "_-vbarun" "AddExtMenu")
)

发现只有“defun s::STARTUP()”句中二楼所述的“aa”改为“STARTUP”才能自动加载并运行,但是回车还不能能重复执行,怎么回事??
另外第二个问题还不明白?
回复

使用道具 举报

0

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
6
发表于 2013-1-18 11:39:00 | 显示全部楼层
把Project.dvb复制到support文件夹,代码改为:
(defun C:Project()
(setvar "cmdecho"0)
(command "-vbarun""project.dvb!Area.test")
(setvar "cmdecho"1)
(princ)
)
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 22:56 , Processed in 2.139538 second(s), 61 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表