Skip to content

Instantly share code, notes, and snippets.

@AmenJlili
Created December 12, 2022 21:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AmenJlili/3bb7677d9462823eec14b0007e58c91d to your computer and use it in GitHub Desktop.
Save AmenJlili/3bb7677d9462823eec14b0007e58c91d to your computer and use it in GitHub Desktop.
BatchChangeSheetFormat
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Sub Main()
Set swApp = Application.SldWorks
Dim FolderLocation As String
FolderLocation = "C:\Users\jlili\Desktop\sheet format"
Dim FileSystemObject As Object
Dim Folder As Object
Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
Set Folder = FileSystemObject.GetFolder(FolderLocation)
For Each file In Folder.Files
If EndsWith(file.Name, "slddrw") Then
'process part
Set swModel = swApp.OpenDoc(file.Name, SwConst.swDocumentTypes_e.swDocDRAWING)
swModel.Visible = True
RefreshSheetFormats swModel
swModel.Save
swApp.QuitDoc swModel.GetTitle
End If
Set swModel = Nothing
Next file
End Sub
Sub RefreshSheetFormats(ByRef swModel As ModelDoc2)
Dim swDrawingDoc As DrawingDoc
Set swDrawingDoc = swModel
Dim vSheetNames As Variant
vSheetNames = swDrawingDoc.GetSheetNames
For Each SheetName In vSheetNames
Dim swSheet As Sheet
Set swSheet = swDrawingDoc.Sheet(SheetName)
swDrawingDoc.ActivateSheet SheetName
Dim width As Double
Dim height As Double
Dim paperSize As swDwgPaperSizes_e
paperSize = swSheet.GetSize(width, height)
Select Case size
Case swDwgPaperSizes_e.swDwgPaperAsize
swDrawingDoc.EditTemplate
swModel.Extension.SelectAll
swModel.DeleteSelection False
'change the sheet format
swDrawingDoc.SetupSheet5 SheetName, swDwgPaperSizes_e.swDwgPaperCsize, swDwgTemplates_e.swDwgTemplateCsize, 1, 1, False, Empty, 0, 0, "Default", False
swDrawingDoc.EditSheet
Case swDwgPaperSizes_e.swDwgPaperBsize
swDrawingDoc.EditTemplate
swModel.Extension.SelectAll
swModel.DeleteSelection False
'change the sheet format
swDrawingDoc.SetupSheet5 SheetName, swDwgPaperSizes_e.swDwgPaperCsize, swDwgTemplates_e.swDwgTemplateCsize, 1, 1, False, Empty, 0, 0, "Default", False
swDrawingDoc.EditSheet
Case swDwgPaperSizes_e.swDwgPaperCsize
swDrawingDoc.EditTemplate
swModel.Extension.SelectAll
swModel.DeleteSelection False
'change the sheet format
swDrawingDoc.SetupSheet5 SheetName, swDwgPaperSizes_e.swDwgPaperCsize, swDwgTemplates_e.swDwgTemplateCsize, 1, 1, False, Empty, 0, 0, "Default", False
swDrawingDoc.EditSheet
Case swDwgPaperSizes_e.swDwgPaperDsize
swDrawingDoc.EditTemplate
swModel.Extension.SelectAll
swModel.DeleteSelection False
'change the sheet format
swDrawingDoc.SetupSheet5 SheetName, swDwgPaperSizes_e.swDwgPaperCsize, swDwgTemplates_e.swDwgTemplateCsize, 1, 1, False, Empty, 0, 0, "Default", False
swDrawingDoc.EditSheet
Case swDwgPaperSizes_e.swDwgPaperEsize
swDrawingDoc.EditTemplate
swModel.Extension.SelectAll
swModel.DeleteSelection False
'change the sheet format
swDrawingDoc.SetupSheet5 SheetName, swDwgPaperSizes_e.swDwgPaperCsize, swDwgTemplates_e.swDwgTemplateCsize, 1, 1, False, Empty, 0, 0, "Default", False
swDrawingDoc.EditSheet
Case Else
swDrawingDoc.EditTemplate
swModel.Extension.SelectAll
swModel.DeleteSelection False
'change the sheet format
swDrawingDoc.SetupSheet5 SheetName, swDwgPaperSizes_e.swDwgPaperCsize, swDwgTemplates_e.swDwgTemplateCsize, 1, 1, False, Empty, 0, 0, "Default", False
swDrawingDoc.EditSheet
End Select
Next SheetName
End Sub
Public Function EndsWith(str As String, ending As String) As Boolean
Dim endingLen As Integer
endingLen = Len(ending)
EndsWith = (Right(Trim(UCase(str)), endingLen) = UCase(ending))
End Function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment