張俊,申瑋,宋英華,張嵐
(中國重汽集團(tuán)汽車研究總院,山東 濟(jì)南 250002)
線束系統(tǒng)作為車輛的“神經(jīng)”,對汽車電氣功能的實(shí)現(xiàn)起著至關(guān)重要且不可替代的作用,隨著汽車電器配置越來越高,線束系統(tǒng)隨之變得越來越復(fù)雜。目前,車輛系統(tǒng)的線束設(shè)計(jì)主要采用AutoCAD等軟件進(jìn)行二維設(shè)計(jì)。隨著制圖要求的不斷提高,在AutoCAD設(shè)計(jì)龐大的線束時,線束圖中的文字顏色與直線的顏色會依據(jù)公司傳統(tǒng)或個人習(xí)慣加以區(qū)分,這樣可以使得線束圖直觀、清晰明了,易于區(qū)分。而在線束圖紙?jiān)O(shè)計(jì)或者更改時,往往拿到的Auto-CAD線束圖紙中文字與直線等內(nèi)容顏色沒有統(tǒng)一,使得圖紙顯著很亂,不易區(qū)分,這樣就得花費(fèi)大量時間去統(tǒng)一線束圖紙中文字、直線的顏色,作者曾在設(shè)計(jì)線束圖紙的過程中,花費(fèi)大量時間去統(tǒng)一顏色,使得設(shè)計(jì)效率很低。借助AutoCAD的二次開發(fā),開發(fā)一個程序集,可以快速地將文字與直線顏色進(jìn)行統(tǒng)一就十分的必要。本文以初學(xué)者的視角,利用C#二次開發(fā)AutoCAD在重卡線束圖做了簡單的應(yīng)用研究,詳細(xì)論述了開發(fā)程序集的過程以及簡單的應(yīng)用過程。通過本文的簡單應(yīng)用研究,理清了C#二次開發(fā)Auto-CAD的原理,為后續(xù)線束設(shè)計(jì)輔助軟件、線束工藝軟件等的開發(fā)奠定了基礎(chǔ)。
AutoCAD是一款通用的計(jì)算機(jī)輔助設(shè)計(jì)軟件,具有完善的繪圖功能,提供了多種接口,易于不同行業(yè)的人員采用高級編程語言對其進(jìn)行擴(kuò)充和修改,豐富其附加功能,能最大限度地滿足用戶的特殊需求。AutoCAD第一版于1982年11月推出,其二次開發(fā)語言及工具也在不斷地涌現(xiàn)。開發(fā)環(huán)境對應(yīng)的編程語言有:AutoLISP、ADS、ObjectARX、VisualLISP、VBA、AutoCAD.NET等。本 文 利 用AutoCAD.NET框架,使用C#語言對AutoCAD進(jìn)行二次開發(fā)。
AutoCAD有強(qiáng)大的數(shù)據(jù)庫而沒有數(shù)據(jù)分析能力,借助二次開發(fā)提取其數(shù)據(jù)庫中的數(shù)據(jù),同時利用Windows自帶的函數(shù)庫,可以對大量數(shù)據(jù)進(jìn)行分析,提高AutoCAD的使用效率。
眾所周知,C#是一種面向?qū)ο蟮木幊陶Z言,把一切當(dāng)成對象來處理。在C#二次開發(fā)AutoCAD過程中,AutoCAD圖紙中的直線、圓弧、文字和標(biāo)注等圖形是對象,圖層、組合、塊等都是對象。和其他二次開發(fā)語言相比,C#語言簡單易學(xué),成為二次開發(fā)AutoCAD的首選語言。
AutoCAD.NET API由不同的DLL文件組成,這些DLL文件包含有大量的類、結(jié)構(gòu)、方法及事件,用于訪問圖形文件對象或AutoCAD程序?qū)ο?。常用的AutoCAD.NET API的3個主要DLL文件如下。
1)acdbmgd.dll:當(dāng)處理圖形文件中存儲的對象時引用。
2)acmgd.dll:當(dāng)處理AutoCAD應(yīng)用程序和用戶接口時引用。
3)accui.dll:當(dāng)處理自定義文件時引用。
本文所引用的接口為acdbmgd.dll與acmgd.dll。
在Visual Studio軟件中新建一個類庫項(xiàng)目,如圖1所示。不同版本的AutoCAD對應(yīng)不同的.net框架,由于本文是在AutoCAD2007版本中進(jìn)行的,故框架選擇.net3.5。
圖1 新建類庫項(xiàng)目
在Visual Studio軟件中添加AutoCAD的程序接口acdbmgd.dll、acmgd.dll,將復(fù) 制 本地改為False,如圖2所示。
圖2 添加引用
在編寫程序集之前,需使用如圖3所示的命名空間。命名空間里包含大量的類、結(jié)構(gòu)、方法及事件,用于訪問圖形文件對象或AutoCAD程序?qū)ο蟆?/p>
圖3 使用命名空間
注冊命令“TH7”如圖4所示。此命令相當(dāng)于程序集的指令,當(dāng)發(fā)送此指令后,程序才開始運(yùn)行。后續(xù)在AutoCAD命令欄輸入“TH7”后,編寫的程序集才開始執(zhí)行。
圖4 注冊命令“TH7”
重卡的線束圖紙中主要包括導(dǎo)線信息(線號、線色、線徑、端子等)、波紋管長度、文字說明、插接器圖例等,如圖5所示。
圖5 重卡線束圖紙
在二次開發(fā)過程中,可以籠統(tǒng)地把線束圖紙分為單行文本與直線等數(shù)據(jù)組成,這些數(shù)據(jù)記錄在AutoCAD數(shù)據(jù)庫中,通過調(diào)用其數(shù)據(jù)庫,然后通過選擇集的操作,可以分別得到單行文本與直線信息,分別對其屬性進(jìn)行更改,將得到我們想要的效果。
在遍歷AutoCAD數(shù)據(jù)庫之前,需要理解AutoCAD對象層次,如圖6所示。
圖6 AutoCAD對象層次示意圖
Application對 象 是AutoCAD.NET API的 根 對 象,從Application對象,可以訪問AutoCAD主窗口,以及任何打開的圖形,并進(jìn)而訪問圖形里的各個對象。Application對象有一個DocumentManager屬性,用來返回DocumentCollection對象,該對象提供了訪問當(dāng)前打開的AutoCAD圖形的功能,并允許創(chuàng)建、保存、打開圖形文件。
Document對 象,實(shí) 際 上 就 是 一 個AutoCAD圖 形,是DocumentCollection對象的一部分,提供了訪問與Document對象相關(guān)聯(lián)的Database對象的功能。
Database對象包含AutoCAD所有的圖形對象和絕大部分非圖形對象,其中包括實(shí)體(圖元)、符號表、命名字典等。實(shí)體(圖元)表示圖形里的圖形對象,直線、圓、弧線、文字、填充和多義線等都是實(shí)體。
由此可以編程遍歷AutoCAD數(shù)據(jù)庫Database,并通過選擇集的操作可分別得到單行文本與直線的數(shù)據(jù),獲取程序如圖7所示。
圖7 獲取單行文本與直線程序
通過以上代碼,程序?qū)⒈闅v線束圖紙的數(shù)據(jù)庫,通過選擇集的設(shè)置,分別得到單行文本對象與直線對象。
通過遍歷AutoCAD數(shù)據(jù)庫得到的單行文本對象與直線對象,對其顏色的屬性值ColorIndex進(jìn)行賦值,即可改變其顏色。ColorIndex值可在AutoCAD圖紙中,通過命令欄鍵入LI,即可得到。本文因公司傳統(tǒng)習(xí)慣,將文字顏色更改為青色,直線更改為綠色,這樣可以使圖紙較為整齊,清晰明了。青色與綠色的ColorIndex賦值通過鍵入LI得到,如圖8~圖9所示。
圖8 綠色的ColorIndex值
圖9 青色的ColorIndex值
由圖8~圖9可以看出,綠色的ColorIndex值為3,青色的ColorIndex值為4,通過編寫函數(shù)分別對其ColorIndex進(jìn)行相應(yīng)的賦值,編寫更改顏色的函數(shù)代碼如圖10所示。
圖10 編寫更改顏色的函數(shù)
將改變顏色的函數(shù)寫入主函數(shù),便可以實(shí)現(xiàn)線束圖紙顏色的改變。主程序如圖11所示。
圖11 主程序
在程序集的屬性里將名稱更改為“更改線色和文字顏色”,如圖12所示,然后生成解決方案,在默認(rèn)文件夾下,就會生成“更改線色和文字顏色.dll”的程序集。
圖12 更改程序集名稱
打開已完成或者正在設(shè)計(jì)的AutoCAD線束圖紙,在AutoCAD命令欄鍵入“netload”命令,加載“更改線色和文字顏色.dll”程序集,如圖13所示。最后鍵入之前的注冊命令“TH7”,就會發(fā)現(xiàn)線束圖紙中的文字顏色與直線顏色迅速改變成設(shè)定的顏色。
圖13 加載編輯好的程序集
本文以初學(xué)者的視角,利用C#二次開發(fā)AutoCAD在重卡線束圖的應(yīng)用做了簡單的研究,詳細(xì)論述了開發(fā)程序集的過程以及簡單的應(yīng)用過程。通過對AutoCAD二次開發(fā)在重卡線束圖的簡單應(yīng)用研究,收獲與優(yōu)勢有以下幾點(diǎn)。
1)利用C#二次開發(fā)AutoCAD,可以節(jié)省設(shè)計(jì)員的時間,極大地提高設(shè)計(jì)員設(shè)計(jì)效率,相對比人工更改圖紙而言,速度快且準(zhǔn)確度高。
2)AutoCAD具有強(qiáng)大的數(shù)據(jù)庫而沒有數(shù)據(jù)分析能力,借助二次開發(fā)可以對其數(shù)據(jù)庫中的大量數(shù)據(jù)進(jìn)行操作,得到想要的結(jié)果。
3)摸清了C#二次開發(fā)AutoCAD的原理,為后續(xù)開發(fā)線束圖紙?jiān)O(shè)計(jì)輔助軟件的開發(fā)、線束圖紙工藝軟件的開發(fā)奠定了扎實(shí)的基礎(chǔ)。
本文介紹了C#二次開發(fā)AutoCAD在重卡線束圖紙的開發(fā)過程,對線束圖紙中更改文字顏色與直線顏色的簡單應(yīng)用做了研究。在此次開發(fā)過程中,作者查閱了大量資料,學(xué)到二次開發(fā)很多知識與方法,為后續(xù)開發(fā)輔助軟件開發(fā)打下扎實(shí)的基礎(chǔ)。本文所闡述的程序集,已經(jīng)集成于后續(xù)線束輔助軟件里,得到普遍的應(yīng)用。