APP下载

基于C#二次开发AutoCAD 在汽车制造装备行业中的应用

2022-01-17付腊梅李永刚于海洋邢向宇张怀礼

锻压装备与制造技术 2021年6期
关键词:窗体数组调用

付腊梅,曹 伟,李永刚,于海洋,张 涛,邢向宇,张怀礼

(国机铸锻机械有限公司,山东 济南 250306)

随着计算机技术的迅猛发展,计算机辅助设计已经广泛应用于各行各业中,在工程设计越来越自动化的今天,通过AutoCAD 二次开发技术,可以实现图形内的数据处理和算法优化,在数控操作中,将CAD 图形转化为数控系统可识别的NC 程序,大大减少了操作员的工作量。

AutoCAD 二次开发工具主要有:

(1)AutoLISP:简单易学,但程序运行速度慢,缺乏保护机制;

(2)ADS:代码冗余,一般不选择该方式;

(3)Visual LISP;

(4)objectARX:功能强大,编程效率高,但必须使用C++来开发,相对较难;

(5)ActiveX:VB 语言和C#;由于VB 语言相对落后,语法啰嗦,与当下流行的语言差别比较大。

所以选择C#来进行二次开发AutoCAD。

1 AutoCAD ActiveX

ActiveXAutomation 是微软公司推出的一个技术标准,该技术是OLE 技术的进一步扩展,其作用是在Windows 系统的统一管理下协调不同的应用程序,允许应用程序之间相互控制、相互调用[2]。

AutoCADActiveX 可以使编程者通过编程手段从AutoCAD 的内部或外部来操纵AutoCAD。ActiveX 是由一系列的对象,按一定的层次组成的一种对象结构,每一个对象代表了AutoCAD 中一个明确的功能,如绘制图形对象、定义块和属性等[2]。ActiveX 具有大部分AutoCAD 的功能,以方法或属性的存在封装在库中,使用时只需调用对应的方法或对象属性即可实现对AutoCAD 的操作,从而达到二次开发的目的。

2 设计实例

2.1 流程图

程序设计流程图如图1 所示。

图1 设计流程图

2.2 应用程序

在设计程序前,需要安装Visual studio 2012 和AutoCAD2014。在Visual studio.net 中新建一个标准应用程序,首先需要在应用程序中新增引用,引用Auto-CAD 的类,acdbmgd.dll,acmgd.dll,accoremgd.dll 等。这些类将提供如下操作的控件,在头文件中添加命名空间:①Autodesk.AutoCAD.EditorInput——与用户交互有关的类;②Autodesk.AutoCAD.ApplicationServices——用来定义和注册新的AutoCAD 命令;③Autodesk.AutoCAD.Runtime——提供了系统级别的功能;④Autodesk.AutoCAD.DatabaseServices——database类;⑤Autodesk.AutoCAD.Geometry——point3d 的命名空间。

2.2.1 设置窗体

引用和控件都加载完成后,需要创建窗体、类,窗体主要有“主窗体”,“板材”,“模具”,“配刀”,主窗体如图2 所示,板材窗体如图3 所示。

图2 主窗体

图3 板材窗体

2.2.2 画板材

在AutoCAD 中画板材和形成框,用两种不同颜色的线来区分。AutoCAD 图形数据库包含有表和记录,一个数据库包含9 个符号表(块表、层表、文字样式表、线型表、视图表、UCS 表、视口表、注册应用程序表、标注样式表)。记录是表的单元。要创建一个图形对象,①需要得到创建对象的图形数据库;②需要在内存中创建实体类的一个对象;③打开图形数据库的块表;④打开存储实体的块表记录;⑤将该对象添加到块表记录中。

部分代码如下:

2.2.3 模具

首先把模具信息逐行从txt 文件中读出来,放入数组;C# 中通过streamReader 类读取文本wenda 读取模具文件的信息,刀具类型、刀具号、刀具尺寸等信息,如下示例:

块和属性在AutoCAD 绘图操作中是提高绘图效率的重要手段,为了在后面配刀和优化提高效率,在读取模具的时候就同时创建对应刀具的块,到时候直接调用就可以。创建块首先创建一个Block-TableRecord 对象并设置块的名称;其次利用Transaction 类的GetObject()函数获得当前图形的块表对象;第三、创建组成块的实体对象;第四、调用Block-TableRecord 类的成员函数AppendEntity 将组成块的实体写入块表记录中;]第五、调用BlockTable 类的Add 函数将创建的块表记录写当前图形的块表中[3]。如下示例:

2.2.4 配刀

配刀首先需要获取孔的选择集并放入数组中,根据直径大小将合适的刀具号依次放入对应的数组中,同时在AutoCAD 图形中找到对应孔的圆心做标志,方便手动修改刀具号,同时知道哪些配刀成功,哪些没有成功。这里需要用到的知识点就是获取选择集,将之前画好的刀具块放到对应的图形。选择集调用通过调用Editor 类的GetSelection 及SelectImplied 类来实现。如图4 所示,红色的为配刀成功的孔。

图4 配刀示意图

2.2.5 优化

这是非常关键的环节,一般一个加工图形中会有上百甚至几百个孔,怎么排序显得特别重要,所以这里就需要根据机械设备,加工方法以及产品尺寸来确定优化算法,这里用距离比较法,及把前边获取的孔数据放入对应数组,然后循环遍历数组,逐一比较它们之间的距离,按从小到大排序,这样就把要加工的孔按由近及远放入一个新的数组,同时达到了我们优化路径的目的,部分代码如下:

2.2.6 导出NC 程序

根据优化排序拼接NC 加工程序并导出到文本中,如图6 所示。

图6 NC 加工程序示例

3 结论

通过AutoCAD 二次开发技术,可以实现复杂图形的设计,以及图形内的数据处理和算法优化,在数控操作中,将CAD 图形转化为数控系统可识别的NC 程序,减少了操作员的工作量。通过不断的优化算法、优化路径,大大提高了车间的加工效率,节省人力成本,起到了明显的节能降耗作用。

猜你喜欢

窗体数组调用
JAVA稀疏矩阵算法
JAVA玩转数学之二维数组排序
试谈Access 2007数据库在林业档案管理中的应用
系统虚拟化环境下客户机系统调用信息捕获与分析①
更高效用好 Excel的数组公式
关于Access中切换面板的问题与解析
寻找勾股数组的历程
利用RFC技术实现SAP系统接口通信
WinCE.net下图形用户界面的开发
C++语言中函数参数传递方式剖析