ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
ZCZak Craig30/10/2014

Hi everyone,

I'm currently working with a macro that is going to automatically generate drawings for me based on configurations, but the dimensions are giving me a hard time. Since the parts in the configurations vary widely in size, the dimensions in the drawings are flying all over the place and in many cases off of the sheet.

I want to insert an Auto Arrange Dimensions command in my macro, but I can't seem to find a way to do it. I'm new to macros and the one that I'm using was found on the forums here somewhere.

Here's the macro:

Dim swApp As SldWorks.SldWorks

Dim swModel As ModelDoc2

Dim swDrawing As DrawingDoc

Dim configMgr As ConfigurationManager

Dim configs() As String

Dim lErrors As Long, lWarnings As Long

Sub main()

' MAKE SURE YOU CHANGE THE swDocASSEMBLY 4 lines below to swDocPART if you are opening a part not assembly

Dim modelLocation As String: modelLocation = "C:\Users\user\Desktop\Macro Testing\Ball Nose.sldprt"

Dim drawingLocation As String: drawingLocation = "C:\Users\user\Desktop\Macro Testing\Drawings\Ball Nose.SLDDRW"

Dim outputLocation As String: outputLocation = "C:\Users\user\Desktop\Macro Testing\Drawings\Output\"

Set swApp = Application.SldWorks

' Start by opening the files and just presume they open fine else this is a pointless excercise anyway

Set swModel = swApp.OpenDoc6(modelLocation, swDocPART, 0, "", lErrors, lWarnings)

Set swDrawing = swApp.OpenDoc6(drawingLocation, swDocDRAWING, 0, "", lErrors, lWarnings)

' Get all configuration names for this document

configs = swModel.GetConfigurationNames()

' Loop them all

For i = 0 To swModel.GetConfigurationCount() - 1

    ' Activate configuration

    If swModel.ShowConfiguration2(configs(i)) Then

        ' Successfully activated configuration so update model

      '   swModel.ForceRebuild3 True

      

        ' Now make sure we have the drawing active and update that

        swApp.ActivateDoc2 drawingLocation, True, lErrors

      

        ' Loop all views and re-reference them

        Dim view As view

        Set view = swDrawing.GetFirstView

        ' Skip first view which is the sheet

               

        Set view = view.GetNextView

      

        While Not view Is Nothing

            view.ReferencedConfiguration = configs(i)

           

            view.UseSheetScale = False

            view.ScaleDecimal = 2  ' 2 = 2:1   0.2 = 1:5 etc... so set it here however you want based on config name which is in configs(i)

            Set view = view.GetNextView

        Wend

            

        ' Update sheet

        swModel.ForceRebuild3 True

        swDrawing.ForceRebuild

      

        ' And save out the drawing

        swDrawing.Extension.SaveAs outputLocation & configs(i) & ".pdf", 0, 0, Nothing, lErrors, lWarnings

      

    End If

  

Next

End Sub

Where and how could I insert an Auto Arrange Dimensions command?