鄭 賓
(陜西鐵路工程職業(yè)技術(shù)學(xué)院 電氣工程系, 陜西 渭南 714099)
基于AutoCAD-VBA的批量文字替換方法探討
鄭 賓
(陜西鐵路工程職業(yè)技術(shù)學(xué)院 電氣工程系, 陜西 渭南 714099)
通過VBA對(duì)AutoCAD的二次開發(fā),設(shè)計(jì)了一個(gè)可以選擇多個(gè)圖形文件,并同時(shí)進(jìn)行批量文字查找和替換的應(yīng)用程序。比較之前通過命令行對(duì)話框的操作,解決了一次只能選擇一個(gè)圖形文件的問題,提高了工作效率,實(shí)際應(yīng)用效果良好。
AutoCAD; VBA; 文字替換; 批量
AutoCAD是一款用于二維、三維繪圖、設(shè)計(jì)文檔的計(jì)算機(jī)輔助設(shè)計(jì)軟件。AutoCAD繪圖功能強(qiáng)大,但在數(shù)據(jù)處理、文檔操作等方面有局限性[1]82。Visual Basic for Applications是Visual Basic的一種宏語言[2]564,可以通過VBA編程操作CAD的繪圖對(duì)象[3]45-46,通過對(duì)AutoCAD的二次開發(fā),避免繪圖過程中的重復(fù)性工作,簡(jiǎn)化流程,使CAD準(zhǔn)確、快速的優(yōu)勢(shì)得到最大的發(fā)揮。
在AutoCAD中,對(duì)文字查找和替換是通過打開文件標(biāo)準(zhǔn)對(duì)話框?qū)崿F(xiàn)的,但每次只能選擇一個(gè)文件,操作很不便捷。本文設(shè)計(jì)的程序仍然使用打開文件標(biāo)準(zhǔn)對(duì)話框這一功能,但是卻允許同時(shí)選擇多個(gè)文件,能夠同時(shí)對(duì)多個(gè)圖形進(jìn)行文字查找和替換的操作,這在工程設(shè)計(jì)的過程中是一個(gè)非常實(shí)用的工具。
本文通過AutoCAD-VBA設(shè)計(jì)一個(gè)批量文字替換的應(yīng)用程序。
(1)運(yùn)行AutoCAD2016,在【VBA管理器】中創(chuàng)建一個(gè)全局工程并選擇保存路徑,進(jìn)行保存。
(2)選擇【插入/用戶窗體】菜單項(xiàng),在程序中創(chuàng)建一個(gè)窗體frmMain,并添加以下控件:一個(gè)列表框控件用于顯示選擇的圖形文件名稱,兩個(gè)文本框控件用來輸入查找和替換的文字,四個(gè)命令按鈕分別是添加、刪除、取消、確定。
(3)在窗體的初始化事件中,清空列表框的元素,其實(shí)現(xiàn)代碼為:
Private Sub UserForm_Initialize ()
IstFile.Clear
End Sub
(4)窗體中【添加】按鈕的單擊事件,用于顯示標(biāo)準(zhǔn)對(duì)話框,獲取用戶的選擇,并將選擇的結(jié)果添加到列表框中,其實(shí)現(xiàn)代碼為[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=“請(qǐng)選擇文件!”
.Filter=“文件(*.dwg)| dwgI*.dwg|所有文件(*.*)|*.*”
.FileName=“”
.ShowOpen
End With
(5)窗體中【刪除】按鈕的單擊事件,用于從列表框中刪除指定的元素,其實(shí)現(xiàn)代碼為:
Private Sub cmdDelete_Click ()
If lstFile . ListCount >= 1 Then
If lstFile .List工ndex = -1 Then
MsgBox“請(qǐng)選擇列表中的圖形名稱!”
Exit Sub
End If
lstFile.RemoveItem(lstFile.ListIndex)
End If
End Sub
(6)窗體中【確定】按鈕的單擊事件,用于打開每一個(gè)列表框中顯示的圖形文件,并且對(duì)文件進(jìn)行文字替換的操作,其實(shí)現(xiàn)代碼為:
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“輸入所要替換的字符串內(nèi)容!”
Exit Sub
End If
If 1stFile.ListCount=0 Then
MsgBox“請(qǐng)?zhí)砑铀僮鞯膱D形”
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集成開發(fā)環(huán)境中,按下F5鍵運(yùn)行程序,系統(tǒng)會(huì)彈出【批量文字替換】對(duì)話框。
(2)單擊【添加】按鈕,系統(tǒng)會(huì)彈出【選擇圖形文件】對(duì)話框。用戶可以從中選擇多個(gè)圖形文件,單擊【打開】按鈕就可以將文件添加到【批量文字替換】對(duì)話框的文件列表中。
(3)在【批量文字替換】對(duì)話框中輸入要替換的字符串和替換內(nèi)容,單擊【確定】按鈕,就可以對(duì)指定的多個(gè)圖形進(jìn)行文字替換的操作。
相比于傳統(tǒng)的CAD環(huán)境下,通過選擇【編輯】下拉菜單下【查找】命令,會(huì)出現(xiàn)查找和替換對(duì)話框,查找位置選項(xiàng)下有“整個(gè)圖形”“當(dāng)前空間布局”“選定對(duì)象”,但只能對(duì)一個(gè)圖形文件進(jìn)行查找和替換的操作,相比較而言,批量替換程序具有明顯的優(yōu)勢(shì)。
通過這個(gè)程序的設(shè)計(jì),實(shí)現(xiàn)了在CAD中批量文字替換的功能,在實(shí)際使用過程中,程序運(yùn)行穩(wěn)定,提高了工作效率,效果良好。對(duì)話框的使用可以通過調(diào)用Windows標(biāo)準(zhǔn)瀏覽文件夾對(duì)話框的方法[5]35,也可以使用標(biāo)準(zhǔn)打開對(duì)話框?qū)崿F(xiàn)多個(gè)選擇,實(shí)際上,還可以自行編寫打開文件對(duì)話框的程序。但是,這個(gè)批量文字替換程序也有一些不足之處,如:對(duì)多個(gè)圖形中的特定對(duì)象不能具體進(jìn)行設(shè)置和選擇,同時(shí),對(duì)不同行業(yè)中有特定需求和實(shí)際問題的用戶,針對(duì)性不是很強(qiáng)。在今后,可以通過一些程序軟件的嵌入和二次開發(fā),來解決本行業(yè)個(gè)性化的實(shí)際問題。
[1] 郭慶龍.AutoCAD VBA在鐵路信號(hào)工程設(shè)計(jì)中的應(yīng)用[J].硅谷,2015(3).
[2] 張 勇.基于AutoCAD的二次開發(fā)技術(shù)的研究與實(shí)現(xiàn)[J].佳木斯大學(xué)學(xué)報(bào),2016(4).
[3] 彭小紅.CAD中實(shí)現(xiàn)工程圖樣自動(dòng)化轉(zhuǎn)換的研究[J].CAD/CAM與制造業(yè)信息化,2009(11).
[4] 盧彬源,何征坤.AutoCAD VBA在地形圖批處理中的應(yīng)用[J].北京測(cè)繪,2014(3).
[5] 呂延崗.Excel VBA在成績(jī)管理中的應(yīng)用[J].辦公自動(dòng)化,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-),男,陜西渭南人,講師,主要從事電子信息技術(shù)研究。
TP391.72
A
1672-2388(2017)01-0089-03