ObjectARX(精选4篇)
ObjectARX 篇1
摘要:介绍了利用Install shield制作ObjectARX安装程序的方法, 并阐述了在制作ObjectARX程序时所要解决的主要问题。
关键词:ObjectARX,InstallShield,安装程序
前言
Object ARX是Auto CAD二次开发工具之一, 同其他开发工具相比, 它运行效率高, 功能强大, 稳定性高, 速度更快。许多大型应用开发程序以Object ARX作为编程工具, 而ARX程序事实上是一个动态链接库, 只有正确加载后才可执行。事实上, 目前开发的Object ARX应用程序常常不仅只有一个ARX程序, 还要涉及到其他的一些文件:比如菜单文件、数据库文件、线型文件、字体文件、图形文件、帮助文件等等, 而这些文件在ARX程序调用的过程中, 如果不能把这些文件放到一个正确的位置, ARX程序就不能正确地调用这些文件, 也就不能正确的工作。
为了可靠、完整地交付应用程序, 使用户能够轻松地使用ARX程序, 就需要制作安装程序, 在制作安装程序的过程中把二次开发出的.arx文件与acad.exe文件链接在一起, 同时形成自己的菜单文件、数据库以及其它文件访问的路径;并且实现了二次开发软件的图标与“Auto CAD”的图标分离, 点击不同的图标响应不同的界面, 利用Install Shield可以方便地完成此项工作。
以Object ARX所开发的凸轮机构CAD系统为例来介绍如何使用Install Shield来制作安装程序。
1制作安装所需要完成的准备工作
在制作安装程序之前, 还需要做以下两项准备工作:
第一:制作一个自动加载菜单的文件acad-doc.lsp
在启动Auto CAD时, 我们需要自动加载用户自己菜单, 这样便可以和Auto CAD的标准菜单相区别。acaddoc.lsp是一个用户自定义的lsp自动加载程序, 这个程序可随每个图形或每个文档进行加载。比如菜单文件为My Cam.mnu, 要自动加载这个菜单, 程序如下:
(defun acc ()
(setvar"cmdecho"0)
(if (not (menugroup"My Cam") )
(if (findfile"My Cam.mnu")
(progn
(setvar"filedia"0)
(command"menuload""My Cam")
(setvar"filedia")
)
(princ"安装不正确, 未找到菜单文件, 可能是由于安装在其它目录下")
)
)
(setvar"cmdecho"1)
(princ)
)
(acc)
第二:制作一个arx程序自动加载的文件acad.rx。
为了在启动系统时自动加载凸轮机构CAD系统My CSCM.arx, 我们制作acad.rx文件。acad.rx文件是Auto CAD启动文件, 用来指定待装入的ARX应用程序。acad.rx是ASCII文本文件, 每个ARX应用程序必须单独占一行。比如写入的是:My CSCM.arx。
2利用Install Shield制作安装程序
我们制作的这个安装程序主要完成以下工作:
(1) 首先获得所在机器Auto CAD系统的安装路径;
(2) 创建一个预先命名的子目录, 将所有二次开发形成的种类文件拷入;
(3) 创建一个快捷方式, 并设置其起始位置为我预先命名的子目录。其目录是检测到acad.exe的路径;
(4) 卸载程序 (Install Shiled可自动帮助完成) 。
利用Install Shield制作一个安装程序, 一般都是按照以下的步骤进行:
(1) 建立工程文件。工程文件建成后, 系统会自动生成一个setup.rul脚本。
这里, 首先创建了一个CSCM1.0的工程文件。
(2) 在资源中填写应用程序名、安装主题和手工设置注册表等。
这里主要来创建桌面或开始菜单创建快捷方式, Shell对象其中的Desktop、Start Menu、Programs和Startup项分别对应于操作系统的桌面、开始菜单、程序和启动。可以在相应的项目下添加相应的文件夹或快捷方式。添加完其快捷方式后, 我们可通过右侧窗口设置其属性。其中Target栏为快捷方式的链接路径, 这里
(3) 在部件中添加所包含的文件组和目录。
这一部分, 主要是为用户提供各种安装形式, 比如典型安装、简单安装、完全安装等等。对于不同的安装形式我们可以选择不同的文件组组合。
(4) 在文件组中链接文件和添加目录 (见图2) 。
(5) 在setup.rul脚本文件中添加自己的代码。主要实现创立、修改初始文件和注册表的功能, 实现具体的安装需求。
这里主要介绍如何检查机器上是否装有Auto CAD2007, 如果装有, 则继续安装, 否则就会停止安装并提示用户首先安装Auto CAD2007再安装本系统。
.......
sz Key="Soft WareAutodeskAuto CADR17.0
ACAD-5001:804";
.......
if (Reg DBKey Exist (sz Key) <0) then
Message Box ("安装程序未发现Auto-CAD2007, 即将退出!n"+"请先安装AutoCAD2007, 再安装CSCM1.0", SEVERE) ;
abort;
else
if (Reg DBGet Key Value Ex (sz Key, sz KeyName, nv Type, sz Auto CADPath, n Size) <0) then
Message Box ("安装程序发现未安装Auto CAD2007", INFORMATION) ;
abort;
else
SRCDIR=sz Auto CADPath;
endif;
endif;
(6) 编译工程文件。
(7) 发布安装程序。
小结
利用Install Shiled制作安装程序, 使我们的ARX程序使用变得更加方便、简洁, 也使我们制作的程序更专业化。
参考文献
[1]梁海华.InstallShield6.x安装程序设计与制作[M].北京:人民邮电出版社, 2002.
[2]江雪松.AutoCAD2000二次开发指南[M].北京:国防大学出版社, 2000.
ObjectARX 篇2
Auto CAD是目前工程设计中使用最为广泛的绘图软件。它的通用性使得它在各行各业得到了极为广泛的应用。它提供的开放的体系结构和多样化的开发工具使我们在使用过程中根据自身需要进行定制或开发成为可能。这里,我们根据使用需要,利用Auto CAD提供的最新的开发工具Object ARX,对Auto CAD进行了二次开发。
2 Obj ect ARX概述
在Auto CAD提供的各种开发工具中,以C/C++开发工具的效率最高、功能最强。Auto CAD使用一种特定C/C++编程环境—Object ARX。Object ARX包含一组C/C++类库,这些库与Auto CAD在同一地址空间内运行并能直接利用Auto CAD核心数据库结构和代码,直接访问Auto CAD数控库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展Auto CAD具有的类及其功能,以及创建全面享受Auto CAD固有命令之特权的新命令[1]。
Object ARX是在Auto CAD原有的开发系统(ADS)的基础上发展起来的一种面向对象的C/C++开发环境。
3 系统开发过程
整个系统开发过程包括四部分。
3.1 设备图库的开发
开发图库有多种方法,如利用Object ARX提供的专门操作图形数据库的函数,或利用Auto CAD提供的基本图块功能等。这里我们利用Auto CAD提供的基本图块功能进行图库的开发。具体开发过程如下:
1)绘制图库中的设备样块,制作样块幻灯库文件。
2)制作图库的管理程序和管理界面。
3)使用图库中的图块。
3.1.1 绘制设备样块,制作样块幻灯库文件
设备样块的绘制直接在Auto CAD中按1:1的比例绘制即可,需注意的是,必须在0层上绘制图形,否则在将图形插入到其它图形中时,会引起层和颜色的混乱。
设备样块绘制完成之后,为了能够在应用中得到直观的图库管理界面,需要为图库中的每个样块生成一个幻灯片(SLD文件)。可以使用Auto CAD中的MSLIDE命令来生成当前图形的幻灯片,然后利用Auto CAD提供的SLIDELIB幻灯片库管理实用程序,可以从幻灯(SLD)文件构造幻灯片库(SLB)文件。下面是构造幻灯库的操作系统命令行语法:
其中,library是指定在其中添加幻灯文件(扩展名为.sld)的幻灯库文件(扩展名为.slb)。slidelist是指定幻灯文件的列表。
下面显示的操作系统命令将创建一个slidelist文件供SLIDELIB使用。所有要编译到幻灯库中的幻灯文件都应放在单独的目录中。在DOS提示(5.0版或更高版本)下输入:
此操作将创建mylist文件,可将其传递给SLIDELIB。还可以通过文本编辑器来创建mylist文件,只需列出幻灯文件名(如果必要,还需列出路径)。
要从mylist生成幻灯库mylib,请输入下列命令:
此条目将创建mlib.slb文件,其中包含mylist中所列出的幻灯片的名称和定义。
通过以上命令将多个幻灯片组合到一个幻灯片库文件(slb文件)中,通过菜单文件调用幻灯库文件就可以实现图块的直观显示,如图1所示。
3.1.2 制作图库的管理界面
本系统借助Auto CAD的菜单来管理和使用图库中的设备样块。Auto CAD2000以上支持部分菜单加载机制,也就是说在不退出现有菜单的基础上,可以增加其它菜单。
Auto CAD的菜单文件是使用ASCII码格式存储的文件,使用任何文本编辑器都可以编辑。在制作过程中,先按照菜单编制语法,编写菜单文件;然后通过控制程序中定义的外部函数,加载所制作的菜单文件。这样新增了一个下拉菜单,实现对图库和数据库的管理和操作,新增下拉菜单如图2所示。
3.1.3 图库中图块的使用
从上图所示的菜单中点选“车床”,将弹出图3所示的样块对话框界面。对话框右面的设备图形与左边的设备名称一一对应,直接点选设备名称或设备图形,再点击确定按钮,Auto CAD的命令行就会出现Auto CAD的插入命令及需要输入的参数(插入比例、旋转角度)提示,输入相应的参数,就实现了设备图块的插入。
以上样块对话框的显示和样块的插入也是通过菜单文件实现的,对话框中显示的每一个样块,对应菜单文件中的一行语句。当样块很多时,编写菜单文件的工作量也是比较大的。
为了提高编写菜单文件的效率,利用C++语言的文件处理功能,编写了一个自动生成菜单文件的程序。通过这个程序,可以一次生成一类设备样块对应的菜单语句,大大的减轻了编写菜单文件的工作量。
3.2 建立设备参数数据库
在工艺设计中,常常需要了解各种工艺设备的技术参数,为了方便设计人员查阅各种设备的技术参数,我们建立了设备参数数据库,并在控制程序中设置了数据库管理系统,实现对数据库的存储、查询、检索、安全保护等功能。
设备参数数据库是用Access制作的,每一类设备对应一个设备参数表,参数表中包括样片名称、设备名称、设备型号及主要规格、制造者、电力、重量、单价、备注(设备外形尺寸)等字段,每一字段根据其内容,设置不同数据类型。每一类设备的参数表如图4所示。
3.3 数据库管理程序和界面
数据库的管理界面,是采用Visual C++的MFC[2](微软基础类库Microsoft Foundation Class,简称MFC)技术开发的。利用MFC可以在可视化的环境下,快速的开发Windows风格的对话框界面。
对数据库的操作是使用数据库访问对象(Data Access Objects,简称DAO[2])编程技术实现的。DAO模型是设计关系数据库系统结构的对象类的集合,它们提供了完成管理一个关系型数据库系统所需的全部操作的属性和方法,这其中包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等。
对数据库中各种设备参数表的操作包括:数据查找、数据修改、数据添加等功能。数据库管理对话框如图5所示。
3.4 程序打包
打包(Package)即通过采用一系列的方法和手段,把应用程序和相关的文件集中起来,形成—个可执行的程序包(一般为Setup.exe文件)的过程[3]。打包的目的是使程序包能够在目标计算机上运行,并经过安装后,使我们开发的程序能够在目标计算机上运行。
本系统使用Install Shield实现程序的打包,程序包在安装过程中自动查找注册表中Auto CAD的内容,并进行修改,使程序安装后,在Auto CAD中可以直接通过菜单进行操作,和Auto CAD原有的命令一样方便。
4 结语
通过对Auto CAD进行二次开发,可以满足不同的个性化的使用要求,简化设计过程,提高我们的工作效率。本系统是Auto CAD使用中常用功能开发的一个典型范例,以上对开发过程做了简单的介绍,供各位同行借鉴。
摘要:介绍了运用ObjectARX进行AutoCAD二次开发的实现过程。内容包括建立设备图库、设备数据库,对设备图库、数据库进行操作。本实例可以直接安装,安装过程中通过修改注册表,实现应用程序直接加载,直接运行,操作简便,是工程应用中对AutoCAD进行二次开发的一个很好的范例。
关键词:ObjectARX,AutoCAD,二次开发
参考文献
[1]王福军,张志民,等.AutoCAD2000环境下C/Visual C++应用程序开发教程[M].北京:北京希望电子出版社,2000.
[2][美]David J.Kruglinski,Scot Wingo,George Shepherd,希望图书创作室,译,Visual C++6.0技术内幕[M].北京:希望电子出版社,1999.
ObjectARX 篇3
Object ARX是Autodesk公司针对在Auto CAD平台上进行二次开发而推出的一个开发软件包。它支持VC++语言和面向对象的编程方法。
ARX (Auto CAD Runtime e Xtension) 意指Auto CAD运行扩展库。从本质上看, ARX程序是一个DLL, 即动态链接库。因此它可以和Auto CAD共享地址空间并且可以直接进行通信, 还具有直接访问和控制Autodesk的能力。ARX程序有着更快的运行速度, 这也是目前流行基于ObjectARX开发Auto CAD的主要原因。
在开发人员不十分了解Object ARX 2000 App Wizard的开发方法时, 都还是习惯于将ARX程序作为一个DLL去开发。因此, 增加了程序的开发难度。而实际上Object ARX开发工具包中已经拥有了ARX程序的开发向导工具。在用户存放Object ARX开发工具包的目录..utilsObj ARX-Wiz中都可以找到相应的安装软件。安装后, 便会在VC++6.0的Project向导中自动加入Object ARX 2000/2000i/2002 App Wizard。这就是我们下面要介绍的ARX程序开发向导。
2 开发环境设置
Autodesk公司在其文件中指出Object ARX 2000的开发环境是Visual C++6.0, 操作系统可以是Windows XP和Windows 2000。这里介绍的方法是在Visual C++6.0的集成编译环境下生成的ARX程序。该程序只能在Auto CAD R15 (即Auto CAD2000/2002) 中运行。
在进行ARX程序编写之前, 首先要配置Visual C++6.0的集成编译环境。我们要导入Object ARX的库文件, 也就是要在配置项中添加若干个*.LIB文件。其操作步骤为:Project Settings->Link->Object/library modules, 在这里, 加入下列库文件, 文件名之间以空格区分。
3 建立一个简单的ARX函数
在Visual C++6.0的集成编译环境下, 选择菜单File->New…进入到如下界面。我们在这里选定Object ARX 2000/2000i/2002 App Wizard, 并设置好Project name就可以点击OK进入下一步 (见图2) 。此时, 我们将Use MFC项选中, 这将有利于在ARX程序中使用MFC的类库和资源。之后点击OK, 就可以完成向导工作。
这时已经可以在Visual C++6.0的集成编译环境中看到系统自动生成的类结构和相关的文件 (图3、图4) 。如果不使用App Wizard进行ARX编程, 那么这一切类和文件都需要程序员亲自编写来完成, 无疑会增大工作量和工作难度。
在Visual C++6.0的集成编译环境中也会看到这样的工具栏 (见图5) 。如图所示, “CMD”项正是生成ARX函数的又一向导工具。它的名字应当称为Object ARX Commands。点中后, 弹出向导对话框 (图6) 。依图7的三个步骤完成操作, 就可以在命令列表中生成需要的函数。双击函数名可以跳转至程序的相应代码位置上 (见图8) 。
4 程序的运行与调试
启动Auto CAD2000, 加载.ARX文件。加载成功后, 在命令行输入函数名 (test) , 然后按回车键运行程序。此时在Auto CAD的图形窗口中会弹出一个显示内容为"Hello ARX!"的对话框。
在这段由向导生成的ARX程序中, 只加入了一个程序语句Afx MessageBox ("Hello ARX!") 。如果需要扩展此ARX程序的功能, 可以在程序中编入更多的代码和函数。
5 ARX程序的扩展研究
在使用App Wizard自动生成的代码中可以看到下列代码。这些代码似乎与我们程序实现的功能并不相关。但是, 它们是Object ARX程序入口点, 在程序运行的过程中起着掌控全局的作用。
由于ARX程序是一个动态库, 它可以直接与Auto CAD进行对话。这个对话的过程就是Auto CAD发送各种消息给ARX程序, ARX程序负责对各种消息作出相应的处理。
Object ARX开发工具包中主要包含以下五个库:Ac Rx、Ac Ed、Ac Db、Ac Gi、Ac Ge, 正是这些库中的LIB文件为我们提供了二次开发的类和函数。所以, 我们有必要进一步的学习和了解这些库中类及函数的确切作用。
6 结论
在Auto CAD平台上使用Object ARX软件包进行二次开发, 可以使开发工作更加简单方便。但是如果想把这项工作做得更好, 还需要进一步的学习MFC的基础知识和C++以及面向对象的设计思想。由于ARX程序与Auto CAD共享地址空间, 所以容易造成的崩溃。这在调试程序时需要特别注意。
参考文献
[1]刘良华.AutoCAD2000ARX开发技术[M].北京:清华大学出版社, 2000.
[2]侯俊杰.深入浅出MFC[M].2版.武汉:华中科技大学出版社, 2005.
[2]ObjectARX编程站[EB/OL].http://www.objectarx.net/forum.php.
ObjectARX 篇4
1 ObjectARX的特点
O b j e c t A R X是A u t o D e s k公司针对AutoCAD平台上的二次开发而推出的一个开发软件包, 它提供了以C++为基础的面向对象的开发环境及应用程序接口, 能真正快速的访问AutoCAD图形数据库。与以往的AutuCAD二次开发工具Auto LISP/Visual LISP和VBA不同, ObjectARX应用程序是一个DLL (动态链接库) , 共享AutoCAD的地址空间, 对AutoCAD进行直接函数调用。所以, 使用ObjectARX编程的函数的执行速度得以大大提高。
2 算法中几个关键问题
软横跨计算有多种方法, 比如抛物线计算法、图解法、实测法、负载计算法等。一般来说, 负载计算法由于简单实用, 计算结果准确, 因而在施工中被广泛应用。
负载计算法中有以下几个关键问题需要考虑。
(1) 偏移距离的取值。
偏移距离为支柱结构斜率和调整斜率值所形成的偏移距离之和, 简称偏距。
式中:
d为支柱的偏距;
δ为支柱斜率和倾斜度之和;
H为支柱露出基础面高度;
S为基础面至最高轨面高差, 当支柱地面高出轨面时为正, 否则为负;
h为横向承力索悬挂处距离支柱顶部的距离, 一般取100mm。
(2) 确定负载。
每个悬挂点负载应该包括四个部分, 分别是悬挂点零件重量负载 (节点负载) Ji, 接触悬挂一个跨距的自重负载 (悬挂自重负载) Gi, 横向承力索及上、下部固定绳的自重负载Pi和中心锚结下锚支自重负载Mi, 在计算Pi时分别考虑一般情况和覆冰情况。
(3) 确定最短吊弦位置。
最短吊弦位置也就是横向承力索最低点。确定横向承力索悬挂最低点位置的方法一般有两种, 一种是根据横向承力索悬挂点A (或B) 的反力FA (或FB) , 依次减去向另一侧各悬挂点的悬挂负载, 如果减至某一悬挂点的悬挂负载时, 其差值由正变负, 则说明该悬挂负载所在的悬挂点即为横向承力索悬挂最低点。如果减至某一悬挂点的悬挂负载时, 其差值恰好为零, 则说明此软横跨出现两个悬挂最低点。另一种方法是根据求横向承力索分解力Y来确定横向承力索悬挂点的最低点。在研究中我们采用第一种方法。
由∑MA=0, 得到从而得到:
则横向承力索悬挂最低点出现在悬挂负载的Qk所在的悬挂点, 若
此时Qk和Qk+1都是最短吊弦所在的位置。
(4) 求横向承力索分段长度、总长度及各悬挂点吊弦长度。
在求横向承力索分段长度之前, 求出力矩MA、MB, 进而求出分界力Y和水平力T。
利用力学平衡方程, 对每一个悬挂点取铅垂力的投影, 计算整理后可得到悬挂点高差mk的计算式。
整理后得到横向承力索最低点左侧吊弦长度为:
横向承力索悬挂最低点右侧吊弦长度为:
3 结语
负载计算法是以实际结构标准形式为依据, 以实际负载为基础, 以安装后的受力状态为前提, 由负载计算转化为结构尺寸计算的方法。弥补了抛物线法、图形法和实测法等传统计算方法的不足, 计算结果有较高的准确度。采用AutoCAD二次开发技术, 基于负载计算法开发软横跨预置计算软件, 实现软横跨的快速、准确预置, 计算结果为1∶1的AutoCAD图纸, 各参数直接在图纸中标注显示, 直观方便, 便于施工参考和作为技术资料存档。
参考文献
[1]于万聚.高速电气化铁路接触网[M].西南交通大学出版社, 2002:135~185.
[2]铁道部电气化工程局第一工程处.电气化铁道施工手册 (接触网) [M].中国铁道出版社, 1987:35~48.
【ObjectARX】推荐阅读: