11 Replies Latest reply on Jun 16, 2014 12:46 PM by Deepak Gupta

    Hide layer, print Drawing, close drawing w/o save

    Eric Fox

      Can anyone help to create a macro for drawing files that will check if a specific layer is visible, and if it is visible, hide the layer. Then I need to macro to print the drawing & close without saving.


      When our company creates a drawing package for our customers we provide a print for most of the sub-assemblies and top level assemblies within the system (typically around 200-300 drawings per customer). These prints need to be dimensionless. So, in all of our drawing templates I have created a layer named "Dimension" where all of the dimensions reside. I found exactly what I need to turn the layer on/off from the API help (see below), but I'm not sure how to incorporate the print and 'no save' portion of the macro.


      I have 0 programming experience, so I'm kind of lost here.


      Sample code:





      ' Preconditions:

      '          (1) Drawing document is open.

      '          (2) Drawing document contains a layer named Dimension.


      ' Postconditions:

      '          If Dimension layer is visible, then it becomes not visible.

      '             - or -

      '          If Dimension layer is not visible, then it becomes visible.




      Option Explicit

      Sub main()

          Dim swApp                       As SldWorks.SldWorks

          Dim swModel                     As SldWorks.ModelDoc2

          Dim swLayerMgr                  As SldWorks.LayerMgr

          Dim swLayer                     As SldWorks.Layer


          Set swApp = Application.SldWorks

          Set swModel = swApp.ActiveDoc

          Set swLayerMgr = swModel.GetLayerManager

          Set swLayer = swLayerMgr.GetLayer("Dimension")


          If swLayer.Visible = False Then

              ' Toggle layer on

              swLayer.Visible = True

              Debug.Assert True = swLayer.Visible


              ' Toggle layer off

              swLayer.Visible = False

              Debug.Assert False = swLayer.Visible

          End If

      End Sub