fanny_6 发表于 2005-6-30 16:05:00

请问怎样在CAD打开时加载子程序?

请问怎样在CAD打开时加载子程序?


我是这样写的:


Private Sub AcadDocument_EndOpen(FileName As String)


'放要执行的子程序


End Sub


用 AcadDocument_beginOpen(FileName As String)也不行

fanny_6 发表于 2005-7-1 08:39:00

写这段的目的是:在打开文档时自动添加几个常用的字体样式。<BR>如果用其他方法实现亦可

LucasLynn 发表于 2005-7-1 14:33:00

在AutoCAD目录下新建:autocad.lsp


编辑内容如下:


(defun S::STARTUP()<BR>                               (command "_-vbarun" "SubName")<BR>)<BR>

LucasLynn 发表于 2005-7-1 14:38:00

加载字体样式应该在选项-文件-文本编辑器、字典和字体文件名项中设置一下就可以了吧。

wylong 发表于 2005-7-1 14:54:00

你可以这样做:打开一个空的 dwg 文件,在 文字样式 设置好你常用的字体样式,再保存为 *.dwt 样板文件;然后在 选项-文件-样板设置-快速新建的默认样板文件名 项中设置为你刚保存的*.dwt就可以了。如下图所示:


fanny_6 发表于 2005-7-1 15:47:00

我已经用<A name=42632><FONT color=#000066><B>LucasLynn</B></FONT></A>的方法解决了,谢了<BR><A name=42636><FONT color=#000066><B>wylong</B></FONT></A>的方法我觉得有个缺点:因为打开别人的图修改时是不能套用模板的

LucasLynn 发表于 2005-7-1 17:31:00

其实这个方法完完全全就是AuytoCAD 2005 开发人员文档提供的。我只是做了Copy/Paste而已,建议大家还是多查文档,毕竟资料里面的信息比问别人完整的多。


全文内容是:



<DIV class=TopHead title="自动运行 VBA 宏 ">自动运行 VBA 宏 </DIV>



<DIV class=noshow>
<OBJECT id=dataUpdates height=0 width=0 classid=clsid:333C7BC4-460F-11D0-BC04-0080C7055A83><PARAM NAME="RowDelim" VALUE=""><PARAM NAME="FieldDelim" VALUE=","><PARAM NAME="TextQualifier" VALUE='"'><PARAM NAME="EscapeChar" VALUE=""><PARAM NAME="UseHeader" VALUE="-1"><PARAM NAME="SortAscending" VALUE="-1"><PARAM NAME="SortColumn" VALUE=""><PARAM NAME="FilterValue" VALUE=""><PARAM NAME="FilterCriterion" VALUE="??"><PARAM NAME="FilterColumn" VALUE=""><PARAM NAME="CharSet" VALUE=""><PARAM NAME="Language" VALUE="zh-cn"><PARAM NAME="CaseSensitive" VALUE="-1"><PARAM NAME="Sort" VALUE="group;title"><PARAM NAME="Filter" VALUE="curfile=aag_1130.html"><PARAM NAME="AppendData" VALUE="0"><PARAM NAME="DataURL" VALUE="file:///C:\Program Files\AutoCAD 2005\help\acad_aag.cud"><PARAM NAME="ReadyState" VALUE="4"></OBJECT></DIV>
<DIV class=noshow_cud id=dataupdate style="DISPLAY: none">
<DIV class=updatelabel id=updatelbl></DIV></DIV>
<P class=body>用户可以自动运行 acad.dvb 文件中的任何宏,方法是从 AutoCAD 启动功能(如 acad.lsp)中通过
<OBJECT id=alink_VBARUN_CMD_390852 type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11><PARAM NAME="Width" VALUE="106"><PARAM NAME="Height" VALUE="53"><PARAM NAME="Command" VALUE=""></OBJECT>VBARUN 的命令行版本调用。例如,要自动运行名为 drawline 的宏,请先将 drawline 宏保存在 acad.dvb 文件中。然后调用 notepad.exe 并在 acad.lsp 中创建(或附加)下面几行:

<PRE class=prog_in_0>(defun S::STARTUP()
</PRE><PRE class=prog_in_0>   (command "_-vbarun" "drawline")
</PRE><PRE class=prog_in_end_0>)
</PRE>
<P class=body>将宏命名为 AcadStartup,这样在加载 VBA 时就会自动运行该宏。当加载 VBA 时,将自动执行 acad.dvb 文件中所有名为 AcadStartup 的宏。

LucasLynn 发表于 2005-7-1 17:35:00

不过这里要注意的是:文档里面提到ACADStartup宏可以自动运行,但是很容易忽略了一个前提“加载VBA时”,而ACAD在启动的时候并没有加载任何VBA(包括自动加载的ACAD.DVB),而是要到第一次调用和VBA相关的内容的时候(比方说调用一个宏或者打开VBA编辑环境)才会自动运行ACADStartup,所以如果想让ACAD启动自动运行,最好还是用ACAD.LSP的方法。

fanny_6 发表于 2005-7-1 17:55:00

发一个05的开发指南上来吧,我发现04的开发指南很难看懂

LucasLynn 发表于 2005-7-1 18:01:00

fanny_6发表于2005-7-1 17:55:00static/image/common/back.gif发一个05的开发指南上来吧,我发现04的开发指南很难看懂


<BR>应该差不多的吧,上面这篇就在


ActiveX 和 VBA 开发人员指南/使用VBA开发应用程序/自动运行VBA宏
页: [1] 2
查看完整版本: 请问怎样在CAD打开时加载子程序?