龙力 发表于 2004-9-9 14:47:00

求教(修改AUTOCAD2004图纸时不加载VBA)

我用delphi程序的ole容器来新增,修改AUTOCAD2004的图纸,在新增的时候VBA自动加载,命令行的内容如下:


正在重生成模型。<BR>命令:<BR>AutoCAD 菜单实用程序已加载。_vbaload<BR>命令: 正在初始化 VBA 系统...<BR>打开 VBA 工程: C:\FY_CAPP.DVB<BR>命令: -vbarun<BR>宏名称(M): md_menu.insertmenu<BR>命令:


AUTOCAD2004自动打开VBA工程(我是使用ACAD.LSP来自动加载VBA工程的)。


但是在修改图纸时VBA不自动加载,命令行的内容如下:


正在重生成模型。<BR>命令:<BR>AutoCAD 菜单实用程序已加载。_vbaload<BR>命令: 正在初始化 VBA 系统...<BR>正在打开 AutoCAD 2004 格式的文件。<BR>正在重生成模型。<BR>命令:<BR>命令:<BR>打开 VBA 工程:


没有自动打开VBA工程。


请教各位高手,有没有方法解决这个问题啊?

雪山飞狐_lzh 发表于 2004-9-9 15:10:00

没用过2004和delphi,至少没遇到过这种情况


不需要启动加载VBA程序,只需要运行时给全路径

龙力 发表于 2004-9-9 15:14:00

我不是指怎样打开CAD程序,是说打开CAD程序后自动加载VBA,因为要使用VBA来自动加载一个菜单。

雪山飞狐_lzh 发表于 2004-9-9 15:20:00

我不习惯用VBA加载菜单,为什么不做成菜单文件直接加载到AutoCad里去呢?这样简单多了

龙力 发表于 2004-9-9 15:28:00

请教一下,如果加一个菜单到AUTOCAD中呢,以及执行这个菜单的事件怎么样实现呢?

雪山飞狐_lzh 发表于 2004-9-9 15:31:00

做菜单帮助里有详细的说明,可以看看AutoCad自带的菜单

龙力 发表于 2004-9-9 16:02:00

我没有做过菜单,可否给小弟一个例子或者在帮助里面那个地方有介绍怎么做菜单???

龙力 发表于 2004-9-9 16:47:00

刚才刚参照帮助写了一个lisp文件内容如下:


(defun S::STARTUP() <BR>(menucmd "文件(&amp;F).新建(&amp;N)...\tCtrl+N=+文件(&amp;F).capp")<BR>)<BR>可是启动CAD时没有新增菜单嘛,大侠给我看看那个地方写错了!


帮助文档是这样写的:


<P class=body>AutoLISP menucmd 函数可用于插入或删除下拉菜单。其语法与交换下拉菜单的语法类似。但不同之处是等式左边是下拉菜单,新菜单将插入到该菜单之前;等式右边是一个加号 (+),其后依次是菜单组的名称、一个句点和菜单的别名。如下列语法所示:

<PRE class=prog_in_end_0>(menucmd "Gmenugroup1.menuname1=+menugroup2.menuname2")</PRE>
我没有写过,不知道是不是我写错了,还有一个问题,就是把菜单加上去以后,怎么执行菜单的事件???请高手指教一下

雪山飞狐_lzh 发表于 2004-9-9 17:38:00

<P class=body>菜单文件是一种 ASCII 文本文件,其组成部分定义了用户界面(命令行除外)各部分(例如下拉菜单、工具栏和定点设备上的按钮)的功能。


<P class=body>默认的菜单文件是 acad.mnu。acad.mns 文件与 acad.mnu 文件相同,但不包含注释或特殊格式。每次菜单文件的内容被更改时,AutoCAD<SUP class=SuperScript>&reg;</SUP> 将修改此文件。可以在记事本中打开 acad.mns 文件以查看完整的菜单文件。要打开菜单文件,请在“工具”菜单上单击“自定义”<IMG src="mk:@MSITStore:D:\Program%20Files\AutoCAD%202005\help\acad_acg.chm::/ac.menuaro.gif">“编辑自定义文件”<IMG src="mk:@MSITStore:D:\Program%20Files\AutoCAD%202005\help\acad_acg.chm::/ac.menuaro.gif">“当前菜单”。


