时间:2022-10-24 03:43:12
摘要:该文探讨如何利用VBA程序实现AutoCAD 2010从EXCEL 2007中读取坐标数据,然后将与坐标值对应的元件显示到计算机显示器上。
关键词:VBA AutoCAD EXCEL 电路板
中图分类号:TP317 文献标识码:A 文章编号:1674-098X(2013)01(b)-00-01
随着电子元器件的小型化,电子产品的集成度越来越高,一块电路板上的电子元件数量也越来越多。在这些数量巨大的元件中立刻找到我们想要找到的元件就变得越来越困难。
1 利用坐标文件寻找元件安装位置
电路板设计过程中产生的坐标文件中记录着所有元件在电路板上安装位置的坐标值。根据坐标值,我们可以使用尺子测量电路板,从而找到该元件。但这种方法在实际使用中缺乏实用性,因为坐标原点不易寻找,并且测量时会产生较大误差。
为了更好地使用坐标文件,我认为可以从电路板板图入手。从GERBER文件中导出的电路板板图与实际的电路板使用相同的坐标,使用坐标文件中的坐标我们可以在实际的电路板上找到元件,也可以在电路板板图上找到该元件的安装位置。
从GERBER文件中导出的电路板图纸可以使用AutoCAD进行操作。利用VBA程序对AutoCAD进行二次开发,将需要查找元件的坐标从EXCEL文件中导入到AutoCAD中,利用坐标值寻找到元件的准确位置,把它显示到计算机屏幕上。这样做的优点如下:(1)使用AutoCAD软件可以很容易变换坐标系,方便更改坐标原点[2]、不需要测量实际的电路板,避免了手工测量导致的误差,元件安装位置寻找更准确。
2 使用VBA完成AutoCAD与EXCEL之间的访问
在AutoCAD中通过VBA使用EXCEL中的数据,需要使用到VBA在不同软件间的访问功能。在不同软件间进行访问,一般可以通过三种方式:自动方式、动态数据交换(DDE)和SendKeys方式。AutoCAD 2010与EXCEL 2007都支持“自动方式”。下面就以这两个软件为例,重点介绍如何使用“自动方式”实现不同软件间的数据传递。
使用“自动方式”实现不同软件间的数据传递分为2种方式:前期绑定和后期绑定。前期绑定与后期绑定相比有以下优点。(1)一旦向软件的对象库添加了相应的引用,就能通过Visual Basic编辑器访问该软件的对象、属性和方法。这样做更容易找到所需的对象、属性和方法,而且可以避免一些错误,如打字错误和丢失参数等。(2)由于在声明变量时就已经指定了对象类型,所以就降低了获取不当对象的几率。(3)因为在使用前期绑定时VBA所获取的关于对象的信息更加全面,所以引用对象的方法和属性将会更快捷。基于以上原因,我选择使用前期绑定方式完成不同软件之间的数据传递。
打开AutoCAD 2010,选择“管理” “Visual Basic编辑器”。打开“Visual Basic编辑器”后选择“工具”“引用”,在弹出的对话框中选择“MicroSoft Excel 11.0 Object Library”,最后单击“确定”。完成以上的添加“引用”的过程后,我们就可以在VBA程序中定义EXCEL对象,从而达到访问EXCEL内数据的目的。
Public elapp As Excel.Application ‘EXCEL对象
Public elbook As Excel.Workbook ‘EXCEL工作簿对象
Public elsheet As Excel.Worksheet ‘EXCEL工作表对象
Public strdir As String ‘EXCEL文件存储地址
strdir = ThisDrawing.Path & “\板图制作工具R1.1.xls”
Set elapp = CreateObject("Excel.Application")‘创建1个EXCEL对象实体
Set elbook = elapp.Workbooks.Open(strdir)‘打开1个EXCEL工作簿
Set?elsheet?=?elbook.Worksheets(2) ‘打开EXCEL工作簿中的工作表2
elsheet.Activate‘激活工作表2
通过上面的代码,我们就可以利用VBA程序在AutoCAD中访问EXCEL中的数据了。
3 将寻找到的元件安装位置显示到显示器上
将EXCEL中的坐标值导入到AutoCAD中后,需要使用ZoomCenter(Center,Magnify)语句将需要寻找的元件显示到屏幕的中央。ZoomCenter语句的作用是通过指定缩放中心点和缩放比例缩放当前视图。参数Center用于指定缩放中心的坐标值,参数Magnify用于指定参数的放大倍数。下面就是显示元件的程序代码。
x_coordicate_str = elsheet.Cells(component_indicator,7).Value
‘从EXCEL单元格中获得元件的X
坐标
y_coordicate_str = elsheet.Cells(component_indicator,8).Value
‘从EXCEL单元格中获得元件的Y
坐标
coordicate(0)= Val(x_coordicate_str)* all_unit_rate + offset_x
‘X坐标的单位变换并进行坐标变换
coordicate(1)= Val(y_coordicate_str)* all_unit_rate + offset_y
‘Y坐标的单位变换并进行坐标变换
coordicate(2)= 0
‘Z坐标为0
zoom_zoom = Val(TextBox1.Text)‘获得缩放倍数
ZoomCenter coordicate,zoom_zoom
‘以coordicate为中心,以zoom_zoom为倍数进行缩放
将坐标值从EXCEL中取出后,应使用Quit语句将EXCEL文件关闭,否则会在再次打开EXCEL文件从其中读取数据时产生错误。关闭EXCEL文件的程序代码如下。
Private Sub UserForm_Terminate()‘关闭窗体时触发该事件
elapp.Quit‘将EXCEL文件关闭
End Sub
4 结语
通过以上程序,就可以在AutoCAD中导入EXCEL文件中的坐标数据,然后将与这个坐标对应的元件按照输入的缩放倍数,显示到显示器的中央位置。
这样就可以通过坐标快速准确的找到我们需要寻找的元件,从而大幅度提高工作效率。
参考文献
[1] 罗刚君,章兰新,黄朝阳.Excel 2010 VBA编程与实践[M].北京:电子工业出版社,2010.
[2] 张帆,郑立楷,王华杰.VBA开发精彩实例教程[M].北京:清华大学出版社,2004.
[3] 罗刚君.Excel VBA程序开发自学宝典[M].北京:电子工业出版社,2009.