ObjectARX三篇

2024-07-29

ObjectARX 篇1

关键词: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栏为快捷方式的链接路径, 这里acad.exe, 也就是我们找到Auto CAD的路径之后, 我们将它作为我们这个安装程序快捷方式的目标路径;而其Start In路径, 即开始路径设置为, 即设置为我们所拷贝文件所在的文件夹 (见图1) 。

(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.

ObjectARX 篇2

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 篇3

一、引言

冲裁成型技术是工业中应用广泛的板材加工技术,一般是使用数控机床进行加工,数控机床使用特定的语句指令进行编程。这种编程一般使用数控系统高级语言FAGOR,通常称为G代码,如:G00 G90 X400 Y300,表示快速定位,G90表示绝对坐标。数控机床工作的过程就是执行 G代码的过程。使用 G代码不仅要控制加工位置,还要控制模具的切换,代码量较大。例如冲压 100个间隔相等的孔,通常需要编制至少200条指令。编写G代码的过程往往是繁琐枯燥的,正确性难以保证,进行指令的测试往往伴随着原材料的浪费。使用计算机辅助设计系统可以实现数控机床所需 G代码的自动化编程。

AutoCAD是美国 Autodesk公司推出的计算机辅助设计软件,广泛用于二维绘图、设计文档和基本的三维设计。其开放的体系结构,允许用户进行二次开发,根据自己的需要扩充新的功能。ObjectARX(Object AutoCAD Runtime eXtension)是 AutoCAD系统配套的面向对象的 C++应用程序开发接口,使用 ObjectARX可以在运行状态下直接访问 AutoCAD的内部数据库,图形系统及几何造型核心。使用 VC++开发基于 ObjectARX的应用,还可充分利用Windows系统资源,包括MFC基本类库和Visual C++开发环境。可以在运行时从 AutoCAD中读取设计图形数据。通过分析这些图形数据,可以实现冲床指令的自动编程与仿真,从而可以大大提高工作效率,降低甚至杜绝板材的测试浪费,提高经济效益。

二、问题的提出

数控机床对于简单的图形,如三角形、矩形、圆形及长圆孔等(以下称为基本图形),都有成熟的加工指令或指令序列。而工业中需要加工的形状要复杂得多,包括凸多边形,凹多边形,甚至可能包括曲线边在内(以下称之为复杂图形),如图 1所示为典型的复杂图形示意图。这些图形在机床上无法简单的加工出来,需要编写机床控制程序。如果能将这些图形做一定的拆分,将其分解为多个矩形,就可以使用矩形的加工指令组成复杂多边形的加工指令。

通过 ObjectARX接口,可以读出 AutoCAD中的设计图形数据,并进行分析处理。本文提出的拆分算法的目的就是将各种各样的复杂形状拆分为较简单的基本图形,即把复杂图形看成是由基本图形拼成的,为复杂图形找到一组合理的基本图形序列,从而可以使用基本图形的加工指令进行复杂图形的加工。

三、复杂图形拆分算法描述

图形拆分算法的程序流程如图2所示。简要叙述如下。

(1)读取 AutoCAD中的设计图形数据,数据的顺序和设计图绘制过程有关,在数据排序链接模块中,需要对读出的数据进行预处理,按顺序依次排列组成封闭图形。因为工件上一般需要加工多处孔,所以此处得到的是一个封闭图形的序列。

(2)对序列中的图形依次进行处理,每次取出一个封闭图形。检测图形数据的转向,确保封闭图形数据按逆时针转向排列。否则对图形数据进行翻转处理。

(3)在图形数据逆时针转向的基础上,可以确定各顶点的内角。对凹多边形来讲,内角值有可能会大于 180°,确定图形内角对图形拆分模块有重要意义。

(4)图形拆分模块。这一部分将综合使用图形数据的各种信息进行图形的拆分,拆分的结果是形成一个基本图形的序列。

(5)最后输出拆分后的基本几何图形序列。

四、算法的实现

下面以L形图形的拆分为例,介绍复杂图形拆分的执行过程。本文的介绍是针对由直线段组成的多边形,在实际的应用中,可以根据具体的需要对算法进行扩展。

1.图形边框的数据定义

通过 ObjectARX接口,从 AutoCAD中读出数据后,将边框用以下数据结构来表示: b(x1,y1,x2,y2,angle)

式中, x1,y1表示边 b的起点坐标; x2,y2表示边 b的终点坐标;angle表示其与下一条边的内夹角。

设 L形的坐标数据如图 3所示。

以图 1中L形的分析为例,假设坐标如图 3所示,边框依次定义为 b1、b2、b3、b4、b5和 b6,数据自 AutoCAD中读出后,按点坐标检测数据是否组成封闭图形。经过处理后,边框数据表示如下:

2.封闭图形转向检测

由于在进行图形数据封闭连接的运算中,无法确定图形数据的顺序是按逆时针排序,还是顺时针排序。进行数据转向检测可以使用向量法,选取任一顶点,计算其指向其他各顶点的向量,如图 4所示。

计算各向量的向量角——即各向量与x轴的夹角。角度取值范围为 0~360°。向量角计算如下: v1:(370-120)+i(100-100)=250 向量角:arctan(0/250)=0° v2:(370-120)+i(300-100)=250+i200 向量角:arctan(200/250)]=38.70° v3:(270-120)+i(300-100)=150+i200 向量角:arctan(200/150)=53.1° v4:(270-120)+i(200-100)=150+i100 向量角:arctan(100/150)=33.69° v5:(120-120)+i(200-100)=i100 向量角:90°

