Managing large drawing sets in SOLIDWORKS often means working with inconsistent or outdated sheet formats. Whether due to legacy templates, changes in company standards, or imported files, it’s not uncommon to find drawing sheets that don’t match the expected formatting. This macro solves that.
What This Macro Does
- Loops through all sheets in an open drawing.
- Detects each sheet’s paper size.
- Clears any elements from the sheet format.
- Replaces the current sheet format with a new one (in this case, a C-size format).
- Saves the drawing once all sheets are processed.
When Should You Use It?
- You’re transitioning to a new title block or format standard.
- You need to batch-convert drawings with inconsistent sheet sizes.
- You want a consistent template across multiple sheets.
- You’re preparing legacy drawings for release or PDF batch export.
Refresh sheet format of active drawing
Visual Basic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
Dim swApp As SldWorks.SldWorks Dim swModel As ModelDoc2 Sub Main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc swModel.Visible = True RefreshSheetFormats swModel swModel.Save 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.swDwgPaperAsize, swDwgTemplates_e.swDwgTemplateAsize, 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.swDwgPaperBsize, swDwgTemplates_e.swDwgTemplateBsize, 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.swDwgPaperDsize, swDwgTemplates_e.swDwgTemplateDsize, 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.swDwgPaperEsize, swDwgTemplates_e.swDwgTemplateEsize, 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.swDwgPaperAsize, swDwgTemplates_e.swDwgTemplateAsize, 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 |