摘 要:文章介紹了以Excel 2003、AutoCAD 2008為平臺,通過VBA程序自動完成電力變壓器的結(jié)構(gòu)設(shè)計的應(yīng)用方法。
關(guān)鍵詞:VB6.0;Excel VBA;AutoCAD VBA;電力變壓器;結(jié)構(gòu)設(shè)計;應(yīng)用
中圖分類號:TP391.72 文獻標識碼:A 文章編號:1006-8937(2012)20-0036-02
近年來,隨著變壓器產(chǎn)品結(jié)構(gòu)的不繼改進,以及企業(yè)間競爭的日趨激烈,傳統(tǒng)的產(chǎn)品設(shè)計方法已經(jīng)很難滿足企業(yè)當前生存和發(fā)展的需要。企業(yè)為了能在市場競爭中處于有利位置,實現(xiàn)產(chǎn)品設(shè)計數(shù)字化、自動化勢在必行。計算機輔助技術(shù)(CAD/CAPP/CAM/ERP等)在企業(yè)產(chǎn)品開發(fā)和生產(chǎn)過程中日益得到廣泛的應(yīng)用,廣大設(shè)計人員對CAD系統(tǒng)的功能要求也越來越高,他們已經(jīng)不再滿足于利用CAD系統(tǒng)達到“甩圖板”的目的,而是希望從根本上減輕大量簡單、重復和煩瑣的工作量,使自己能集中精力于那些富于創(chuàng)造力的高層次創(chuàng)新設(shè)計活動中去。
為例便于理解,首先介紹一下VBA(Visual Basic for Application)。VBA將AutoCAD、Excel與Visual Basic的功能結(jié)合在一起,能夠快速地創(chuàng)建出符合用戶要求的程序,大大提高用戶的工作效率。對于快速開發(fā)小規(guī)模的應(yīng)用程序更是一種最好的選擇。AutoCAD VBA的開發(fā)使用AutoCAD ActiveX技術(shù),這種技術(shù)使用戶能夠從AutoCAD的內(nèi)部或外部以編程形式操作AutoCAD。在AutoCAD中使用ActiveX接口具有兩個優(yōu)點:其一,更多的編程環(huán)境可以編程訪問AutoCAD。其二,與其他Windows應(yīng)用程序(例如:Microsoft Office Excel、Word)共享數(shù)據(jù)變得更加容易。
1 應(yīng)用內(nèi)容
電力變壓器設(shè)計包括電磁計算和結(jié)構(gòu)設(shè)計。目前,絕大多數(shù)設(shè)計人員都使用Microsoft Office Excel 2003和Autodesk AutoCAD 2008,它們強大的VBA二次開發(fā)能力成為設(shè)計人員的最理想工具。在實際的電力變壓器結(jié)構(gòu)設(shè)計過程中,有時希望能夠?qū)utoCAD中的一些圖形信息提取出來生成一個Excel文件,以便打印和管理;有時又需要從一個Excel文件中讀取數(shù)據(jù),用來繪制圖形。為此,必須實現(xiàn)AutoCAD與Excel間的通信。Microsoft Office Excel 2003和Autodesk AutoCAD 2008中都集成了基于VB6.0的VBA開發(fā)工具,為開發(fā)AutoCAD應(yīng)用程序,實現(xiàn)AutoCAD與Excel的數(shù)據(jù)交換提供了一個強大、方便、快捷的手段。
在本文中選取了電力變壓器鐵心截面結(jié)構(gòu)設(shè)計來詳述Excel VBA和AutoCAD VBA在電力變壓器結(jié)構(gòu)設(shè)計中的應(yīng)用。
2 實例分析
應(yīng)用程序的開發(fā)一般包括參數(shù)的確定、建立有關(guān)庫表、程序的編制和調(diào)試等幾個階段。具體過程如下:
①在Microsoft Office Excel 2003 中建立鐵心計算參數(shù)表格,如圖1所示。
②在“設(shè)計模式”下,雙擊ActiveX控件“自動自成鐵心截面圖”,進入Microsoft Office Excel VBA編程界面,單擊“工具”選項里的“引用”,在“AutoCAD 2008 Type library”前面勾選。實現(xiàn)AutoCAD與Excel間通過VBA的通信。
根據(jù)我公司變壓器結(jié)構(gòu)設(shè)計原則,變壓器鐵心的結(jié)構(gòu)形式為采用橫向五級階梯、45°斜接縫形式。需要確定了鐵心直徑,窗高,中心距,其它尺寸:如片長、片寬、疊厚、封片及綁扎帶的尺寸等,這一步我們通過對Excel 2003進行添加函數(shù)進行自動計算。
本文中VBA程序編制的主要工作是:從Excel表格中獲取相關(guān)尺寸,如鐵心直徑、窗高、中心距、片長、片寬、疊厚等基礎(chǔ)尺寸,插入典型子圖、標注尺寸、繪制鐵心截面圖、填寫各級鐵心數(shù)據(jù)和明細表等。在Excel VBA編程界面里編程,代碼如下:
Const pi = 3.14159265358979
Private Sub CommandButton1_Click()
Dim pt(0 To 2) As Double
Dim p0(0 To 2) As Double
Dim Ho as integer
Dim Mo as integer
Dim Lo as integer
Set Ho = Cells(i, 32).Value
Set Mo = Cells(i, 31).Value
Set Lo = Cells(i, 30).Value
表示Excel中第i列32行的值等于Ho(窗高)
表示Excel中第i列31行的值等于Ho(中心距)
表示Excel中第i列30行的值等于Lo(最大片寬)
下面的代碼用于連接AutoCAD,注意:AutoCAD軟件必須打開并且已經(jīng)新建了一個繪圖界面,否則當單擊“自動自成鐵心截面圖”時將出現(xiàn)錯誤。
Dim plinea As AcadLWPolyline
Dim plineb As AcadLWPolyline
Dim dimrotate As AcadDimRotated
Dim thapp As AcadApplication
Dim doc As AcadDocument
Dim text As AcadText
Set thapp = GetObject(, \"AutoCAD.Application\")
Set doc = thapp.ActiveDocument
For i=58 To 18 Step -2
pt(1)=(i - 18) *15.085
pt(0)=0
Call doc.ModelSpace.AddText(\"4x\"Round(Ho,pt, 21)
pt(0)=-100
Call doc.ModelSpace.AddText(\"4x\"Round(Mo, 1), pt, 21)
pt(0)=-200
Call doc.ModelSpace.AddText(Round(Lo,1), pt, 21)
.
下面的代碼用于從文件名為“Mydesign.dwg”的文件中拷取典型子件圖。
DwgName = \"g:\\Tank\\Mydesign.dwg\" '返回文件名
BlkName = \"DownTr\" '返回塊名
ThisDrawing.SetVariable \"LTSCALE\", 1
ObjDBX.Open DwgName '打開圖形
Set BlkObj(0) = ObjDBX.Blocks(BlkName)
ObjDBX.CopyObjects BlkObj, ThisDrawing.ModelSpace '復制對象
.
End sub
3 程序運行與總結(jié)
程序運行在AutoCAD環(huán)境下,生成如圖2所示的鐵心截面圖。
由此可見,通過實現(xiàn)AutoCAD與Excel間VBA的通信,設(shè)計人員可免除大量的重復設(shè)計工作,借助于Excel強大的計算功能和AutoCAD的繪圖功能,可方便快速地設(shè)計出結(jié)構(gòu)圖紙。因為大多數(shù)設(shè)計人員熟悉VB6.0、Excel和AutoCAD,很容易編寫出適于自己產(chǎn)品的應(yīng)用程序,實現(xiàn)產(chǎn)品圖紙的參數(shù)化。
參考文獻:
[1] 路長柏,朱英浩,張懷靈,等.電力變壓器計算[M].哈爾濱:黑龍江科學技術(shù)出版社,1990.
[2] 謝毓城.電力變壓器手冊[M].北京:機械工業(yè)出版社,2003.
[3] 張帆.AutoCAD VBA開發(fā)精彩實例教程[M].北京:清華大學出版社,2004.