AuToCAD启动自定义加载程序研究.doc_第1页
AuToCAD启动自定义加载程序研究.doc_第2页
AuToCAD启动自定义加载程序研究.doc_第3页
AuToCAD启动自定义加载程序研究.doc_第4页
AuToCAD启动自定义加载程序研究.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AuToCAD启动自定义加载程序研究(转)默认分类 2010-03-24 13:19:18 阅读212 评论0 字号:大中小 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启动时自动加载程序的研究(二) 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或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。菜单:工具-加载应用程序,(或用命令:_APPLOAD)b。启动组:“内容”按钮,c。“添加”按钮等同于如下注册表操作:HKEY_CURRENT_USERSoftwareAutodeskAutoCADR16.2ACAD-4001:804ProfilesDialogsApploadStartupNumStartup=1 /启动组加载的项目数1Startup=C:Program FilesAutoCAD 2006222.lsp/数字1表示在cad中加载的顺序,后面是加载文件的路径。注意:a此方法在CAD2006以下版本中,只能加载lisp、VBA、arx等,不能加载dll。但可通过lisp间接加载dll。b此方法每次打开一个新的文档就会自动加载启动组中指定的文件。c(网友发言)加到启动组里面有时候不能加载,尤其是打开新图的时候。-3注册表法:(注意:检查LOADER的路径是否正确)在注册表加入如下项值:HKEY_LOCAL_MACHINESOFTWAREAutodeskAutoCADR16.2ACAD-4001:804ApplicationsmyMANAGED=dword:00000001LOADER=C:Program FilesAutoCAD 2006my.dllLOADCTRLS=dword:00000002DEION=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_MACHINESOFTWAREAutodeskAutoCADR16.2ACAD-4001:804ApplicationsmyCommandsStartmyApp=StartmyAppStartmyApp 是你程序中一个有效的命令。这样,你的程序就会在AutoCAD 启动时加载并初始化。你可以添加代码到程序的如下地方(VB.Net代码):Public Sub StartmyApp().End Sub然后在ACAD.LSP, ACAD.MNL, 或其他自动载入的文件里调用StartmyApp命令。优点:只要项键值不同就不会被覆盖,所以建议键名使用gid。-于CAD启动时自动加载程序的研究(四)4子进程法:将二次开发的程序做成EXE程序。启动该程序会自动启动CAD子进程,关闭程序时可以关闭CAD子进程。5ACAD.RX文件法:在AutoCAD 启动文件acad.rx 中指定待装入的ARX 应用程序名。acad.rx 是ASCII 文本文件,每个ARX 应用程序必须单独占一行,AutoCAD 启动时会自动装载该文件中的ARX 应用程序。另外,应确保ACAD 路径定义中包括文件acad.rx 的存放目录。6配置文件法:可以把自己配置的AUTOCAD启动时加载的东西,保存成一个的配置文件。然后在AUTOCAD启动快捷方式中用参数: /p 你的配置文件名。这样就可以在启动的时候加载自己的CAD环境。具体如下:菜单:工具-选项(或用命令:_OPTIONS),“配置”选项卡,选择配置文件后,点击“输出”。可以输出一个扩展名为arg的文本文件,保存到某个位置,然后再桌面上将cad 的快捷方式复制一个,右键属性,将目标中C:My ProgramsAuto CADacad.exe的后面加上/p d:/test/test.arg (注意:双引号,不是汉字的,而是英文的!)有些命令要求:将加载的文件的路径,加入搜索路径。方法如下:加入搜索路径:菜单:工具-选项,(或用命令:_OPTIONS)选中“支持文件搜索路径”,点“添加”,点“浏览”,选择要添加的路径,点“确定”。等同于如下注册表操作:注意需要先关闭CADHKEY_CURRENT_USERSoftwareAutodeskAutoCADR16.2ACAD-4001:804ProfilesGeneralACAD=C:Documents and Settings用户名Application DataAutodeskAutoCAD 2006R16.2chssupport;C:Program FilesAutoCAD 2006support;C:Program FilesAutoCAD 2006fonts;C:Program FilesAutoCAD 2006help;C:Program FilesAutoCAD 2006Express;C:Program FilesAutoCAD 2006supportcolor;C:Program FilesAutoCAD 2006myfile;注意:此法每次打开一个新的文档就会自动加载注册表中指定的文件。-关于CAD启动时自动加载程序的研究(五)附: CAD加载命令:appload (加载VBA,Arx,Lisp), netload(加载dll),arxload(加载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: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。 int ads_arxload(const char ArxAppName) 函数。在ADS 或ARX 程序里使用该函数可将一个ARX 模块装载到相应的ADS 或ARX 程序里。该函数的返回值表示装载结果。与该函数对应的AutoLISP 函数是(arxload)。用ads_arxload() 和acrxLoadModule() 装入一个ARX 应用程序的区别是:用ads_arxload() 装入的ARX 应用程序不仅注册成一个ADS 程序,同时还注册成一个ARX 程序。-关于CAD启动时自动加载程序的研究(六) 菜单的加载:AutoCAD启动时将自动加载默认的基本菜单文件“acad.mnu ”,其默认路径可在“工具选项文件工作支持文件搜索路径”中查看。其中,后缀为mnu的是原始 ASCII 菜单文件,mnc是已编译的菜单文件,mns是源菜单文件。AutoCAD启动时会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论