APP下载

浅谈VBA在AutoCAD与Excel中的应用

2020-09-10赵凯

看世界·学术上半月 2020年7期
关键词:电气设计

赵凯

摘要:在电气工程设计中利用VBA,可以帮助设计人员完成部分繁琐、重复、机械的工作,极大的节省劳动力并提高正确率。

关键词:电气设计;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系列,设计人员经常需要将用电设备的数据录入Excel表格中,利用Excel完成数据的计算和处理,再根据Excel表格处理好的数据,在AutoCAD中绘制图形的工作,在数据量较小的工程中,用手工的方式就可以完成,但在大工程中,数百个设备的上千条数据,若还是用手工的方式处理,效率会非常低下,而且错误率会很高。本文就根据电气设计中的实际问题,利用VBA来实现AutoCAD和Excel之间数据的互相操作。

一、问题研究

现实中,经常需要将用电设备录入到AutoCAD中的增强属性块中,将每个设备做成一个CAD图块,再根据用电设备的不同信息来绘制低压开关柜排列图,其中在AutoCAD中录入设备数据就是将Excel表格中的设备数据复制粘贴到AutoCAD中,这种重复、机械的工作就可以交给VBA来完成。

直接利用Excel VBA代码,在含有全部用电设备的Excel表内生成新的低压柜抽屉表,再用Excel VBA代码新建AutoCAD文件,并在该文件内绘制所有用电设备的图块。该方式所有工作都是在Excel内完成,只需要建立好模板,不同项目只需要适当改变图块模板的Excel数据即可,程序的可移植性高,人工干预较少,相对简便。

二、Excel VBA生成图块

该方法只需要在excel内完成代码,前期需要用Excel VBA代码生成低压柜抽屉表,并同时在Excel内列出所有抽屉的模板数据(图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(“项目数据.单元号”)(i, 1), UnitPoint, 3500)

UnitNum = Range(“项目数据.单元号”)(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(“生成抽屉.开关容量”)(i, 1) & Range(“生成抽屉.容量单位”)(i, 1) & “(AC” & Range(“生成抽屉.额定电压”)(i, 1) & “V)” ‘小于380V时,特别标注

Else

DrawerPower = Range(“生成抽屉.开关容量”)(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所示,对于较大项目,设备部数量多的情况,利用VBA可以极大的提高效率,节省劳动力和时间,同时也提高了输入的准确率。

三、结束语

在实际电气设计中,都会遇到上述类似的情况,相对比于手动录入、人工校对大量的数量,利用AutoCAD和Excel自带的Visual Basic编辑器,编写相应的代码,类处理这类问题,无疑会大大的提高我们的工作效率和设计文件的质量。VBA编程语言小巧、易读性强,很适合工科专业、具有一定编程基础的设计人员学习和掌握。

参考文献:

[1]【美】Marion Cottingham著,孔祥丰 译,AutoCAD VBA从入门到精通,北京:电子工业出版社,2001;

[2]罗刚君,Excel VBA程序开发自学宝典(第二版),北京:电子工业出版社,2011;

[3]Excel Hone,别怕,Excel VBA其实很简单,北京:人民邮电出版社,2012;

猜你喜欢

电气设计
浅谈民用建筑工程电气设计中存在的问题及解决方法
民用建筑电气设计中浪涌保护器的运用
建筑电气设计问题分析
现代建筑电气设计发展问题研究