由於Autodesk停止將VBA包括到Autocad中,我只能在Excel VBA中執行此操作。
將以下代碼複製並粘貼到excel的VBA編輯器中。請記住在工具,參考文獻中檢查AutoCAD類型庫。
此外,您必須更改以下內容。
FOLDERPATH
Autocad.Application
PtList
Sub Main()
Dim FileName As String
Dim FolderPath As String
Dim AcadDoc As AcadDocument
Dim PtList(11) As Double
Dim SelSet As AcadSelectionSet
Dim TextObj As Variant
Dim NewFileName As String
FolderPath = "C:\Users\UserName\Documents" '<<--- Replace this with where your documents are
'-----------------Connect to the AutoCAD application-------------
Set acadApp = GetObject _
(, "AutoCAD.Application.17") 'AutoCAD.Application.17 - for 2008
'AutoCAD.Application.18 - for 2010
'AutoCAD.Application.19 - for 2013 - 2015
'AutoCAD.Application.20 - for 2016
'AutoCAD.Application.21 - for 2017
'AutoCAD.Application.22 - for 2018
If Err Then
Err.Clear
Set acadApp = CreateObject _
("AutoCAD.Application.17") '<<---Change this too depending on you autocad version
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
'----------------------------------------------------------------
'-----Set the pts to be used for selecting the text object in the dwg file. The box must surround the text object-----
'1ST POINT (X,Y,Z)
PtList(0) = 603.9254
PtList(1) = -3.336
PtList(2) = 0
'2ND POINT (X,Y,Z)
PtList(3) = 1144.0586
PtList(4) = -3.336
PtList(5) = 0
'3RD POINT (X,Y,Z)
PtList(6) = 1144.0586
PtList(7) = -298.3247
PtList(8) = 0
'4TH POINT (X,Y,Z)
PtList(9) = 603.9254
PtList(10) = -298.3247
PtList(11) = 0
'---^^
'-----Loop through the files in the folder
FileName = Dir(FolderPath & "\*.dwg")
Do While Len(FileName) > 0
'Set Acad document
Set AcadDoc = acadApp.Documents.Open(FolderPath & "\" & FileName)
'add a selection set
Set SelSet = AcadDoc.SelectionSets.Add("test")
'add items to the selection set using the points in the PtList
SelSet.SelectByPolygon acSelectionSetCrossingPolygon, PtList
'assuming that the selection will only select the text, assign the only item in the selection set to TextObj
Set TextObj = SelSet.Item(0)
'Store the new filename in a variable for later use
NewFileName = TextObj.TextString
'close the dwg file
AcadDoc.SelectionSets("test").Delete
AcadDoc.Close
'rename
Name FolderPath & "\" & FileName As FolderPath & "\" & NewFileName & ".dwg"
'get the file name of the next dwg file next drawing, then continue loop
FileName = Dir
Loop
End Sub