<P class=body>可以创建或修改菜单文件以执行以下操作:


<UL>
<LI class=bullet_1_begin>添加或更改菜单(包括快捷菜单、图像控件菜单和数字化仪菜单)和工具栏</LI></UL>
<UL>
<LI class=bullet_1>为定点设备上的按钮指定命令
<LI class=bullet_1>创建和修改快捷键
<LI class=bullet_1>添加工具栏提示 </LI></UL>
<UL>
<LI class=bullet_1_end>在状态行上提供帮助文字</LI></UL>
<P class=body>例如,要添加新菜单,可以修改 acad.mnu 的相应部分并以新名称保存,或者创建新的菜单文件。


<P class=body>在下例中,图形项目需要频繁使用半径为 1 个单位、2 个单位或 3 个单位的圆。要提高工作效率,可以创建一个菜单文件,在该文件中定义带有三个选项的下拉菜单,每个选项的功能是绘制不同半径的圆。要创建菜单文件,请在记事本(或以 ASCII 格式保存的任何其他文本编辑器)中键入文件内容,然后将此文件以扩展名 .mnu 保存。此例中的菜单文件可以命名为 circles.mnu。

<PRE class=prog_in_0>***MENUGROUP=CIRCLES
</PRE><PRE class=prog_in_0>***POP13
</PRE><PRE class=prog_in_0>//Creates circles with radii 1, 2, 3
</PRE><PRE class=prog_in_0>Circle-1 ^C^C_circle \1
</PRE><PRE class=prog_in_0>Circle-2 ^C^C_circle \2
</PRE><PRE class=prog_in_end_0>Circle-3 ^C^C_circle \3
</PRE>
<P class=body>菜单文件的第一行始终为 Menugroup 部分,用于为菜单提供唯一的名称。在此例中,Menugroup 的名称为 Circles。Menugroup 的名称不必与文件名相同。


<P class=body>此例中的第二行是部分标签。此菜单是下拉菜单,因此使用带有 1 至 16 之间的一个数字的弹出部分 (POP13)。关于下拉菜单和快捷菜单的详细信息,请参见<A href="mk:@MSITStore:D:\Program%20Files\AutoCAD%202005\help\acad_acg.chm::/acg_0455.html#561363" target="_blank" >创建下拉菜单和快捷菜单</A>。


<P class=body>以两个斜杠 (//) 开始的第三行是可选注释行,编译菜单时将忽略此行。菜单文件中的注释可用于版权声明、说明或注解。


<P class=body>接下来的三行用于定义菜单上的项。在第一个菜单项中,Circle-1 是为菜单项指定的名称标记。方括号中的文字 是菜单项标签,用于定义此项在菜单上的显示。此行剩余部分是菜单宏,菜单宏使用 AutoCAD 命令和特殊字符绘制半径为 1 个单位的圆。关于创建菜单宏的信息,请参见<A href="mk:@MSITStore:D:\Program%20Files\AutoCAD%202005\help\acad_acg.chm::/acg_0413.html#559621" target="_blank" >创建菜单宏</A>。


<P class=body>要在 AutoCAD 中使用新菜单,请使用
<OBJECT id=alink_MENULOAD_CMD_481924 type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11><PARAM NAME="Width" VALUE="0"><PARAM NAME="Height" VALUE="0"><PARAM NAME="Command" VALUE="ALink"><PARAM NAME="Item1" VALUE="acad_acr.chm"><PARAM NAME="Item2" VALUE="MENULOAD_CMD"></OBJECT>MENULOAD 命令加载菜单文件 circles.mnu。关于加载菜单文件的详细信息,请参见<A href="mk:@MSITStore:D:\Program%20Files\AutoCAD%202005\help\acad_acg.chm::/acg_047.html#559219" target="_blank" >加载和卸载菜单文件</A>。

龙力 发表于 2004-9-10 09:40:00

菜单已经生成,那么要使用菜单的事件(比如菜单名定义了文件save到指定的某个位置),在那个地方书写事件的发生代码呢?
页: [1] 2
查看完整版本: 求教(修改AUTOCAD2004图纸时不加载VBA)