APP下载

面向现代化制造的CAD集成研究

2010-04-11王立新杨继超

制造业自动化 2010年11期
关键词:二次开发编程实体

王立新,杨继超

WANG Li-xin, YANG Ji-chao

(郑州大学 机械工程学院 ,郑州 450001)

面向现代化制造的CAD集成研究

Reasearch of integrated CAD system for manufacturer

王立新,杨继超

WANG Li-xin, YANG Ji-chao

(郑州大学 机械工程学院 ,郑州 450001)

针对NC编程过程中,DWG格式文件中标注尺寸不能完全真实反映出图形的实际尺寸问题,本文通过对AutoCAD进行二次开发和研究,探索了如何自动判断实际尺寸和标注尺寸差异,定制出图形标注尺寸校对功能,保证DWG文件中图形标注的准确和一致性。经实例验证,该功能的开发,可以很好保证图形尺寸的准确性、极大提高数控编程的效率。

AutoCAD;二次开发;.NET API

0 引言

AutoCAD计算机辅助设计软件被广泛应用于机械、电子、船舶、建筑、航空、服装行业。AutoCAD的强大优势在于开放的体系结构。不同的用户在使用这个通用平台过程中,可以根据自身使用情况和行业特点进行二次开发和定制。

现代加工制造业中,CAD/CAM一体化技术的发展,数控编程人员希望直接利用AutoCAD图形,以捕捉点、线的方式进行NC编程。但是,AuotCAD图形数据中的标注尺寸和实际尺寸的准确性和一致性,以往是需要进行人工校对和处理。核对计算机图形的标注尺寸和计算机图形实际尺寸时,细微的差别,单凭工程设计人员的肉眼和直觉,很难被检测出来。这些缺乏预处理的AutoCAD数据,如果直接导入数控机床,并以此为基准,来进行加工数控编程,很容易产生误差甚至是废品,这给生产带来极大的浪费和损失。传统的AutoCAD数据人工校对手段效率低下,检查难以彻底。借助对AutoCAD二次开发,利用计算机对数据进行前处理,提高数据的准确度,为下一步NC编程提供可靠的数据,非常有必要。

1 AutoCAD.NET API二次开发技术

从AutoCAD2006开始,Autodesk公司开始部分使用.NET对其软件进行开发,改变以往完全使用非托管C++的做法。基于.NET平台的开发语言有C#、VB.NET和托管C++等。本次研究以C#为手段,对AutoCAD进行开发。使用.NET对AutoCAD进行二次开发,必须使用AutoCAD.NET托管封装类,即添加acdbmgd.dll和acmgd.dll程序集引用。acdbmgd包含ObjectDBX托管类,用于AutoCAD数据库服务和DWG文件操作,acmgd.dll包含ObjectARX托管类,与AutoCAD应用程序有相关联。

图1 .Net Framework 结构

2 设计方案

2.1 AutoCAD数据库操作

对AutCAD数据文件进行自动分析校对,首先要以程序访问的方式,进入AutoCAD的数据内部进行操作。AutoCAD数据库是DWG文件在内存中的表示,是存储AutoCAD数据库对象的容器。AutoCAD的数据库对象在数据库中按层次保存,每个数库对象,保存在特定的容器中。AutoCAD数据库使用Autodesk.AutoCAD.DatabaseService命名空间中的Database类表示。

图2 AutoCAD数据库的构成

获得当前图形数据库:

在.NET开发中,有关于数据的操作是通过“事务处理”来进行。AutoCAD中事务管理器TransactionManager来控制程序所以事务。通过数据库Database.TransactionManager获取事务管理器。方法StartTransaction()开始一个事务,Commit()提交事务,方法Abort()放弃一个事务。

2.2 AutoCAD实体访问方法

实体(Entity)是具有图形表示的数据库对象,包括直线、圆、文本、样条曲线和椭圆等。AutoCAD数据进行校验的很重要的一步,是进行AutoCAD实体对象的访问。AutoCAD实体保存在表记录BlockTableRecord中,表记录保存在BlockTable中。在创建AutoCAD时,一般都会存在模型空间和图纸空间。模型空间在通常情况下用于图形设计,图纸空间创建最终的打印布局。如下所示:

2.3 AutoCAD 标注尺寸判断

