趙凱


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