AuToCAD启动自定义加载程序研究(转)

AuToCAD启动自定义加载程序研究(转)

AuToCAD启动自定义加载程序研究(转)

2009年06月02日 星期二 下午 12:28

CAD文件加载顺序:       acad2006.lsp (AutoCAD使用)

       acad.rx (用户自定义的*.arx文件加载清单)

       注:在CAD2006中,由错误提示怀疑:*.arx文件检测先于acad2006.lsp加载。

       acad.lsp (用户自定义的Lsp自动加载程序)

       acad2006doc.lsp (AutoCAD使用)

      acetutil.fas (Express Tools初始化程序)

       acaddoc.lsp (用户自定义的Lsp自动加载程序)

       mymenu.mnc (用户自定义或第三方编译菜单文件)

      mymenu.mnl (用户自定义或第三方菜单文件)

      acad.mnc (AutoCAD编译菜单文件)

       acad.mnl (AutoCAD菜单文件)

     acetmain.mnc (Express Tools编译菜单文件)

      acetmain.mnl (Express Tools菜单)

      使用“对话框方式”加载的文件

      s::startup (自动执行函数,可用于自定义状态栏等)

 

注册表法加载顺序未知。

 

注意:

1.如果acad.lsp、acaddoc.lsp或MNL文件中包含自定义函数S::STARTUP,那么,创建新图形或打开现有图形时就会调用这个函数。因此,在 LISP启动文件中添加S::STARTUP函数定义,就可以执行全部所需的安装操作。如果需要关于“S::STARTUP”函数的详细信息,请参阅“AutoCAD 2000 Customization Guide”的第六章。

 

2.默认情况下,acad.lsp 仅在启动 AutoCAD 时加载一次,而 acaddoc.lsp 可随每个文档(或图形)一起加载。这样可使用户将加载 acad.lsp 文件和启动应用程序相关联,将 acaddoc.lsp 文件和文档或图形启动相关联。通过更改 ACADLSPASDOC 系统变量的设置,可以修改加载这些启动文件的默认方法。在CAD2006中,第一次新建图形时,也会出现对话框询问:acad.lsp是仅在启动 AutoCAD 时加载一次,还是随每个文档(或图形)一起加载。

 

 

不同位置的acad.lsp 和acaddoc.lsp按如下顺序加载:       CAD安装目录(即:acad.exe所在文件夹)

       “支持文件搜索路径”所包含的文件夹的逆序加载

      Dwg文件所在文件夹(打开Dwg文件时加载)

 

有关同名覆盖的问题:l         同名文件被最后加载的版本覆盖。

比如:你定义了一系列自己编制的lisp程序并放在acad.lsp文件中,但该acad.lsp放在CAD安装目录中。当“支持文件搜索路径”所包含的文件夹中,由于未知原因出现了一个与你自定义的acad.lsp文件不同的acad.lsp文件时, 你自定义的acad.lsp文件就不会被加载。解决的办法是将后加载的acad.lsp文件删除或用自己定义的acad.lsp替换放后加载的acad.lsp文件,或将自己定义的acad.lsp放在更靠后加载的目录中。

 

l         同名函数(或命令)被最后加载的版本覆盖。

知道AutoCAD 2000启动时各个文件加载的顺序,可能就会明白一个文件对另一个文件的影响。例如,已经在从acad.lsp文件加载的LISP程序中定义了一个函数,但是在启动AutoCAD 2000后,这个函数却不工作。这是因为acaddoc.lsp是在acad.lsp文件之后加载,此函数已经被acaddoc.lsp文件重新定义了。

 

l         加载的dll文件同名但dll里的函数不同名,dll不会相互覆盖。


---------------------------------------------------------------------------------------------------------------------
关于CAD启动时自动加载程序的研究(二) 
1.Lisp法:a.在ACAD.EXE所在目录加入acad.lsp或acaddoc.lsp

acad.lsp或acaddoc.lsp文件内容:

(defun S::STARTUP() ;函数名不可以改变

(command "_netload" "my.dll"); my.dll为相对路径也可用绝对路径
)

或:(load “1111.lsp”)在1111.lsp文件中调用my.dll。

 

b.修改AutoCAD 2006\Support\acad2006.lsp或cad2006doc.lsp文件,里面加入加载代码。(加载代码同上。)

 

