AutoCAD启动自动加载程序的研究

分享到|

来源:本网 | 作者:常青藤 | 发布日期:2012年05月16日

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 程序。

AutoCAD启动自动加载程序的研究相关推荐

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

    AuToCAD启动自定义加载程序研究(转) AuToCAD启动自定义加载程序研究(转) 2009年06月02日 星期二 下午 12:28 CAD文件加载顺序:       acad2006.lsp ( ...

  2. AuToCAD启动自定义加载程序研究

    CAD文件加载顺序: acad2006.lsp (AutoCAD使用) acad.rx (用户自定义的*.arx文件加载清单) 注:在CAD2006中,由错误提示怀疑:*.arx文件检测先于acad2 ...

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

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

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

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

  5. cad自动运行dvb lisp_AutoCAD自动加载程序方法 - CAD自学网

    CAD提供的二次开发接口大大扩展了CAD的功能,成为平时绘图中不可或缺的工具,也必须在启动时自动加载,CAD在这方面提供了许多的选择. 1.Lisp法 a.在ACAD.EXE所在目录加入acad.ls ...

  6. AutoCAD C# 自动加载自定义RibbonUI界面

    目录 实现效果: 开发环境: 开发流程: 打开Visual Studio ,创建 .NET FrameWork 类库项目 填写项目名称 "RibbonUI",选择.NET 版本为 ...

  7. ubuntu linux开机启动自动加载ko驱动程序_一文讲透 CentOS 开机流程

    一.Linux开机流程: BIOS: (Basic Input Output System)基本输入输出系统,它是一组固化到计算机内主板上一个ROM芯片 上的程序,保存着计算机最重要的基本输入输出的程 ...

  8. 让AutoCAD启动时自动加载应用程序

    方法一: 1. 在AutoCAD安装目录找到c:\Program Files\AutoCAD 2006\Support\acad2006.lsp 用记事本打开,在最后加入(下段代码第二行即可,注意路径 ...

  9. AutoCAD.net让AutoCAD启动时自动加载应用程序

    方法一: 1. 在AutoCAD安装目录找到c:\Program Files\AutoCAD 2006\Support\acad2006.lsp 用记事本打开,在最后加入(下段代码第二行即可,注意路径 ...

  10. 通过设置注册表使得启动ZWCAD时自动加载.net程序

    1. 运行regedit命令打开注册表. 2. 找到如下路径: [HKEY_LOCAL_MACHINE\SOFTWARE\ZWSOFT\ZWCAD\2014\en-US\Applications] 3 ...

最新文章

  1. vuejs基础玩法(基础知识,不喜勿喷!)
  2. #每日播报# 8月6日 Github 热门项目汇总
  3. CG CTF WEB 单身一百年也没用
  4. [渝粤教育] 中国地质大学 结构力学 复习题
  5. 双机热备、双机互备与 双机双工的区别
  6. Web前端---HTML+CSS+JS实现的圣诞抓礼物小游戏
  7. 【QT C++ TCP通信调试助手】
  8. 新能源车提车、上牌流程
  9. 新浪搜狐网易等那些老牌互联网公司现在都怎样了?
  10. Python - 安装sentencepiece异常
  11. 第九届蓝桥杯(国赛)——阅兵方阵
  12. 2019最新 《播布客鸟哥的Linux私房菜教程》
  13. 查看服务器支持的内存条,PowerEdge 服务器支持的内存配置指南
  14. 7-2 求奇数和 (5 分)
  15. 解决QT接受串口数据时数据更新不及时,串口数据太多导致程序界面崩溃,串口接收数据过快等问题
  16. C# Unsafe code may only appear if compiling with /unsafe
  17. 一 企业信息化战略和实施
  18. S5PV210串口通信详解
  19. 2021西门子比赛东北赛区一等奖WINCC画面
  20. 2020年T电梯修理答案解析及T电梯修理找答案

热门文章

  1. pc客户端软件自动化测试工具,PC客户端自动化测试工具--pywinauto
  2. SQL分页查询,SQL的LIMIT语句用法,SQL如何实现分页查询,SpringBoot实现分页查询。
  3. PDF在线阅读开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)【转】
  4. 安徽掀起新一轮大规模清房行动 官员急抛房产
  5. 信创终端违规外联案例分析及防控措施
  6. 安装Git SCM for Windows
  7. 网络编程技术-----windows网络编程
  8. 软件测试仓库管理信息系统,仓库管理系统测试报告
  9. linux如何导入种子文件格式,Linux下磁力链接种子文件下载
  10. 图书馆占座系统(五)