鲁班人[ Ben's Blog]

-专注于建筑钢结构技术的发展与应用

« 大话设计人AUGIWorld 杂志 »

让ARX程序随CAD一起启动的方法

写在开头:
关于ARX程序的加载问题已经困扰我很久了,前段时间二次开发版的老大aliu22介绍了一种方法,不过觉得有点儿麻烦,而且对于托管的程序,必须通过lisp或者.arx程序间接加载,速度有所影响。通过研读ObjectARX自带的帮助文档,今天终于找到了比较快速的实现方法,(有点儿兴奋^_^),分享给大家。

非托管的ARX程序的加载

  非托管的ARX程序是指用C++编译的以.arx为后缀的动态链接库文件,实现方法很简单,只需在注册表中加入以下信息(示例):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Applications\LubanRen]
"LOADCTRLS"=dword:00000002
"LOADER"="D:\\LubanRen Soft\\鲁班人工具箱\\LubanRen.arx"


说明:在Applications项下创建一个以自己程序名命名的新项(如:LubanRen),然后在此新项下创建两个新键:"LOADCTRLS"和"LOADER"。它们一个是控制程序随CAD加载的方式,另一个是告诉CAD所要加载的程序的路径。

托管的ARX程序的加载

  托管的ARX程序是指由.net程序(C#,C++.net或VB.net)编译的以.dll为后缀的动态链接库文件,这种程序的加载和非托管的程序加载类似,在注册表中加入以下信息:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Applications\LubanRen]
"LOADCTRLS"=dword:00000002
"LOADER"="D:\\LubanRen Soft\\鲁班人工具箱\\LubanRen.dll"
"MANAGED"=dword:00000001


说明:和非托管的程序相比,只要多创建一个“MANAGED”键,并设为Ox01,告诉CAD这是托管程序即可。

  有兴趣的朋友,试试吧,enjoy it...

-------------------------
附注:注册表键值"LoADCTRLS"控制说明,控制ARX程序的加载方式(上例中使用的是Ox02随CAD启动一起加载)

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.
   显式加载该应该程序.(不知该项译法是否有误)
  • quote 2.ben
  • 回Keith兄:

    你说的那种方法,属于其中一种,好像只能实现在CAD启动时进行加载,我这里说的方法按帮助里的解释叫Demand Loading(偶译作:安需加载),修改相应键值后,可以实现输入新的命令时才加载相应的程序等,相对来说可控制性较强。我仔细看了一下注册表,CAD里好多自带的模块都是采用这种方式。

    P.s谢谢你的回复,多多交流地说Big smile
  • 2006-3-30 16:37:44 回复该留言
  • quote 3.Keith
  • http://www.wingback.cn/
  • 不错...刚也看了下注册表。docs里面搜索了一下,发现"LOADCTRLS"项是defines the conditions under which the application should be loaded。但就是找不到具体不同的值代表什么条件了,看了注册表自己的,好像它的LOADCTRLS很多不同的。
  • 2006-3-30 19:30:37 回复该留言
  • quote 6.ben
  • http://www.lubanren.com/weblog/
  • spring老大:
    呵呵,多多交流,我一直用你的软件,功能和易用性方面都很欣赏,不知用的什么语言和开发工具?这方面得多像你学习才是:)
  • 2006-4-22 21:09:46 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense

Copyright 2002-2008 Ben’s Weblog™. Some Rights Reserved.