c.修改你的菜单组对应的同名的MNL文件,里面加入加载代码。

MNL文件其实是一种与菜单同名,扩展名为MNL的LISP文件。它随同名菜单加载。

acad.mnl的位置:C:\Documents and Settings\用户名\Application Data\Autodesk
\AutoCAD 2006\R16.2\chs\Support\acad.mnl

缺点:

a.可能被其他第三方程序修改时覆盖。

b.如果使用acad.lsp,新建文档时出现:“是否读入每个图形时都加载“acad.lsp”的提示。

2.对话框方式: a。菜单:工具->加载应用程序,(或用命令:_APPLOAD)
b。启动组:“内容”按钮,
c。“添加”按钮

等同于如下注册表操作:[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Profiles\<<未命名配置>>\Dialogs\Appload\Startup]

"NumStartup"="1"   //启动组加载的项目数
"1Startup"="C:\\Program Files\\AutoCAD 2006\\222.lsp"

//数字1表示在cad中加载的顺序,后面是加载文件的路径。

注意:

a.此方法在CAD2006以下版本中,只能加载lisp、VBA、arx等,不能加载dll。但可通过lisp间接加载dll。

b.此方法每次打开一个新的文档就会自动加载启动组中指定的文件。

c.(网友发言)加到启动组里面有时候不能加载,尤其是打开新图的时候。

 

--------------------------------------------------------------------------------------------------------------------
3.注册表法:(注意:检查LOADER的路径是否正确)

在注册表加入如下项值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Applications\my]

"MANAGED"=dword:00000001

"LOADER"="C:\\Program Files\\AutoCAD 2006\\my.dll"

"LOADCTRLS"=dword:00000002

"DEION"="my"


说明:
a. 非托管的ARX程序是指用C++编译的以.arx为后缀的动态链接库文件;托管的ARX程序是指由.net程序(C#,C++.net或VB.net)编译的以.dll为后缀的动态链接库文件。托管的程序和非托管的程序相比,只要多创建一个“MANAGED”键,并设为Ox01,告诉CAD这是托管程序即可。VBA,lisp的注册表加载法参见“2. 对话框方式”。

 

b. 注册表键值"LOADCTRLS"控制说明,控制ARX程序的加载方式

0x01:Load the application upon detection of proxy object.
   当代理对像被控知时另载相应ARX程序.

0x02:Load the application upon AutoCAD startup.
   当AutoCAD启动时加载相应ARX程序.

0x04:Load the application upon invocation of a command.
   当输入命令时加载相应ARX程序.

0x08:Load the application upon request by the user or another application.
   当有用户或别的程序请求时加载相应ARX程序.

0x10:Do not load the application.
   从不加载该应用程序.

0x20:Load the application transparently.
   显式加载该应该程序.(不知该项译法是否有误)

 

c. 当my。dll中有命令时,还需要添加一个子键:

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Applications\my\Commands]

"StartmyApp"="StartmyApp"

-StartmyApp 是你程序中一个有效的命令。

 

这样,你的程序就会在AutoCAD 启动时加载并初始化。你可以添加代码到程序的如下地方(VB.Net代码):

Public Sub StartmyApp()

.....

End Sub

 

然后在ACAD.LSP, ACAD.MNL, 或其他自动载入的文件里调用StartmyApp命令。

 

优点:只要项键值不同就不会被覆盖,所以建议键名使用gid。

 


---------------------------------------------------------------------------------------------------------------------
于CAD启动时自动加载程序的研究(四)
4.子进程法:将二次开发的程序做成EXE程序。启动该程序会自动启动CAD子进程,关闭程序时可以关闭CAD子进程。

 

5.ACAD.RX文件法:在AutoCAD 启动文件acad.rx 中指定待装入的ARX 应用程序名。acad.rx 是ASCII 文本文件,每个ARX 应用程序必须单独占一行,AutoCAD 启动时会自动装载该文件中的ARX 应用程序。另外,应确保$ACAD 路径定义中包括文件acad.rx 的存放目录。

 

6.配置文件法:可以把自己配置的AUTOCAD启动时加载的东西,保存成一个的配置文件。然后在AUTOCAD启动快捷方式中用参数: /p 你的配置文件名。这样就可以在启动的时候加载自己的CAD环境。


