張愛梅,吳衛(wèi)衛(wèi),李林巖,張 虹
(1.鄭州大學(xué)機(jī)械工程學(xué)院,河南鄭州450001;2.許繼變壓器有限公司,河南許昌461000)
目前國(guó)內(nèi)的加工制造技術(shù)還不能夠達(dá)到無圖生產(chǎn)的條件,因此,二維工程圖仍然是表達(dá)零部件信息的一種重要的方式[1].
結(jié)合國(guó)內(nèi)某變壓器公司干式變壓器產(chǎn)品族系列化的特點(diǎn),在完成三維模型參數(shù)化之后,系列化的零件工程圖的繪制仍存在重復(fù)勞動(dòng)的現(xiàn)象,并且由Inventor三維模型驅(qū)動(dòng)生成的工程圖其視圖布局、比例、尺寸等都與國(guó)標(biāo)有很大差別,不適合作為直接加工參考,而用軟件自帶功能修改又很繁瑣.為了解決企業(yè)在由三維零件生成工程圖過程中存在的以上問題,筆者將詳細(xì)介紹用VB語言對(duì)Inventor進(jìn)行二次開發(fā),編制系列化零件自動(dòng)繪圖系統(tǒng),實(shí)現(xiàn)系列化零件工程圖的自動(dòng)繪制,生成符合國(guó)家標(biāo)準(zhǔn)的工程圖.
對(duì)于形狀相同或相似、尺寸不同的系列化變壓器零件的繪制,在Inventor API環(huán)境下可通過參數(shù)化編程實(shí)現(xiàn).對(duì)于此類零件的工程圖生成同樣可以通過對(duì)Inventor進(jìn)行二次開發(fā)完成.Inventor是Autodesk公司推出的基于特征的參數(shù)化實(shí)體造型軟件,也是基于Microsoft Windows的機(jī)械設(shè)計(jì)系統(tǒng).Inventor可以由三維零部件驅(qū)動(dòng)生成參數(shù)化的二維工程圖,二維工程圖中的注釋、尺寸、文件屬性等參數(shù)與三維模型中的信息是一致的.Inventor提供了強(qiáng)大的二次開發(fā)接口,在Inventor中使用API是相當(dāng)有意義的,在于能夠添加一些滿足特定專業(yè)設(shè)計(jì)需求的自定義功能[2].
Inventor API是以面向?qū)ο蟮姆绞奖┞稇?yīng)用程序的功能,這種方式比面向過程的方式更容易學(xué)會(huì)和使用.只要理解和掌握某些面向?qū)ο蟪绦蛟O(shè)計(jì)的一般概念,再結(jié)合API對(duì)象結(jié)構(gòu)模型就可以進(jìn)行二次開發(fā)[3].
Inventor提供了3種開發(fā)途徑,分別是Add-In、獨(dú)立的 EXE 和 Apprentice Serve[4].筆者出于對(duì)應(yīng)用程序用戶界面及效率的考慮,以VB6.0作為開發(fā)工具,采用Add-In的方式對(duì)Inventor進(jìn)行二次開發(fā).
變壓器零件的主要參數(shù)包括結(jié)構(gòu)參數(shù)、特征參數(shù)及屬性參數(shù).Inventor可以由三維零部件自動(dòng)生成參數(shù)化的二維工程圖,其中,結(jié)構(gòu)參數(shù)及特征參數(shù)用來約束主結(jié)構(gòu)尺寸及特征尺寸的變化范圍,從而控制視圖放置位置及視圖比例;屬性參數(shù)用來控制技術(shù)要求以及標(biāo)題欄中工程圖號(hào)、材料等屬性的自動(dòng)生成.筆者將使用Excel表作為參數(shù)數(shù)據(jù)庫(kù),不同型號(hào)變壓器的參數(shù)分別存放在不同的Excel表中,用戶可通過選擇不同的Excel表來完成參數(shù)的替換.筆者的開發(fā)思路即是在Inventor工程圖環(huán)境下,通過參數(shù)數(shù)據(jù)庫(kù)選擇及三維零件的調(diào)用生成位置及比例適中的視圖,然后以視圖線條為基準(zhǔn)完成尺寸標(biāo)注、符號(hào)標(biāo)注及技術(shù)要求填寫等一系列操作,達(dá)到工程圖自動(dòng)繪制的目的.系統(tǒng)總體框圖如圖1所示.
一張完整的零件圖包含的內(nèi)容很多,而在變壓器的系列零件繪圖時(shí),當(dāng)零件尺寸發(fā)生變化時(shí),圖紙中的尺寸也會(huì)隨之發(fā)生改變,圖紙中包含的尺寸、形位公差、粗糙度等的標(biāo)注如果按原來的程序自動(dòng)標(biāo)注就會(huì)出現(xiàn)亂標(biāo)的問題.因?yàn)槌叽?、形位公差及粗糙度等在Inventor工程圖中一般是按照在圖紙中的坐標(biāo)標(biāo)注的,在零件尺寸發(fā)生變化時(shí),坐標(biāo)也會(huì)發(fā)生改變,以至于尋找不到所應(yīng)該標(biāo)的坐標(biāo)[5].而筆者通過聚類及比較幾何量的方法找到邊界線條作為尺寸及一些符號(hào)標(biāo)注的參照,然后在圖紙中用相對(duì)坐標(biāo)進(jìn)行標(biāo)注,使系列化零件的工程圖標(biāo)注達(dá)到國(guó)家標(biāo)準(zhǔn)的要求.這種尋找邊界代理的方法也成為本課題的關(guān)鍵技術(shù).
圖1 系統(tǒng)總體框圖Fig.1 Framework of the system
在Inventor的“Metric”選項(xiàng)卡里提供了很多不同標(biāo)準(zhǔn)的模板,“GB.idw”符合中國(guó)的國(guó)家標(biāo)準(zhǔn).為更進(jìn)一步滿足企業(yè)要求,筆者對(duì)標(biāo)題欄進(jìn)行修改,對(duì)繪圖環(huán)境進(jìn)行設(shè)置,然后保存為工程圖模板.修改后的標(biāo)題欄如圖2所示,表中的“名稱”、“材料”、“零件代號(hào)”等以屬性文字的形式輸入,表示在自動(dòng)生成工程圖時(shí)這些項(xiàng)目可以繼承三維零件的屬性參數(shù)自動(dòng)填充.
圖2 修改后的標(biāo)題欄樣式Fig.2 The modified title block
由于本系統(tǒng)的開發(fā)使用Inventor自帶的開發(fā)模板Wizards,首先要安裝工具……/AutoDesk/Inventor11/SDK/Tools/Developers/Wizards;啟動(dòng)VB6.0新建“Inventor Add-In”工程,此時(shí)需要完成對(duì)Inventor及 Excel對(duì)象庫(kù)的引用,選擇“工程”菜單里的“引用”項(xiàng),在彈出的窗口中勾選“AutoDesk Inventor Object Library”和“Microsoft Excel 12.0 Object Library”.然后需要完成對(duì)象聲明,參數(shù)數(shù)據(jù)庫(kù)調(diào)用以及工程圖保存路徑設(shè)置等的工作.主要對(duì)象聲明及賦值如下:
Inventor應(yīng)用程序?qū)嵗龑?duì)象變量聲明并賦值:
Dim oapp As Inventor.Application
Set oapp=AddInSiteObject.Application
Excel表的聲明與賦值:
Dim XLApp As New Excel.Application
Dim Wrk As Excel.Workbook
Dim Sht As Excel.WorkSheet
Set XLApp=CreateObject("Excel.Application")
Set Wrk=XLApp.Workbooks.Open(Text1.Text,F(xiàn)alse,True)
Set Sht=Wrk.Worksheets("Mainly")結(jié)構(gòu)參數(shù)的賦值舉例:
Jba_L=Sht.Cells(107,5)/10
Jbi_L=Sht.Cells(106,5)/10
屬性參數(shù)賦值舉例:
xinghao=Sht.Cells(3,2)
工程圖的保存路徑,按照企業(yè)的要求工程圖自動(dòng)保存在以Excel表名稱為名稱的文件夾里,路徑創(chuàng)建的主要程序如下:
Dim filename As String '從完整路徑中分離出文件名,不包括后綴
filename=fl_filename(Text1.Text)
spath2=spath0&filename&“工程圖”
If Dir(spath,vbDirectory)= ""Then
MkDir(spath2)
Else
Dim N1 As Integer
N1=MsgBox("該計(jì)算單文件夾已經(jīng)存在選擇“是”繼續(xù)進(jìn)行)
以變壓器零件“拉板”為例說明工程圖的生成過程.按照企業(yè)的要求,零件工程圖圖紙大小選擇A4,調(diào)用上文中定制的模板即可.用戶操作界面如圖3所示.用戶只需要選擇Excel參數(shù)數(shù)據(jù)庫(kù)(這里Excel表是以變壓器的容量命名的,選擇不同容量的Excel表即完成參數(shù)的替換),然后選擇需要調(diào)用的三維零件,系統(tǒng)即可根據(jù)結(jié)構(gòu)參數(shù)及特征參數(shù)確定合適比例,生成標(biāo)準(zhǔn)的三視圖,完成尺寸及一些符號(hào)標(biāo)注以及屬性參數(shù)的繼承、工程圖自動(dòng)保存等一系列操作.
圖3 用戶操作界面Fig.3 User interface
圖4所示是選擇容量為1 250 kVA的Excel表以及其所對(duì)應(yīng)的三維零件生成的“拉板”工程圖.而當(dāng)選擇2 000 kVA或者其它容量的Excel表以及其所對(duì)應(yīng)的三維零件生成“拉板”工程圖時(shí),由于零件尺寸的變化,即使選擇合適比例,視圖及線條的尺寸也會(huì)有所變化,為保證尺寸及符號(hào)同樣標(biāo)注在合適的位置,就需要用到尋找邊界代理的方法,找到尺寸及符號(hào)標(biāo)注的參照.
圖4 “拉板”工程圖Fig.4 Drawing of“La Ban”
Inventor工程圖幾乎所有的標(biāo)注都是基于投影視圖中的線條的,以圖4左視圖中右側(cè)的粗糙度符號(hào)標(biāo)注為例,如果找到粗糙度符號(hào)所標(biāo)注的線條(即左視圖中最右側(cè)的豎直線條),然后給它一個(gè)編號(hào)作為代理,那么就可以以這個(gè)代理為參照進(jìn)行標(biāo)注,粗糙度符號(hào)的位置是以這個(gè)代理線條為參照采用相對(duì)坐標(biāo)進(jìn)行標(biāo)注的,從而保證了粗糙度符號(hào)與該線條相對(duì)位置的穩(wěn)定.此后不管選擇哪個(gè)容量的“拉板”零件,即使投影視圖大小有所變化,但這個(gè)線條的代理編號(hào)是不會(huì)變的,粗糙度的標(biāo)注也不會(huì)出現(xiàn)混亂的現(xiàn)象.尺寸標(biāo)注也是同樣的原理.下面就結(jié)合主要程序進(jìn)行說明.
首先應(yīng)該以視圖(oView)為基礎(chǔ)挑選出形狀為直線的線條,并且定義一個(gè)集合olines進(jìn)行存儲(chǔ):
For Each oDrawingCurve In oView1.Drawing-Curves
If oDrawingCurve.CurveType=kLineSegment-Curve Then
olines.Add oDrawingCurve
然后利用向量比較挑選出直線線條中的豎直線并存儲(chǔ)在集合oVerLines中:
Set oZVec=oTG.CreateVector2d(0,1)
For Each oDrawingCurve In olines
If oVec.IsParallelTo(oZVec)Then
oVerLines.Add oDrawingCurve
最后通過幾何量比較也即將豎直線條中點(diǎn)坐標(biāo)的X值最大的線條找出:
For Each oDrawingCurve In oVerLines
Set oMidpoint=oDrawingCurve.MidPoint
Dim oMaxX As Single
oMaxX=oVerLines.Item(1).MidPoint.X
For i=1 To oVerLines.Count
Set oMidpoint=oVerLines.Item(i).MidPoint
If oMidpoint.X>oMaxX Then
oMaxX=oMidpoint.X
Set oDrawingCurves(1)=oDrawingCurve
這樣將最右邊的豎直線條找到,并且用序號(hào)1作為代理.可以用oDrawingCurves(1)來代表這個(gè)線條進(jìn)行有關(guān)操作.例如圖4左視圖中的粗糙度標(biāo)注可用如下方法:
Set oMidpoint = oDrawingCurves(1).Mid-Point
Set oGeometryintent=oSheet.CreateGeometry-Intent(oDrawingCurves(1),oMidpoint)
Call oLeaderPoints.Add(oGeometryintent)
Set oSymbol=oSheet.SurfaceTextureSymbols.Add(oLeaderPoints,kBasicalSurfaeType)
oLeaderPoints.Clear
利用同樣的方法可以找出形狀為圓形、半圓形、橢圓形等等的線條作為邊界線條并用不同的編號(hào)作為代理,進(jìn)行尺寸標(biāo)注及必要的符號(hào)標(biāo)注,從而解決系列化零件的工程圖標(biāo)注問題,完成工程圖的自動(dòng)繪制.
筆者利用VB語言對(duì)Inventor進(jìn)行二次開發(fā),在企業(yè)完成變壓器零件參數(shù)化設(shè)計(jì)后,以此為基礎(chǔ)開發(fā)出系列化零件的工程圖自動(dòng)繪制系統(tǒng),避免了工作人員的重復(fù)勞動(dòng),極大地提高了企業(yè)的繪圖效率.筆者提出的尋找邊界代理的方法為工程圖繪圖系統(tǒng)的開發(fā)提供了極大的便利,使有關(guān)工程圖的開發(fā)變得容易上手.同時(shí)也希望在今后的工作中能夠不斷完善該系統(tǒng).
[1]胡仁喜,康士廷.Autodesk Inventor Professional 2010中文版從入門到精通[M].北京:機(jī)械工業(yè)出版社,2009.
[2]陳伯雄,張朝陽.Inventor R6 VB(A)程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2004.
[3]令狐克志,王轉(zhuǎn),程國(guó)全.Inventor API在貨架參數(shù)化三維造型中的應(yīng)用[J].機(jī)械工程與自動(dòng)化,2005,128(1):26-28.
[4]葉樂曉,王毅剛.基于Inventor API的家具三維造型設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(2):496-499.
[5]李生元,尚銳.Solidworks二次開發(fā)技術(shù)在工程圖中的應(yīng)用[J].遼寧工業(yè)大學(xué)學(xué)報(bào),2010,30(6):374-376.