基于C#的AutoCAD二次开发在重卡线束图的简单应用研究

2022-07-28 02:01张俊申玮宋英华张岚
汽车电器 2022年7期

张俊,申玮,宋英华,张岚

(中国重汽集团汽车研究总院,山东 济南 250002)

1 前言

线束系统作为车辆的“神经”,对汽车电气功能的实现起着至关重要且不可替代的作用,随着汽车电器配置越来越高,线束系统随之变得越来越复杂。目前,车辆系统的线束设计主要采用AutoCAD等软件进行二维设计。随着制图要求的不断提高,在AutoCAD设计庞大的线束时,线束图中的文字颜色与直线的颜色会依据公司传统或个人习惯加以区分,这样可以使得线束图直观、清晰明了,易于区分。而在线束图纸设计或者更改时,往往拿到的Auto-CAD线束图纸中文字与直线等内容颜色没有统一,使得图纸显着很乱,不易区分,这样就得花费大量时间去统一线束图纸中文字、直线的颜色,作者曾在设计线束图纸的过程中,花费大量时间去统一颜色,使得设计效率很低。借助AutoCAD的二次开发,开发一个程序集,可以快速地将文字与直线颜色进行统一就十分的必要。本文以初学者的视角,利用C#二次开发AutoCAD在重卡线束图做了简单的应用研究,详细论述了开发程序集的过程以及简单的应用过程。通过本文的简单应用研究,理清了C#二次开发Auto-CAD的原理,为后续线束设计辅助软件、线束工艺软件等的开发奠定了基础。

2 AutoCAD二次开发基础

2.1 AutoCAD二次开发语言介绍

AutoCAD是一款通用的计算机辅助设计软件,具有完善的绘图功能,提供了多种接口,易于不同行业的人员采用高级编程语言对其进行扩充和修改,丰富其附加功能,能最大限度地满足用户的特殊需求。AutoCAD第一版于1982年11月推出,其二次开发语言及工具也在不断地涌现。开发环境对应的编程语言有:AutoLISP、ADS、ObjectARX、VisualLISP、VBA、AutoCAD.NET等。本 文 利 用AutoCAD.NET框架,使用C#语言对AutoCAD进行二次开发。

2.2 C#二次开发AutoCAD基础简介

AutoCAD有强大的数据库而没有数据分析能力,借助二次开发提取其数据库中的数据,同时利用Windows自带的函数库,可以对大量数据进行分析,提高AutoCAD的使用效率。

众所周知,C#是一种面向对象的编程语言,把一切当成对象来处理。在C#二次开发AutoCAD过程中,AutoCAD图纸中的直线、圆弧、文字和标注等图形是对象,图层、组合、块等都是对象。和其他二次开发语言相比,C#语言简单易学,成为二次开发AutoCAD的首选语言。

AutoCAD.NET API由不同的DLL文件组成,这些DLL文件包含有大量的类、结构、方法及事件,用于访问图形文件对象或AutoCAD程序对象。常用的AutoCAD.NET API的3个主要DLL文件如下。

1)acdbmgd.dll:当处理图形文件中存储的对象时引用。

2)acmgd.dll:当处理AutoCAD应用程序和用户接口时引用。

3)accui.dll:当处理自定义文件时引用。

本文所引用的接口为acdbmgd.dll与acmgd.dll。

3 AutoCAD二次开发过程

3.1 建立程序集及添加引用

在Visual Studio软件中新建一个类库项目,如图1所示。不同版本的AutoCAD对应不同的.net框架,由于本文是在AutoCAD2007版本中进行的,故框架选择.net3.5。

图1 新建类库项目

在Visual Studio软件中添加AutoCAD的程序接口acdbmgd.dll、acmgd.dll,将复 制 本地改为False,如图2所示。

图2 添加引用

在编写程序集之前,需使用如图3所示的命名空间。命名空间里包含大量的类、结构、方法及事件,用于访问图形文件对象或AutoCAD程序对象。

图3 使用命名空间

注册命令“TH7”如图4所示。此命令相当于程序集的指令,当发送此指令后,程序才开始运行。后续在AutoCAD命令栏输入“TH7”后,编写的程序集才开始执行。

图4 注册命令“TH7”

3.2 二次开发在重卡线束图纸的应用原理

重卡的线束图纸中主要包括导线信息(线号、线色、线径、端子等)、波纹管长度、文字说明、插接器图例等,如图5所示。