具体如下:菜单:工具--选项(或用命令:_OPTIONS),“配置”选项卡,选择配置文件后,点击“输出”。可以输出一个扩展名为arg的文本文件,保存到某个位置,然后再桌面上将cad 的快捷方式复制一个,右键属性,将目标中"C:\\My Programs\\Auto CAD\\acad.exe"的后面加上/p "d:/test/test.

cad经典LSP文件,各种应用实例 如果您使用 AutoCAD,下面的内容对您一定有帮助。在某些方面能大大提高 您的工作效率。下面的程序均以源程序方式给出,您可以使用、参考、修改它。 bg.lsp --- 表格自动生成 asc.lsp --- 将文本文件内容写入图,字符是单个的 wf.lsp --- 将图字符写入磁盘 exstr.lsp --- 将字符串分解成单字 pgtxt.lsp --- 将字符合成字符串 pb.lsp --- 通过给出长度将字符串分成两个串 cht.lsp --- 直接修改文字内容或块属性 ct.lsp --- 对数字串进行加减 chh.lsp --- 直接修改文字高度 chhw.lsp --- 直接修改文字高宽比(针对PKPM软件将字符定位点改为左下角) chst.lsp --- 直接修改文字字体 txt.shx --- 修改后的标准txt.shx文件。(kuozhan.sld为增强的内容幻灯片) tiao.lsp --- 配合修改过的标准字体文件,将文字符调大 tiao1.lsp --- 配合修改过的标准字体文件,将英文字符调小 untiao.lsp --- 上两个程序的复原 sht.lsp --- 在图查找字符串 zhuang.lsp --- 桩点及钎探号绘制(勘测图) dim.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:1) dimm.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:100) di1.lsp~di8.lsp --- 直接连续标注尺寸(用于1:1的图) di100.lsp~di800.lsp --- 直接连续标注尺寸(用于1:100的图)   brk.lsp --- 将一线条在与其它线条相交处断开 peditx.lsp --- 成批修改线条的线宽 ex.lsp --- 分别或一起或通过层来炸开块、尺寸标注及PLINE线 chcr.lsp --- 修改园和园弧的半径 lay.lsp --- 通过点取层上一实体来实现层操作:删除/解冻/冻结 bg0.lsp --- 直接将正负零标注在图纸(建筑结构图用) bg1.lsp~bg4.lsp --- 标注各种标高 hu.lsp --- 直接给出园弧长度 jdx.lsp --- 截断线 jdx2.lsp --- 双截断线 bdgj.lsp --- 板底钢筋(土建结构图用) bdgj1.lsp,bdgj2.lsp --- 板顶钢筋(土建结构图用) dk1.lsp~dk8.lsp --- 配合PKPM软件生成的图绘洞口(基础留洞) gl1.lsp~gl8.lsp --- 配合PKPM软件生成的图绘过梁(结构平面图) gzz.lsp --- 构造柱绘制 ACAD.LIN --- 增强的线型文件, 扩充线型(线型比例为1)如下: XX -- 虚线(用于1:1的图) DHX -- 点划线(用于1:1的图) XX100 -- 虚线(用于1:100的图) DHX100 -- 点划线(用于1:100的图) ACAD.LSP --- 增强的ACAD启动文件, 命令扩展如下: CHXX -- 将线型改为虚线(用于1:1的图) CHDHX -- 将线型改为点划线(用于1:1的图) CHXX100 -- 将线型改为虚线(用于1:100的图) CHDHX100 -- 将线型改为点划线(用于1:100的图) CHCON -- 将线型改为连续线 CHC -- 直接修改实体的颜色 其余详见ACAD.LSP的内容。ACAD的命令缩写根据其使用的频率作了调整。 V -- 先执行ZOOM E, 再将当前视图存储,并调用ZOOM W 此命令主要为"超级视图"做准备,"超级视图"妙处一用便知 ! 建议使用显 示卡自带的AutoCAD显示驱动 增强后的ACAD.LSP能在状态行上显示当前文件名 ACAD.MNU的改进: 调整了光标菜单(共两页),并将最常用的捕捉方式定义 在组合光标键上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值