收藏 分享(赏)

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

上传人:yjrm16270 文档编号:7865014 上传时间:2019-05-28 格式:DOC 页数:5 大小:50KB
下载 相关 举报
AuToCAD启动自定义加载程序研究.doc_第1页
第1页 / 共5页
AuToCAD启动自定义加载程序研究.doc_第2页
第2页 / 共5页
AuToCAD启动自定义加载程序研究.doc_第3页
第3页 / 共5页
AuToCAD启动自定义加载程序研究.doc_第4页
第4页 / 共5页
AuToCAD启动自定义加载程序研究.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、AutoCAD 启动自定义加载程序研究转自 http:/ 文件加载顺序: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

2、(用户自定义或第三方菜单文件)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 函数定义,就可以执

3、行全部所需的安装操作。如果需要关于“S:STARTUP”函数的详细信息,请参阅“AutoCAD 2000 Customization Guide”的第六章。2默认情况下,acad.lsp 仅在启动 AutoCAD 时加载一次,而 acaddoc.lsp 可随每个文档(或图形)一起加载。这样可使用户将加载 acad.lsp 文件和启动应用程序相关联,将 acaddoc.lsp 文件和文档或图形启动相关联。通过更改 ACADLSPASDOC 系统变量的设置,可以修改加载这些启动文件的默认方法。在 CAD2006 中,第一次新建图形时,也会出现对话框询问:acad.lsp 是仅在启动 AutoCAD

4、 时加载一次,还是随每个文档(或图形)一起加载。不同位置的 acad.lsp 和 acaddoc.lsp 按如下顺序加载:CAD 安装目录(即:acad.exe 所在文件夹)“支持文件搜索路径 ”所包含的文件夹的逆序加载Dwg 文件所在文件夹(打开 Dwg 文件时加载)有关同名覆盖的问题:l同名文件被最后加载的版本覆盖。比如:你定义了一系列自己编制的 lisp 程序并放在 acad.lsp 文件中,但该 acad.lsp 放在CAD 安装目录中。当“支持文件搜索路径”所包含的文件夹中,由于未知原因出现了一个与你自定义的 acad.lsp 文件不同的 acad.lsp 文件时, 你自定义的 ac

5、ad.lsp 文件就不会被加载。解决的办法是将后加载的 acad.lsp 文件删除或用自己定义的 acad.lsp 替换放后加载的 acad.lsp文件,或将自己定义的 acad.lsp 放在更靠后加载的目录中。2同名函数(或命令)被最后加载的版本覆盖。知道 AutoCAD 2000 启动时各个文件加载的顺序,可能就会明白一个文件对另一个文件的影响。例如,已经在从 acad.lsp 文件加载的 LISP 程序中定义了一个函数,但是在启动AutoCAD 2000 后,这个函数却不工作。这是因为 acaddoc.lsp 是在 acad.lsp 文件之后加载,此函数已经被 acaddoc.lsp 文

6、件重新定义了。3加载的 dll 文件同名但 dll 里的函数不同名,dll 不会相互覆盖。关于 CAD 启动时自动加载程序的研究1Lisp 法:a在 ACAD.EXE 所在目录加入 acad.lsp 或 acaddoc.lspacad.lsp 或 acaddoc.lsp 文件内容:(defun S:STARTUP() ;函数名不可以改变(command “_netload“ “my.dll“); my.dll 为相对路径也可用绝对路径)或:(load “1111.lsp” )在 1111.lsp 文件中调用 my.dll。b修改 AutoCAD 2006Supportacad2006.lsp

7、或 cad2006doc.lsp 文件,里面加入加载代码。(加载代码同上。 )c修改你的菜单组对应的同名的 MNL 文件,里面加入加载代码。MNL 文件其实是一种与菜单同名,扩展名为 MNL 的 LISP 文件。它随同名菜单加载。acad.mnl 的位置: C:Documents and Settings用户名Application DataAutodeskAutoCAD 2006R16.2chsSupportacad.mnl缺点:a可能被其他第三方程序修改时覆盖。b如果使用 acad.lsp,新建文档时出现:“是否读入每个图形时都加载 “acad.lsp”的提示。2对话框方式:a菜单:工具