图5 重卡线束图纸

在二次开发过程中,可以笼统地把线束图纸分为单行文本与直线等数据组成,这些数据记录在AutoCAD数据库中,通过调用其数据库,然后通过选择集的操作,可以分别得到单行文本与直线信息,分别对其属性进行更改,将得到我们想要的效果。

3.3 遍历AutoCAD数据库得到单行文本与直线数据

在遍历AutoCAD数据库之前,需要理解AutoCAD对象层次,如图6所示。

图6 AutoCAD对象层次示意图

Application对 象 是AutoCAD.NET API的 根 对 象,从Application对象,可以访问AutoCAD主窗口,以及任何打开的图形,并进而访问图形里的各个对象。Application对象有一个DocumentManager属性,用来返回DocumentCollection对象,该对象提供了访问当前打开的AutoCAD图形的功能,并允许创建、保存、打开图形文件。

Document对 象,实 际 上 就 是 一 个AutoCAD图 形,是DocumentCollection对象的一部分,提供了访问与Document对象相关联的Database对象的功能。

Database对象包含AutoCAD所有的图形对象和绝大部分非图形对象,其中包括实体(图元)、符号表、命名字典等。实体(图元)表示图形里的图形对象,直线、圆、弧线、文字、填充和多义线等都是实体。

由此可以编程遍历AutoCAD数据库Database,并通过选择集的操作可分别得到单行文本与直线的数据,获取程序如图7所示。

图7 获取单行文本与直线程序

通过以上代码,程序将遍历线束图纸的数据库,通过选择集的设置,分别得到单行文本对象与直线对象。

3.4 更改单行文本对象与直线对象颜色

通过遍历AutoCAD数据库得到的单行文本对象与直线对象,对其颜色的属性值ColorIndex进行赋值,即可改变其颜色。ColorIndex值可在AutoCAD图纸中,通过命令栏键入LI,即可得到。本文因公司传统习惯,将文字颜色更改为青色,直线更改为绿色,这样可以使图纸较为整齐,清晰明了。青色与绿色的ColorIndex赋值通过键入LI得到,如图8~图9所示。

图8 绿色的ColorIndex值

图9 青色的ColorIndex值

由图8~图9可以看出,绿色的ColorIndex值为3,青色的ColorIndex值为4,通过编写函数分别对其ColorIndex进行相应的赋值,编写更改颜色的函数代码如图10所示。

图10 编写更改颜色的函数

将改变颜色的函数写入主函数,便可以实现线束图纸颜色的改变。主程序如图11所示。

图11 主程序

4 程序集的使用

在程序集的属性里将名称更改为“更改线色和文字颜色”,如图12所示,然后生成解决方案,在默认文件夹下,就会生成“更改线色和文字颜色.dll”的程序集。

图12 更改程序集名称

打开已完成或者正在设计的AutoCAD线束图纸,在AutoCAD命令栏键入“netload”命令,加载“更改线色和文字颜色.dll”程序集,如图13所示。最后键入之前的注册命令“TH7”,就会发现线束图纸中的文字颜色与直线颜色迅速改变成设定的颜色。

图13 加载编辑好的程序集

5 结论

本文以初学者的视角,利用C#二次开发AutoCAD在重卡线束图的应用做了简单的研究,详细论述了开发程序集的过程以及简单的应用过程。通过对AutoCAD二次开发在重卡线束图的简单应用研究,收获与优势有以下几点。

1)利用C#二次开发AutoCAD,可以节省设计员的时间,极大地提高设计员设计效率,相对比人工更改图纸而言,速度快且准确度高。

2)AutoCAD具有强大的数据库而没有数据分析能力,借助二次开发可以对其数据库中的大量数据进行操作,得到想要的结果。

3)摸清了C#二次开发AutoCAD的原理,为后续开发线束图纸设计辅助软件的开发、线束图纸工艺软件的开发奠定了扎实的基础。

本文介绍了C#二次开发AutoCAD在重卡线束图纸的开发过程,对线束图纸中更改文字颜色与直线颜色的简单应用做了研究。在此次开发过程中,作者查阅了大量资料,学到二次开发很多知识与方法,为后续开发辅助软件开发打下扎实的基础。本文所阐述的程序集,已经集成于后续线束辅助软件里,得到普遍的应用。