APP下载

基于AutoCAD二次开发的样板零件图自动优化处理软件设计

2011-07-07刘宝明韩志仁

制造业自动化 2011年18期
关键词:零件图样板重合

刘宝明,韩志仁

(沈阳航空航天大学,沈阳 110136)

0 引言

航空企业中样板零件通常采用激光切割进行加工,而设计员在设计图纸时是利用CATIA软件设计[1,2],再导出为DXF文件以进行激光切割机编程,由于转换后文件中的图元信息存在严重的缺陷,如大量的重合曲线、线条非正常链接及过多的连续碎线等,不能直接用于激光切割机编程,因此必须进行前置优化处理。由于零件图中线条数量过多,手工处理时需逐条曲线查找分析,通常要数小时的时间,费时费力,大大降低了生产效率,且随着线条数量的增加,出现差错的可能性也逐渐增大,因此有必要开发一个自动优化处理的软件系统。

AutoCAD是美国AutoDesk公司开发的通用计算机辅助绘图设计系统,是世界上最为流行的通用CAD平台,为了行业定制的便利,AutoCAD为用户提供了一个强有力的二次开发环境。本文提出利用AutoCAD第三代二次开发工具ObjectARX,在AutoCAD系统环境下开发出一个用于样板零件优化处理的软件系统,实现了激光切割零件图前置处理所需的各项功能,并在企业中得到实际应用。

1 清除重线功能的实现

由CATIA导出的样板零件平面图存在大量的重合线条,这种图纸不能直接用于激光切割机系统处理,必须清除这些冗余线条。经查找分析得知,线条的重合方式共有以下三种:

1.1 两条直线或两段圆弧完全重合

判断两条直线是否完全重合,只需比较其起点和终点坐标,通过遍历CAD图形数据库,读出所有直线信息,逐一比较其首末端点,首末端点相同的直线即为完全重合的直线,只保留一条,其余自动从数据库中清除。

判断两段圆弧是否完全重合,需要比较其圆心、半径、起始角和终止角是否完全相同,而这些信息可以通过ObjectARX中AcDbArc类的成员函数从CAD数据库中获得,进而清除此类重合圆弧,达到清除重线的目的。

1.2 两条直线或两段圆弧包含重合

如图1、图2所示,直线1包含直线2,圆弧1包含圆弧2,系统设置了允许的重合误差,当两线条间的最大距离小于允许误差时,仍然作为重合线条处理,对于图示后两种重合方式的线条,首先比较两线条的长度,得到可能被包含的线(短线),再计算该短线两端点与长线的垂直距离,若小于设定的误差,则作为重合线条将其删除。

图1 两直线包含重合

图2 两圆弧包含重合

在ObjectARX函 数 库 中, 函 数getClosestPointTo (const AcGePoint3d & givenPnt,AcGePoint3d& pointOnCurve, Adesk::Boolean extend = Adesk::kFalse)用于得到曲线上与给定点最近的点,利用此函数得到最近点后再应用distanceTo(const AcGePoint3d& pnt)函数可直接计算得到点到曲线的垂直距离。

1.3 圆弧与直线包含重合

圆弧与直线包含重合分为圆弧包含直线和直线包含圆弧两种类型,如图3所示(此处只举例列出,尚有多种情况),对于此类图形,判断是否为重合线条时,除判断短线端点与长线的距离外,还应计算如图所示D值,当所有距离均小于设定的误差时才能认定为重合。

计算D值过程中,需要求解直线圆弧的交点坐标,我们可以用ObjectARX函数库中的intersectWith(const AcDbEntity* pEnt, AcDb::Intersect intType, AcGePoint3dArray& points, int thisGsMarker= 0,int otherGsMarker = 0) const函数完成求交运算,调用该函数的对象为其中一条曲线,pEnt参数为另一条曲线,points为存放交点坐标的数组。

图3 圆弧与直线包含重合

2 大圆弧处理功能的实现

图4 大圆弧处理流程图