本次研究主要的是对实体的实际尺寸和标注尺寸进行研究。在处理AutoCAD图形的尺寸的标注,按照实体与标注的关联情况,分为关联(associated)和非关联(non associate)。程序首先遍历AutoCAD中数据库中所有标注,当发现与实体关联时,检测标注是否有被代替,如果有,需要对代替的的字符进行处理,提取代替字符串中的数字,与实体实际参数进行比对。当遇到非关联标注时,这是程序判断的难点,也是最需要注意的地方。此时,程序要进行如下步骤的操作:第一,将标注的类型分为直线长度标注、圆直径或半径标注、弧长标注、角度标注。如图3所示,确定标注为直线标注。第二,获得标注后,可以确定点a的坐标,然后按顺序在a点附近收索出点b的坐标。无论是AutoCAD图形轮廓复杂情况,均能沿图形尺寸标注界线点查找出附近标注的点b。

图3 AutoCAD标注

如图4所示,将a点按一定精度来划分区域,b点必定在某个方框区域内,先检测框1的区域,如果其中没有实体端点,继续寻找框2,依次寻找1第一圈(框1到框8),如果存在实体端点端点,停止搜寻,否则搜寻第二圈,依次循环进行,找出b点坐标(xb,yb)。按上述方法,继续找出c点坐标(xc,yc)。计算出实体的实际尺寸:

图4 a点区域

如上图3所示,如果L=17.31,则标注尺寸与实际尺寸相吻合,否则,检测出标注错误,并给予警告提示。

2.4 错误标注警告设置

当程序检测到标注错误时,发出警告来提示设计者。在此次研究中,当程序发现实体体的实际尺寸与标注尺寸不一致时,有两种警告提示的解决方案,分别是:

a. 改变实体的颜色。实体颜色,在Autodesk.AutoCAD.Colors.Color类来表示,并且它们都有相应的索引,常见的如下:

注:索引0、256分别表示颜色随块和随层。

b. 改变实体线型。在AutoCAD中,线型对象对应线型表中一条表记录,LinetypeTableRecord,在AutoCAD.net API中,通过如下方式来获取线型记录:

3 软件应用实例

图5 下拉式菜单

本软件使用C#语言,对AuotCAD平台进行二次开发。本程序为了更好的与AutoCAD进行整合,将以主菜单的形式呈现在AutoCAD中。本程序经过编译后,成为一个类库,在AutoCAD运行的程序中调用。此时在AutoCAD主菜单中多了一个“开发控件”项。在“开发控件”的主菜单下,选择“文件读取”,自动打开需要校对的AutoCAD文件。如图5所示,本例打开一幅绘制完成的AutoCAD图形。

在打开的AutoCAD图形后,点击“标注校对”选项,开始文件标注进行校对,如图6,弹出对话框。程序进行实体遍历,需要确定其标注的的属性,首先判断标注与被标注的实体关联性,按照关联与否,判断标注的准确性。本例是一个零件的三视图,当程序检测完图形后,程序检测出信息为:实体种类为3种,分别为:直线、圆和弧;当前的AutoCAD数据库中,建立了7个图层;在程序明细框中,列出了AutoCAD图形中所有的标注及标注类型,并且给出了标注错误与否的信息。此图有两处标注错误,分别是标注为15.5的直线和标注为21的圆弧。于此同时,在AutoCAD交互绘图区域中,这两处错误的实体,即直线和圆弧,自动改为ACAD_ISO02W100线型,并将颜色标记为黄色。

图6 程序执行

图7 弹出信息框

4 结论

AutoCAD广泛应用于平面设计,它作为一个开放的计算机辅助设计平台,为用户后期的二次开发提供了强大的支持。本文通过对二次开发,对AutoCAD数据进行预处理,使AutoCAD数据更加可靠、准确,实现了CAD的人工智能化。通过实例的应用,证明该程序的可靠和准确性。

[1] 王立新,黄文良,魏维.计入尺寸公差的虚拟样机零件生成[J].机械设计,2004,21(3):59-60.

[2] 张晋西.Visaul Basic.NET 二次开发AutoCAD范例精解[M].北京:清华大学出版社,2004.

[3] 王钰.用VBA开发AutoCAD 2000 应用程序[M].北京:人民邮电出版社,1999.

[4] 秦洪现,崔惠岚,孙剑.Autodesk系列产品开发培训教程[M].北京:化学工业出版社,2008.

TP311

A

1009-0134(2010)10(下)-0035-04

10.3969/j.issn.1009-0134.2010.10(下).11

2010-01-26

河南省科技攻关项目(082102240010);郑州大学研究生科学研究基金项目

王立新(1967 -),男,河南新乡人,副教授,工学博士,研究方向为机械系统CAD、仿真与虚拟样机技术。

猜你喜欢

二次开发编程实体
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
前海自贸区:金融服务实体
西门子Operate高级编程的旋转坐标系二次开发
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
实体的可感部分与实体——兼论亚里士多德分析实体的两种模式
两会进行时:紧扣实体经济“钉钉子”