CAD提供的二次开发接口大大扩展了CAD的功能,成为平时绘图中不可或缺的工具,也必须在启动时自动加载,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。

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.arg" (注意:双引号,不是汉字的,而是英文的!)

有些命令要求:将加载的文件的路径,加入搜索路径。方法如下:

加入搜索路径:

菜单:工具->选项,(或用命令:_OPTIONS)

选中“支持文件搜索路径”,点“添加”,点“浏览”,选择要添加的路径,点“确定”。

同于如下注册表操作:

注意需要先关闭CAD

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Profiles\<>\General]

"ACAD"="C:\\Documents and Settings\\用户名\\Application Data\\Autodesk\\AutoCAD 2006\\R16.2\\chs\\support;C:\\Program Files\\AutoCAD 2006\\support;C:\\Program Files\\AutoCAD 2006\\fonts;C:\\Program Files\\AutoCAD 2006\\help;C:\\Program Files\\AutoCAD 2006\\Express;C:\\Program Files\\AutoCAD 2006\\support\\color;C:\\Program Files\\AutoCAD 2006\\myfile;"

注意:此法每次打开一个新的文档就会自动加载注册表中指定的文件。

附:

u       CAD加载命令:appload (加载VBA,Arx,Lisp), netload(加载dll),arxload(加载Arx),load(加载Lisp),autoload(加载Lisp),autoarxload(加载Arx)

u       加载二次开发线程的方法:loadDVB(加载VBA的方法)和loadARX(加载ARX的方法)

u       用acrxLoadModule() 或AcRxDynamicLinker::loadModule() 函数,在一个ARX 应用程序里装载另一个ARX 应用程序。这两个函数的原型是:

---- int acrxLoadModule(char * moduleName, int printit);

---- virtual Adesk::Boolean AcRxDynamicLinker::loadModule (char * fileName, int printIt) = 0;

---- 其中各参数含义如下:

---- moduleName:待装载的ARX 应用程序名;ARX 应用程序扩展名默认为.ARX,如果不是.ARX,则此处char * moduleName 参数必须包括应用程序扩展名。

---- fileName:含义与上述moduleName 相同。但是fileName 必须包括待装载的ARX 应用程序的路径和扩展名。

---- printit:取0 则不显示装载结果,取非0 值则显示。当printit 取非0 值时,如装载成功,则在AutoCAD 命令窗口显示“Runtime Extension is already loaded.\",否则,显示“AcRxDynamicLinker failed to load \"。

---- acrxLoadModule() 与AcRxDynamicLinker::loadModule 不同的是:acrxLoadModule() 从$ACAD 定义的AutoCAD 搜索路径自动搜索待装载的ARX 应用程序,并默认ARX 应用程序扩展名为.ARX。

u       int ads_arxload(const char *ArxAppName) 函数。在ADS 或ARX 程序里使用

该函数可将一个ARX 模块装载到相应的ADS 或ARX 程序里。该函数的返回值表示装载结果。与该函数对应的AutoLISP 函数是(arxload)。

---- 用ads_arxload() 和acrxLoadModule() 装入一个ARX 应用程序的区别是:用ads_arxload() 装入的ARX 应用程序不仅注册成一个ADS 程序,同时还注册成一个ARX 程序。

