楊 亞,蔣麗萍,王 健
(中國電子科技集團公司第二十一研究所,上海200233)
電機作為生產(chǎn)工業(yè)的“發(fā)動機”,目前發(fā)展十分迅猛,競爭非常激烈,在激烈的競爭環(huán)境中必須不斷地提高競爭力和生產(chǎn)能力以適應(yīng)電機多品種、短周期的生產(chǎn)特點。沖片是電機的關(guān)鍵零件,在特種電機研制開發(fā)中,電機沖片的繪制往往比較復(fù)雜,傳統(tǒng)的沖片設(shè)計往往是通過在CAD系統(tǒng)中進行手工繪制,繪制過程比較繁瑣,需要進行上百次的修改、裁剪、刪除等命令來實現(xiàn),非常費時。一旦某個參數(shù)需要調(diào)整,則整個沖片的設(shè)計需要重新進行。待電機設(shè)計完成后準(zhǔn)備進行生產(chǎn)時,一般首輪小批量研制沖片的加工是通過線切割來實現(xiàn),線切割編程時也需要對沖片的槽形進行建模,此處也需要對槽形進行繪制。待產(chǎn)品進行較大批量的生產(chǎn),沖片的加工主要是通過單沖后進行落料或是直接通過復(fù)沖來完成。單沖模或復(fù)沖模的槽形與沖片槽形相仿,由于沖模設(shè)計需要考慮沖裁間隙,其槽形尺寸與沖片零件尺寸并不相同,仍需要重新設(shè)計。在電機的整個研發(fā)生產(chǎn)過程中需要多次繪制沖片槽形圖,非常耗時,效率不高。勢必需要引入新的設(shè)計方式來解決此類問題,以提高設(shè)計和生產(chǎn)效率。沖片的參數(shù)化設(shè)計應(yīng)運而生。
通過使用 Visual Basic 6.0(以下簡稱 VB)對AutoCAD 2008進行二次開發(fā),把常用的系列化的沖片進行參數(shù)化編程,可使沖片圖形的繪制時間由原先的10 min以上,縮減到1 min以內(nèi),大大提高了設(shè)計和生產(chǎn)效率。在提高效率的同時,也增加了繪圖的精準(zhǔn)性,只要輸入正確的參數(shù)就可以得到1∶1的dwg格式的沖片圖,可以直接為設(shè)計和加工所用,極大提高設(shè)計開發(fā)的效率。同時把完成設(shè)計的沖片參數(shù)保存的相應(yīng)數(shù)據(jù)庫中,為后續(xù)產(chǎn)品的設(shè)計提供參考或借用,可進一步提高設(shè)計效率,節(jié)約成本,促進沖片的標(biāo)準(zhǔn)化設(shè)計。
本程序采用VB調(diào)用AutoCAD來建立參數(shù)化設(shè)計系統(tǒng),首先要解決的是實現(xiàn)VB和AutoCAD的連接。VB應(yīng)用程序與AutoCAD的連接ActiveX Automation技術(shù)應(yīng)用的第一步。ActiveX Automation是一個建立在COM(Component Object Model)對象模型之上的標(biāo)準(zhǔn)通信開放協(xié)議,允許對象間通過一定的接口相互通訊。通過ActiveX Automation一個程序操縱另外一個應(yīng)用程序中現(xiàn)實的對象,并且該對象具有它原有的屬性和方法。ActiveX Automation由客戶程序和服務(wù)器組成,服務(wù)器方實現(xiàn)客戶方發(fā)出的請求。只要服務(wù)器程序提供一定的接口,客戶程序就可以通過標(biāo)準(zhǔn)接口訪問,使任何服務(wù)器程序?qū)ο髮崿F(xiàn)自動化。這里可以理解為AutoCAD為服務(wù)器程序。我們所要編制的程序是客戶端程序,它們之間通過ActiveX Automation建立連接,并操縱AutoCAD實現(xiàn)自動化繪圖。
首先在VB主菜單上點擊【工程】然后選擇【引用】,在彈出的對話框中找到“AutoCAD 2008 Type Library”在其前面的方框中打鉤,并進行確定。然后在VB中建立公共模塊LinkCAD,以便在整個VB工程中都可以對此模塊進行調(diào)用。主要程序如下:
對于一個繪制完整的二維工程圖形,除了一些基本的結(jié)構(gòu)線、輔助線外,還需要設(shè)計不同線條的圖層、標(biāo)注、文字說明等。所以在程序的開發(fā)過程中需要利用ActiveX Automation技術(shù)對圖形的圖層、文字、標(biāo)注等進行處理,具體流程如圖1所示。
圖1 圖形處理流程圖
參數(shù)化設(shè)計圖形的實現(xiàn)都是依靠程序代碼來實現(xiàn),在VB調(diào)用AutoCAD進行參數(shù)化繪圖的過程中,最常見的是設(shè)置圖形的各種線條和圖層。在線型上,沖片圖形的設(shè)計主要用到的是線段、圓和圓弧的繪制。下面主要對線段、圓和圓弧的實現(xiàn)方法進行說明。
1.3.1 線段繪制的程序?qū)崿F(xiàn)
線段只需要兩個端點就可以確定,所以只要確定兩個點的坐標(biāo)就可以確定一條直線了。首先定義要繪制線段的兩個端點分別為PointO(0~2)和PointO1(0~2)以及一個線段的對象LineObjOO1,然后調(diào)用AutoCAD的接口函數(shù)Set LineObjOO1=acadApp.ActiveDocument.ModelSpace.AddLine(PointO,PointO1),將兩個端點的坐標(biāo)代入到對應(yīng)的AddLine(PointO,PointO1)中即可完成線段的繪制。
1.3.2 圓的繪制的程序?qū)崿F(xiàn)
確定一個圓的圖形只需要原點坐標(biāo)和半徑即可繪制出圓。首先定義要繪制圓的圓心點為PointO(0~2)和一個圓的對象 CrlObjDos,然后調(diào)用 Auto-CAD的接口函數(shù)Set CrlObjDos=acadApp.Active-Document.ModelSpace.AddCircle(PointO,Rad),將圓心的坐標(biāo)和圓的半徑值代入到對應(yīng)的AddCircle(PointO,Rad)中即可完成圓的繪制。
1.3.3 圓弧繪制的程序?qū)崿F(xiàn)
確定一個圓弧的圖形需要圓弧圓心坐標(biāo)、圓弧的半徑、圓弧的兩個端點的坐標(biāo)。首先定義要繪制的圓弧的圓心點為PointO(0~2)、圓弧的兩個端點PointA(0~2)和PointB(0~2)以及要繪制的圓弧的對象 acadArc,通過 AutoCAD內(nèi)建函數(shù) Angle-FromXAxis(PointO,PointB)將 PointO(0~2)、PointA(0~2)和PointO(0~2)、PointB(0~2)分別代入該函數(shù),則可得到∠AOX和∠BOX的角度(弧度),然后調(diào)用AutoCAD的接口函數(shù)Set arcObjAOB=acadApp. ActiveDocument. ModelSpace. AddArc(PointO,Rad,angleFrAOX,angleFrBOX),將圓心的坐標(biāo)和圓弧半徑值和上面求得的∠AOX、∠BOX代入到對應(yīng)的AddArc(PointO,Rad,angleFrAOX,angleFrBOX)中即可完成圓弧AOB的繪制(如圖2所示)。
圖2 圓弧繪制圖
基于電機沖片類型的不同,其計算方式有很大不同,需要根據(jù)不同類型的沖片劃分程序模塊。電機設(shè)計常用的8種類型槽形沖片如圖3所示。下面將以圓底槽轉(zhuǎn)子沖片圖形的參數(shù)化的實現(xiàn)過程為例進行闡述。
圖3 槽形圖
1.4.1 半槽形的繪制
已知量槽數(shù) N、槽口寬度 B0、沖片外徑 Dos、齒寬BZ、小節(jié)圓直徑 Dxj、大節(jié)圓直徑 Ddj、槽口高度H0、沖片內(nèi)徑Dis,如圖4所示。通過已知參數(shù)可求出a點坐標(biāo)、b點坐標(biāo)、c點坐標(biāo)、d點坐標(biāo)、e點坐標(biāo)、f點坐標(biāo)和O1點坐標(biāo)。并求出作圓弧所需的各線與原點的角度即線段、圓弧和圓的方法制作出半個槽形。具體算法如下:
ao線相對于X軸的夾角∠AOX的計算:
a點坐標(biāo)計算:
在求得∠AOX的角度后通過AutoCAD內(nèi)建的PolarPoint函數(shù)可以求得a點坐標(biāo):PointA=acadA-pp.ActiveDocument.Utility.PolarPoint(PointO,AngleAOX,Dos/2)
b點坐標(biāo)計算:
c點坐標(biāo)計算:
d點坐標(biāo)計算:
如圖5所示,欲求d點坐標(biāo),先求出O2點坐標(biāo),參照a點坐標(biāo)計算方法可以得到 O2點坐標(biāo):PointO2。然后建立一個原點為O2,X軸和Y軸分別平行于絕對坐標(biāo)系的X軸和Y軸的坐標(biāo)系,在此相對坐標(biāo)系中求出d點坐標(biāo)。
PointDd=acadApp.ActiveDocument.Utility.PolarPoint(PointO2,AngleAOX,Bz/2),此處的夾角與∠AOX大小相等。最后把d點坐標(biāo)換算到絕對坐標(biāo)中的到d點的X、Y坐標(biāo)分別:
e點坐標(biāo)計算:
齒底圓O1半徑r:
然后參照d點坐標(biāo)計算方法可求出e點相對于O1坐標(biāo)系的坐標(biāo):
PointEe=acadApp.ActiveDocument.Utility.PolarPoint(PointO1,AngleAOX+π,r),最后可以得到 e點坐標(biāo):
待完成 a、b、c、d、e、f六個點的坐標(biāo)值的計算后,分別進行線段和圓弧的繪制,即可完成半個槽形的繪制,即 a、b、c、d、e、f所圍成的半個槽形圖如圖6所示。
圖6 半槽形圖
1.4.2 鏡像方法
基于上述半個槽形繪制完成后,只要對此半邊槽形進行鏡像處理就可以完成一個完整槽形的繪制,這里ActiveX Automation為我們提供了針對圓弧和線段對象進行鏡像方法Mirror(PointO1,PointO),這里PointO1和PointO是鏡像中心線上的任意兩點的坐標(biāo)。通過此方法分別對AOB弧、bc線段、cd線段、de線段和eO1f弧進行鏡像,就可以完成一個槽形的繪制。
1.4.3 旋轉(zhuǎn)陣列方法
客戶端程序通過ActiveX Automation接口程序控制AutoCAD 2008自動繪制一個完整的沖片圖,可直接為設(shè)計所用。其它7類沖片可依據(jù)類似方法實現(xiàn)沖片的參數(shù)化設(shè)計,此處不做累述。
1.4.4 界面設(shè)計
為增加程序界面的友好性,采用單頁面進行設(shè)計。采用選項卡控件(SSTab)來實現(xiàn),把每一種槽形布置在選項卡的每一個標(biāo)簽中,節(jié)約頁面資源,同時選項卡的標(biāo)簽可以根據(jù)需求增減,為后續(xù)程序的開發(fā)提供較好的擴展空間?;诓坌纬叽巛^復(fù)雜,且有相對位置關(guān)系,在必要參數(shù)的左側(cè)以Image控件顯示每一類槽形的示意圖及示意標(biāo)注,可最大限度的指導(dǎo)程序使用者的使用。具體使用方法以圓底槽為例,如圖7所示。按照示意圖的示意標(biāo)注在右側(cè)的參數(shù)欄中輸入需要繪制沖片的相關(guān)參數(shù),點擊【生成沖片圖】按鈕,既可在AutoCAD 2008的環(huán)境中生成指定參數(shù)的沖片圖,如圖8所示。待設(shè)計參數(shù)確定后,只要點擊【存入數(shù)據(jù)庫】按鈕即可將設(shè)計完成的沖片參數(shù)存入指定數(shù)據(jù)庫。其它類型沖片與此類似。
對于沖片等較復(fù)雜、使用頻繁且成系列化的零件,采用傳統(tǒng)的手工繪制容易出錯,繪制速度較慢,而采用參數(shù)化的尺寸驅(qū)動方式,繪圖時間大大節(jié)省,降低錯誤發(fā)生,大大提高了電機設(shè)計、模具設(shè)計、估計工分、線切割加工人員的工作效率和質(zhì)量,降低動強度。同時可將此種方法推廣到電機設(shè)計其它零件中,如槽楔、非標(biāo)的波紋墊圈等。本文介紹了沖片輔助設(shè)計的開發(fā)思想,在此基礎(chǔ)上還可以進行補充完善,以增強軟件的功能,提高實用性。
[1] 張樹兵.Visual Basic 6.0中文版入門與提高[M].北京:清華大學(xué)出版社,1999.
[2] 蘇金明.用Visual Basic開發(fā)交互式CAD系統(tǒng)[M].北京:電子工業(yè)出版社,2002.
[3] 張晉西.Visual Basic與AutoCAD二次開發(fā)[M].北京:清華大學(xué)出版社,2002.
[4] 徐 源,荊冰彬,賀利樂,等.AutoCAD2000二次開發(fā)技術(shù)[M].北京:人民交通出版社,2001.