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