nlc202309030304

由此可见,向量角从 0°增大到 90°,则可以确定封闭图形的旋转方向为逆时针方向,符合数据处理的要求。如果向量角检测的结果为减小,则说明数据的顺序为顺时针方向,需要对图形边框数据进行反向处理。

3.计算顶点对应的内角值

在封闭图形数据转向确定的情况下,无论是凸多边形,还是凹多边形,都很容易确定图形每个顶点所对应的内角大小。如图5所示。

4.图形拆分处理

将复杂图形拆分为基本图形是本算法的核心内容,前面的处理都是为这一步做准备。首先应该确定拆分的最终结果有几种基本图形。然后才能确定图形分割的具体过程如何。在此假设图形分割的最终目的是得到一个三角形和矩形的序列。该过程是一个循环,步骤简述如下。

(1)首先检测剩余边数,如果等于0,表示已没有剩余边框数据需要处理,转(8);如果剩余边数小于 3且不等于0,则输出错误信息。

(2)如果等于三,则得到一个三角形。将三角形加入到基本图形列表,转(8)。

(3)查找内角值最大的边,取其下一条边作为起始边。检测其与末端顶点的内角,如果大于 180°,则继续选取下一条边。

(4)检测当前边与下一条边的夹角,如果为 90°,则继续读取下一条边。

(5)查看已读取到的边数,如果已读取到4条边,则转6,否则转(4)继续读取。

(6)检测读取到的四条边是否组成封闭矩形。如果是则将矩形合并到数据序列,转(1)开始下一次循环,否则转(7)进行图形运算。

(7)已读取的四条边,因为自第一条边起,到第四条边都是 90度,而图形现在没有封闭。必然是第一条边的起点和第四边的终点没有重合。可以将第一条边和第四条边转化为直线方程,求其交点。求出的矩形输出到基本图形列表。然后转(1)继续执行。

(8)得到基本图形序列后,按一定的规则进行优化,对于不符合最终要求的基本图形进行优化运算。

(9)最后输出优化后的所有矩形。

仍以 L形为例。首先查找到内夹角最大的点为p5,对应内角值为 270°;然后逆时针读取到b5、b6、b1和 b2共 4条边;进行图形封闭检测,可发现起点和终点不重合。以第一条边 b5和第四条边 b2为直线接方程,可求得交点p7,其坐标为(250,100)。

以点 p7为分割点,将原有线段 p2-p3分割为两个线段,将线段 p2-p7插入到输出矩形中,p7-p3插入到原始数据;线段p5-p7插入到原始数据组成新的封闭图形;插入p7-p5到输出矩形数据,由于 p7-p5和 p5-p6直线方程完全相同,可以合并为线段 p7-p6。继续循环,可得 p1-p7-p3-p4为一个矩形,输出到基本图形列表。 然后可按照一定的规则进行优化,使最终的分割结果近似最优,程序成功退出。至此一个图形拆分完成,如图 6所示。

同理,对图 1中的(b)的工字型执行该算法,可得拆分结果如图 7所示。对图1中的(c)执行该算法,可得拆分结果如图8所示。对于该任意形的拆分,由于拆分后所得矩形 4的宽度太小,不符合加工的最小宽度要求。可以将其与并列的矩形 2进行优化运算,得矩形 5和矩形6,如图8(b)所示。

五、结语

使用 VC++程序开发语言,通过 ObjectARX接口对AutoCAD系统进行二次开发,是扩展 AutoCAD系统功能的重要手段。本文所提供的算法是在进行转塔冲床辅助设计制造系统的基础上总结出来的图形分析处理方法。在本文的叙述中,针对的是由线段组成的多边形,一般可拆分为矩形和三角形。如果出现更复杂的图形情况,如包含任意内角值的顶点,有圆弧或任意曲线的边,则需要对该算法进行扩展。可首先对特殊边进行处理,再对其两侧的直线段延长,求其交点,便可得到曲线图形和直线段组成的复杂多边形。本算法的目的不是提供万能的算法,而是提供一种解决问题的思路,在实际应用中,还需根据实际情况做相应的处理。IM

【ObjectARX】推荐阅读:

上一篇:地域性优势下一篇:商业银行大客户管理

热搜文章

    相关推荐