8、-加载应用程序, (或用命令:_APPLOAD)b启动组:“ 内容” 按钮,c “添加”按钮等同于如下注册表操作:HKEY_CURRENT_USERSoftwareAutodeskAutoCADR16.2ACAD-4001:804ProfilesDialogsApploadStartup“NumStartup“=“1“ /启动组加载的项目数“1Startup“=“C:Program FilesAutoCAD 2006222.lsp“/数字 1 表示在 cad 中加载的顺序,后面是加载文件的路径。注意:a此方法在 CAD2006 以下版本中,只能加载 lisp、VBA、arx 等,不能加载 dl

9、l。但可通过lisp 间接加载 dll。b此方法每次打开一个新的文档就会自动加载启动组中指定的文件。c (网友发言)加到启动组里面有时候不能加载,尤其是打开新图的时候。3注册表法:(注意:检查 LOADER 的路径是否正确)在注册表加入如下项值:HKEY_LOCAL_MACHINESOFTWAREAutodeskAutoCADR16.2ACAD-4001:804Applicationsmy“MANAGED“=dword:00000001“LOADER“=“C:Program FilesAutoCAD 2006my.dll“LOADCTRLS“=dword:00000002“DEION“=“my

10、“说明: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.当代理对像被控知时另载相

11、应 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:

12、Load the application transparently.显式加载该应该程序.(不知该项译法是否有误)c. 当 my。dll 中有命令时,还需要添加一个子键:HKEY_LOCAL_MACHINESOFTWAREAutodeskAutoCADR16.2ACAD-4001:804ApplicationsmyCommands“StartmyApp“=“StartmyApp“StartmyApp 是你程序中一个有效的命令。这样,你的程序就会在 AutoCAD 启动时加载并初始化。你可以添加代码到程序的如下地方(VB.Net 代码):Public Sub StartmyApp().End S

13、ub然后在 ACAD.LSP, ACAD.MNL, 或其他自动载入的文件里调用 StartmyApp 命令。优点:只要项键值不同就不会被覆盖,所以建议键名使用 gid。4子进程法:将二次开发的程序做成 EXE 程序。启动该程序会自动启动 CAD 子进程,关闭程序时可以关闭 CAD 子进程。5ACAD.RX 文件法:在 AutoCAD 启动文件 acad.rx 中指定待装入的 ARX 应用程序名。acad.rx 是 ASCII 文本文件,每个 ARX 应用程序必须单独占一行, AutoCAD 启动时会自动装载该文件中的 ARX 应用程序。另外,应确保ACAD 路径定义中包括文件 acad.rx

14、的存放目录。6配置文件法:可以把自己配置的 AUTOCAD 启动时加载的东西,保存成一个的配置文件。然后在 AUTOCAD 启动快捷方式中用参数: /p 你的配置文件名。这样就可以在启动的时候加载自己的 CAD 环境。具体如下:菜单:工具-选项(或用命令:_OPTIONS) , “配置” 选项卡,选择配置文件后,点击“输出 ”。可以输出一个扩展名为 arg 的文本文件,保存到某个位置,然后再桌面上将 cad 的快捷方式复制一个,右键属性,将目标中“C:My ProgramsAuto CADacad.exe“的后面加上/p “d:/test/test.arg“ (注意:双引号,不是汉字的,而是英

15、文的!)有些命令要求:将加载的文件的路径,加入搜索路径。方法如下:加入搜索路径:菜单:工具-选项, (或用命令:_OPTIONS)选中“支持文件搜索路径 ”,点“添加”,点“浏览” ,选择要添加的路径,点“ 确定”。等同于如下注册表操作:注意需要先关闭 CADHKEY_CURRENT_USERSoftwareAutodeskAutoCADR16.2ACAD-4001:804ProfilesGeneral“ACAD“=“C:Documents and Settings用户名Application DataAutodeskAutoCAD 2006R16.2chssupport;C:Program