cad自动运行dvb lisp_AutoCAD自动加载程序方法 - CAD自学网相关推荐

  1. cad自动运行dvb lisp_CAD自动加载程序6大方法

    原标题:CAD自动加载程序6大方法 CAD提供的二次开发接口大大扩展了CAD的功能,成为平时绘图中不可或缺的工具,也必须在启动时自动加载,CAD在这方面提供了许多的选择. 1.Lisp法 a.在ACA ...

  2. cad自动运行dvb lisp_CAD二次开发程序的自动加载与使用

    常见的CAD二次开发程序有dvb.vlx.fas.lsp.arx和dll.在CAD中加载这几种程序之前,需要知道程序内部包括的命令,否则你加载完成了用不了. 在CAD命令窗口中输入"appl ...

  3. Autocad、中望CAD自动加载程序研究(注册表法、acad.rx、acaddoc.lsp或acad.lsp)

    Autocad.中望CAD自动加载程序研究(注册表法.acad.rx.acaddoc.lsp或acad.lsp) 一.使用注册表 假设你的arx文件名字是aaa.arx绝对路径是c:\aaa.arx ...

  4. Windows自动恢复报错:无法加载操作系统,原因是关键系统驱动程序丢失或包含错误

    Windows自动恢复报错:无法加载操作系统,原因是关键系统驱动程序丢失或包含错误 1. 问题 无法加载操作系统,原因是关键系统驱动程序丢失或包含错误 上午因为有点事就没有像往常一样打开电脑,下午回到 ...

  5. CAD调试时抛出“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”异常的解决方法...

    这些天重装了电脑Win10系统,安装了CAD2012和VS2012,准备进行软件开发.在调试程序的时候,CAD没有进入界面就抛出 "正试图在 os 加载程序锁内执行托管代码.不要尝试在 Dl ...

  6. 一加3t运行linux,【漏洞分析】获取已锁定的OnePlus 3/3T:引导加载程序漏洞

    翻译:胖胖秦 预估稿费:120RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 前言 在这篇博文中,我公开了OnePlus 3/3T引导加载程序中的两个漏洞.第一个CVE- ...

  7. 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码......

    当我在窗体初始化的时候,调用了一个外部的dill时,它就不知什么原因的 抛出一个"正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码&quo ...

  8. 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案

    [走过巨坑]android studio对于jni调用及运行闪退无法加载库的问题解决方案 参考文章: (1)[走过巨坑]android studio对于jni调用及运行闪退无法加载库的问题解决方案 ( ...

  9. 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码...

    在窗体初始化的时候,调用了一个外部的dll,不知什么原因的 抛出一个"正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码"的异常, ...

最新文章

  1. hash是线程安全的吗?怎么解决?_这次进程、线程、多线程和线程安全问题,一次性帮你全解决了...
  2. 盘点丨春节假期里你错过的人工智能重要新闻
  3. 13-计算最长英语单词链
  4. 基于Linux的socket编程模板
  5. Android(六)——Android第一周学习
  6. 多路 IO 转接 :select 函数
  7. c++ setstate() 和 clear() 函数
  8. day15 webUI自动化
  9. 马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别
  10. 【75位联合作者Nature重磅】AI药神:机器学习模型有望提前五年预测白血病!
  11. python中goto如何使用,基于python goto的正确用法说明
  12. xshell 端口转发
  13. python实现打飞机小游戏
  14. 如何在网上下载自己需要的资源
  15. python植物大战僵尸脚本_用Python实现植物大战僵尸游戏,很酷
  16. java动态生成pdf 合并两个pdf文件功能三
  17. ArcGIS问题:dbf shp shx sbn sbx mdb adf等类型的文件的解释
  18. 国产最低功耗MCU使用分析
  19. 梦之光芒/黑客小游戏
  20. Mac每次打开PPT都会出现End窗口

热门文章

  1. 【最重要的代码规范】做人做事必须坚守这些原则!
  2. 读书笔记 | 张五常 经济解释 (卷二) 供应的行为
  3. 食品计算机视觉检测技术,餐食热量一“拍”便知,科学家研发计算机视觉估算卡路里方法...
  4. linux下查看bios命令,Linux查看BIOS版本/信息详情
  5. summary of 马维尔
  6. WPF简易局部地图 实现标记 绘制轨迹
  7. 注册商标流程,商标注册需要材料
  8. sudo 执行报错centos is not in the sudoers file. This incident will be reported.
  9. Android FM模块学习之四源码解析(一)
  10. flash和js通过什么类如何交互