趙凱
摘要:在電氣工程設計中利用VBA,可以幫助設計人員完成部分繁瑣、重復、機械的工作,極大的節(jié)省勞動力并提高正確率。
關(guān)鍵詞:電氣設計;AutoCAD;Excel;VBA
Abstract: Using VBA in electrical engineering design can help designers’ complete part of the tedious, repetitive, and mechanical work, which greatly saves labor and improves accuracy.
Keywords: electrical design; AutoCAD; Excel; VBA
引言
在電氣設計中,最常使用的辦公軟件就是AutoCAD和Office系列,設計人員經(jīng)常需要將用電設備的數(shù)據(jù)錄入Excel表格中,利用Excel完成數(shù)據(jù)的計算和處理,再根據(jù)Excel表格處理好的數(shù)據(jù),在AutoCAD中繪制圖形的工作,在數(shù)據(jù)量較小的工程中,用手工的方式就可以完成,但在大工程中,數(shù)百個設備的上千條數(shù)據(jù),若還是用手工的方式處理,效率會非常低下,而且錯誤率會很高。本文就根據(jù)電氣設計中的實際問題,利用VBA來實現(xiàn)AutoCAD和Excel之間數(shù)據(jù)的互相操作。
一、問題研究
現(xiàn)實中,經(jīng)常需要將用電設備錄入到AutoCAD中的增強屬性塊中,將每個設備做成一個CAD圖塊,再根據(jù)用電設備的不同信息來繪制低壓開關(guān)柜排列圖,其中在AutoCAD中錄入設備數(shù)據(jù)就是將Excel表格中的設備數(shù)據(jù)復制粘貼到AutoCAD中,這種重復、機械的工作就可以交給VBA來完成。
直接利用Excel VBA代碼,在含有全部用電設備的Excel表內(nèi)生成新的低壓柜抽屜表,再用Excel VBA代碼新建AutoCAD文件,并在該文件內(nèi)繪制所有用電設備的圖塊。該方式所有工作都是在Excel內(nèi)完成,只需要建立好模板,不同項目只需要適當改變圖塊模板的Excel數(shù)據(jù)即可,程序的可移植性高,人工干預較少,相對簡便。
二、Excel VBA生成圖塊
該方法只需要在excel內(nèi)完成代碼,前期需要用Excel VBA代碼生成低壓柜抽屜表,并同時在Excel內(nèi)列出所有抽屜的模板數(shù)據(jù)(圖1),運行代碼即可生成抽屜模板和所有用電設備的圖塊,部分代碼如下:
Call CreatBlock(AcadApp, AcadDocs, AcadDoc)
For i = 1 To NumOfUnits
UnitPoint(0) = UnitPoint(0) + 20000
nsertPoint(0) = InsertPoint(0) + 20000
InsertPoint(1) = 0
Set Unit = AcadDoc.ModelSpace.AddText(Range(“項目數(shù)據(jù).單元號”)(i, 1), UnitPoint, 3500)
UnitNum = Range(“項目數(shù)據(jù).單元號”)(i, 1)
Call InsertBlock(AcadApp, AcadDocs, AcadDoc, UnitNum, InsertPoint)
For i = 1 To NumOfEquip
If CStr(Range(“生成抽屜.所屬單元”)(i, 1)) = UnitNum Then
InsertPoint(1) = InsertPoint(1) - 10 * Range(“生成抽屜.抽屜高”)(i, 1)
DrawerNum = 1
EquipNum = Range(“生成抽屜.設備位號”)(i, 1)
EquipName = Range(“生成抽屜.設備名稱”)(i, 1)
If Range(“生成抽屜.額定電壓”)(i, 1) < 380 Then
DrawerPower = Range(“生成抽屜.開關(guān)容量”)(i, 1) & Range(“生成抽屜.容量單位”)(i, 1) & “(AC” & Range(“生成抽屜.額定電壓”)(i, 1) & “V)” ‘小于380V時,特別標注
Else
DrawerPower = Range(“生成抽屜.開關(guān)容量”)(i, 1) & Range(“生成抽屜.容量單位”)(i, 1)
End If
CircuitNum = Range(“生成抽屜.回路編號”)(i, 1)
DrawerCoding = Range(“生成抽屜.抽屜編碼”)(i, 1)
Set InsertBlock = AcadDoc.ModelSpace.InsertBlock(InsertPoint, DrawerCoding, 1, 1, 1, 0)
InsertBlockAtt = InsertBlock.GetAttributes
End If
Next
最終的效果如圖2所示,對于較大項目,設備部數(shù)量多的情況,利用VBA可以極大的提高效率,節(jié)省勞動力和時間,同時也提高了輸入的準確率。
三、結(jié)束語
在實際電氣設計中,都會遇到上述類似的情況,相對比于手動錄入、人工校對大量的數(shù)量,利用AutoCAD和Excel自帶的Visual Basic編輯器,編寫相應的代碼,類處理這類問題,無疑會大大的提高我們的工作效率和設計文件的質(zhì)量。VBA編程語言小巧、易讀性強,很適合工科專業(yè)、具有一定編程基礎的設計人員學習和掌握。
參考文獻:
[1]【美】Marion Cottingham著,孔祥豐 譯,AutoCAD VBA從入門到精通,北京:電子工業(yè)出版社,2001;
[2]羅剛君,Excel VBA程序開發(fā)自學寶典(第二版),北京:電子工業(yè)出版社,2011;
[3]Excel Hone,別怕,Excel VBA其實很簡單,北京:人民郵電出版社,2012;