激光切割机线路只能识别半径小于8000mm的圆弧,当图元半径大于8000mm时激光切割机很不稳定,使切割过程中程序中断,而设计员提供的DXF文件中有很多图元半径大于8000mm,所以需要分析出这类圆弧,将此圆弧处理为多段直线,且直线与原始圆弧间最大距离小于设定的挠度误差,为此,计算时根据最大误差对大圆弧分段,流程图如图4所示。

3 连接断线功能的实现

由于原始零件图中的线条存在断线的缺陷,即本应连接在一起的相邻线条端点不重合,存在缺口或搭接现象,如图5所示。而只有链接好的图元才能进行编译用于激光切割机编程,图5所示链接的图元如果中间没有连通处,就会造成激光切割时出现问题,为此需要对断线处进行处理。

图5 断线类型

对于断点情况,可以修改其中一条曲线的端点,使其与另一线条端点重合,而搭接方式的断线包括直线与直线搭接、直线与圆弧搭接,圆弧与圆弧搭接三种,系统处理时分别考虑几种情况,采用不同的处理方法。当曲线延长后存在交点时,取该点为连接点,裁剪多余线段,当无延长交点时,修改直线端点或圆弧端点,使之连接,并计算修改后的曲线与原曲线的误差,自动选择与原始图形误差最小的连接方法。

4 碎线处理功能的实现

图形中的线条若长度小于1mm,我们称之为碎线,这种线条在原始图形中,几乎占总线条数的40%,若直接用于激光切割机,容易出现烧损,因此必须将这些碎线处理为长度大于1mm的线条。针对不同情况,系统共采用两种方法处理碎线,当相邻的多段碎线斜率变化较小时,在满足精度的前提下,直接将其变为一根长度大于1mm的直线,以减少系统运算量,提高处理速度;而对于斜率变化较大的图形拐角处,则采用圆弧逼近的方法,提高处理精度。

5 再现及清除原图功能的实现

图形经过系统处理后,大部分线条都经过了修改,并标记以不同的颜色,为了与原始图形进行比较确保处理无误,需要系统能够在处理后再现原图,为此,系统在做处理前先进行了自动备份,利用dxfOut(const ACHAR* fileName,const int precision = 16,const bool saveThumbnailImage =false)函数将原图备份为dxf文件存储,处理结束后再利用dxfIn(const ACHAR* dxfFilename,const ACHAR* logFilename = NULL)将原始图形读入内存,并应用insert(AcDbObjectId& blockId,const ACHAR* pSourceBlockName,const ACHAR* p DestinationBlockName,AcDbDatabase* pDb,bool preserveSourceDatabase = true)函数以CAD块的形式将原图插入到当前数据库中。比较结束后再根据块名及块ID从实体段及块表记录中清除。

6 结论

本系统采用在AutoCAD环境下进行二次开发的方法完成,并利用ObjectARX作为开发工具,完成了清除重线、处理大圆弧、连接短线、处理碎线及再现与清除原图等功能模块的开发,实现了样板零件图的激光切割机编程前置优化处理的自动化。通过在企业中的试用证明,使用本系统后,样板零件图的前置处理时间由原来的数小时减少为现在的几分钟,使样板的制造生产率有了质的飞跃。

[1] 杜兵举, 袁茹, 王三民. 数字化环境下的模线样板并行设计[J]. 新技术新工艺·数字技术与机械加工工艺.2008.7: 5-7.

[2] 杜芳静, 张凌云, 于波章. 基于CATIA V5系统的复杂机加件模线样板设计方法探索[J]. 沈阳航空工业学院学报, 2008(10): 1-4.

猜你喜欢

零件图样板重合
打造辣椒种植“样板田”
打赢脱贫攻坚战的“人大样板”
样板:不成熟的台州
“轴承的配合制选用”的教学心得
浅谈机修钳工实训中的零件测绘
《机械制图》中装配图的识读
电力系统单回线自适应重合闸的研究
倾斜的样板楼
浅析重合闸
表针重合