16、FilesAutoCAD 2006support;C:Program FilesAutoCAD 2006fonts;C:Program FilesAutoCAD 2006help;C:Program FilesAutoCAD 2006Express;C:Program FilesAutoCAD 2006supportcolor;C:Program FilesAutoCAD 2006myfile;“ 注意:此法每次打开一个新的文档就会自动加载注册表中指定的文件。附: CAD 加载命令:appload (加载 VBA,Arx ,Lisp) , netload(加载 dll) ,arxload(加载

17、 Arx) ,load(加载 Lisp) ,autoload (加载 Lisp) ,autoarxload(加载 Arx)加载二次开发线程的方法:loadDVB(加载 VBA 的方法)和 loadARX(加载 ARX 的方法)用 acrxLoadModule() 或 AcRxDynamicLinker:loadModule() 函数,在一个 ARX 应用程序里装载另一个 ARX 应用程序。这两个函数的原型是:- int acrxLoadModule(char moduleName, int printit);- virtual Adesk:Boolean AcRxDynamicLinker:l

18、oadModule (char fileName, int printIt) = 0;- 其中各参数含义如下:- moduleName:待装载的 ARX 应用程序名;ARX 应用程序扩展名默认为.ARX,如果不是.ARX,则此处 char moduleName 参数必须包括应用程序扩展名。- fileName:含义与上述 moduleName 相同。但是 fileName 必须包括待装载的 ARX 应用程序的路径和扩展名。- printit:取 0 则不显示装载结果,取非 0 值则显示。当 printit 取非 0 值时,如装载成功,则在 AutoCAD 命令窗口显示“Runtime Exte

19、nsion is already loaded.“,否则,显示“AcRxDynamicLinker failed to load “。- acrxLoadModule() 与 AcRxDynamicLinker:loadModule 不同的是:acrxLoadModule() 从ACAD 定义的 AutoCAD 搜索路径自动搜索待装载的 ARX 应用程序,并默认 ARX 应用程序扩展名为.ARX。int ads_arxload(const char ArxAppName) 函数。在 ADS 或 ARX 程序里使用该函数可将一个 ARX 模块装载到相应的 ADS 或 ARX 程序里。该函数的返回

20、值表示装载结果。与该函数对应的 AutoLISP 函数是(arxload)。用 ads_arxload() 和 acrxLoadModule() 装入一个 ARX 应用程序的区别是:用 ads_arxload() 装入的 ARX 应用程序不仅注册成一个 ADS 程序,同时还注册成一个 ARX 程序。菜单的加载:AutoCAD 启动时将自动加载默认的基本菜单文件“acad.mnu ”,其默认路径可在“工具选项文件工作支持文件搜索路径”中查看。其中,后缀为 mnu 的是原始 ASCII 菜单文件,mnc 是已编译的菜单文件,mns 是源菜单文件。AutoCAD 启动时会在默认路径中按 mnsmnc

21、mnu 的顺序依次查找,找到任何一类文件都可生成 mnc 文件并加载。如这些文件均未找到,将弹出上述信息窗口。按“确定” 进入AutoCAD 后工具栏就丢失了,而且相应菜单中没有恢复工具栏的功能。但此时命令行还可以使用,只需要输入“menu”命令,就会弹出一个“选择菜单文件”窗口,找到上述任何一类菜单文件打开即可恢复工具栏。如果文件损坏或被删除,可以从其它 AutoCAD 运行正常的计算机上拷贝一个菜单文件按同样的方法加载。当然还可以把可正常使用的菜单文件拷贝到默认路径下,这样 AutoCAD 将自动加载而不用我们手动设置,此时可用“options”命令进入“ 选项”窗口查看默认路径。在加载自

22、定义菜单时,如果通过 MENU 加载,就会把 acad.cui 赶跑了。如果想保留acad.cui(CAD 默认菜单) ,应该用 MENULOAD 来加载(局部加载) ,这样两个菜单都在,如果不用了,也可以通过这个命令来卸载。用了之后如果不卸载,退出 cad 之后下次启动还会加载自定义菜单。怎样在 Auto CAD 2006 加载自定义菜单文件?问题:我想在 Auto CAD 2006 加载自定义菜单文件,不改变 acad.cui 的原有菜单只是在其后加一栏菜单(在“ 帮助“菜单 POP12 后加“自定义“ 菜单 POP13)回答:你可以用写字板程序打开 acad.MNU 文件,然后按照其格式把 POP13 的内容写进去,存盘后,重新启动 ACAD 就行了。如果还不行,就在启动 ACAD 后键入命令 MENU,然后根据提示选择 ACAD.MNU。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报