郑 宾
(陕西铁路工程职业技术学院 电气工程系, 陕西 渭南 714099)
基于AutoCAD-VBA的批量文字替换方法探讨
郑 宾
(陕西铁路工程职业技术学院 电气工程系, 陕西 渭南 714099)
通过VBA对AutoCAD的二次开发,设计了一个可以选择多个图形文件,并同时进行批量文字查找和替换的应用程序。比较之前通过命令行对话框的操作,解决了一次只能选择一个图形文件的问题,提高了工作效率,实际应用效果良好。
AutoCAD; VBA; 文字替换; 批量
AutoCAD是一款用于二维、三维绘图、设计文档的计算机辅助设计软件。AutoCAD绘图功能强大,但在数据处理、文档操作等方面有局限性[1]82。Visual Basic for Applications是Visual Basic的一种宏语言[2]564,可以通过VBA编程操作CAD的绘图对象[3]45-46,通过对AutoCAD的二次开发,避免绘图过程中的重复性工作,简化流程,使CAD准确、快速的优势得到最大的发挥。
在AutoCAD中,对文字查找和替换是通过打开文件标准对话框实现的,但每次只能选择一个文件,操作很不便捷。本文设计的程序仍然使用打开文件标准对话框这一功能,但是却允许同时选择多个文件,能够同时对多个图形进行文字查找和替换的操作,这在工程设计的过程中是一个非常实用的工具。
本文通过AutoCAD-VBA设计一个批量文字替换的应用程序。
(1)运行AutoCAD2016,在【VBA管理器】中创建一个全局工程并选择保存路径,进行保存。
(2)选择【插入/用户窗体】菜单项,在程序中创建一个窗体frmMain,并添加以下控件:一个列表框控件用于显示选择的图形文件名称,两个文本框控件用来输入查找和替换的文字,四个命令按钮分别是添加、删除、取消、确定。
(3)在窗体的初始化事件中,清空列表框的元素,其实现代码为:
Private Sub UserForm_Initialize ()
IstFile.Clear
End Sub
(4)窗体中【添加】按钮的单击事件,用于显示标准对话框,获取用户的选择,并将选择的结果添加到列表框中,其实现代码为[4]53-55:
Private Sub cmdOpen_Click()
On Error GoTo errHandle
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim DocuName () As String
With comDlg
.CancelError= True
.MaxFileSize=32767
.DialogTitle=“请选择文件!”
.Filter=“文件(*.dwg)| dwgI*.dwg|所有文件(*.*)|*.*”
.FileName=“”
.ShowOpen
End With
(5)窗体中【删除】按钮的单击事件,用于从列表框中删除指定的元素,其实现代码为:
Private Sub cmdDelete_Click ()
If lstFile . ListCount >= 1 Then
If lstFile .List工ndex = -1 Then
MsgBox“请选择列表中的图形名称!”
Exit Sub
End If
lstFile.RemoveItem(lstFile.ListIndex)
End If
End Sub
(6)窗体中【确定】按钮的单击事件,用于打开每一个列表框中显示的图形文件,并且对文件进行文字替换的操作,其实现代码为:
Private Sub cmdOk__Click()
dim adT As AcadText
dim adMT As AcadMText
dim acdc As AcadSelectionSet
dim fType As Integer
If txtFind.Text=“” Or txtReplace.Text=“” Then
MsgBox“输入所要替换的字符串内容!”
Exit Sub
End If
If 1stFile.ListCount=0 Then
MsgBox“请添加所要操作的图形”
Exit Sub
End If
For I = 0 To file.ListCount
Application. Documents. Open File. list(i)
On Error Resume Next
Set adSS=This Drawing.SelectionSets .Add ( “acdc” )
If error Then
Set acdc=ThisDrawing. SelectionSets .Add ( “acdc” )
acdc.Clear
fType (0) =0: fData (0)=“TEXT”: fType (1)=8: fData (1)=“*”
acdc.Select acSelectionSetAll, , , fType,fData
For Each adT In acdc
With adT
If InStr( .TextString,strFind)Then .TextString=
ReplaceStr ( .TextString, strFind, strReplace, False)
End With
Next adT
For Each adMT In acdc
With adMT
If InStr( .TextString,strFind)Then .TextString=
ReplaceStr ( .TextString, strFind, strReplace, False)
End With
Next adMT
(1)在VBA集成开发环境中,按下F5键运行程序,系统会弹出【批量文字替换】对话框。
(2)单击【添加】按钮,系统会弹出【选择图形文件】对话框。用户可以从中选择多个图形文件,单击【打开】按钮就可以将文件添加到【批量文字替换】对话框的文件列表中。
(3)在【批量文字替换】对话框中输入要替换的字符串和替换内容,单击【确定】按钮,就可以对指定的多个图形进行文字替换的操作。
相比于传统的CAD环境下,通过选择【编辑】下拉菜单下【查找】命令,会出现查找和替换对话框,查找位置选项下有“整个图形”“当前空间布局”“选定对象”,但只能对一个图形文件进行查找和替换的操作,相比较而言,批量替换程序具有明显的优势。
通过这个程序的设计,实现了在CAD中批量文字替换的功能,在实际使用过程中,程序运行稳定,提高了工作效率,效果良好。对话框的使用可以通过调用Windows标准浏览文件夹对话框的方法[5]35,也可以使用标准打开对话框实现多个选择,实际上,还可以自行编写打开文件对话框的程序。但是,这个批量文字替换程序也有一些不足之处,如:对多个图形中的特定对象不能具体进行设置和选择,同时,对不同行业中有特定需求和实际问题的用户,针对性不是很强。在今后,可以通过一些程序软件的嵌入和二次开发,来解决本行业个性化的实际问题。
[1] 郭庆龙.AutoCAD VBA在铁路信号工程设计中的应用[J].硅谷,2015(3).
[2] 张 勇.基于AutoCAD的二次开发技术的研究与实现[J].佳木斯大学学报,2016(4).
[3] 彭小红.CAD中实现工程图样自动化转换的研究[J].CAD/CAM与制造业信息化,2009(11).
[4] 卢彬源,何征坤.AutoCAD VBA在地形图批处理中的应用[J].北京测绘,2014(3).
[5] 吕延岗.Excel VBA在成绩管理中的应用[J].办公自动化,2014(4).
Study of Batch Replacement of Text Based on AutoCAD-VBA
ZHENG Bin
(Department of Electrical Engineering, Shanxi Railway Institute, Weinan 714000, China)
Visual basic for applications is an integrated development environment in AutoCAD application, also is an object-oriented visual structure programming language, which is widely used in various fields of practical work. Using VBA application to the Secondary Development of Auto-CAD, designing the application of batch text replacement and comparing with the previous command-line dialog box operation, proves that this application works more efficiency.
Autodesk Computer Aided Design; Visual Basic for Application; replacement of text; batch
2016-10-27
郑 宾(1978-),男,陕西渭南人,讲师,主要从事电子信息技术研究。
TP391.72
A
1672-2388(2017)01-0089-03