11 Replies Latest reply on Aug 24, 2015 10:03 AM by John Stoltzfus

    Macro to change View and/or Sheet Scale

    Leon Wurr



           I've put together this macro to change the scales on drawings. If a view is selected, it changes the view scale only, if nothing is selected, it changes the sheet scale.


           I created macro buttons in the "View Layout" tab and added keyboard shortcuts to it:



           Just wanted to share. I'm attaching the macros and the .bmp files of the buttons in this thread in case anyone is interested.


           The idea came when reading this thread: macro to change sheet scale


      Dim swApp                       As SldWorks.SldWorks

      Dim swModel                     As SldWorks.ModelDoc2

      Dim swSelMgr                    As SldWorks.SelectionMgr

      Dim swView                      As SldWorks.View

      Dim boolstatus                  As Boolean

      Dim currentSheet                As Sheet

      Dim swDraw                      As SldWorks.DrawingDoc

      Dim X                           As Integer

      Dim Y                           As Integer

      Dim swScale                     As Double

      Dim bRet                        As Boolean


      Sub main()

          X = 1                                                  'The scale will be set as X:Y

          Y = 1

          Debug.Print "Scale          = " & X & ":" & Y

          swScale = X / Y

          Debug.Print "swScale          = "; swScale



          Set swApp = Application.SldWorks

          Set swModel = swApp.ActiveDoc

          Set swSelMgr = swModel.SelectionManager

          Set currentSheet = swModel.GetCurrentSheet

          On Error Resume Next

          Set swView = swSelMgr.GetSelectedObject6(1, -2)

          If Not swView Is Nothing Then

              swView.ScaleDecimal = swScale

              bRet = swDraw.ForceRebuild3(False)


              boolstatus = currentSheet.SetScale(X, Y, True, False)

              bRet = swDraw.ForceRebuild3(False)

          End If

          swModel.ClearSelection2 False

          swModel.ForceRebuild3 False

          bRet = swDraw.ForceRebuild3(False)

      End Sub