AnsweredAssumed Answered

Making Private Sub into a Module

Question asked by Sam Pike on Jan 10, 2019
Latest reply on Jan 10, 2019 by Sam Pike

I have been trying with no luck. I want to take this good code, and instead of having the Private Sub,

put it into it's own module and the module would be called from the Main.


'This will select a pre-defined sketch name in a component of an assembly.
Public swApp As SldWorks.SldWorks
Public swModel As SldWorks.ModelDoc2
Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Debug.Print "Active model: " & swModel.GetTitle
    TraverseModel swModel, 1
End Sub
Private Sub TraverseModel(model As Object, nLevel As Integer)
    Dim swFeat As SldWorks.Feature
    Dim swSubFeat As SldWorks.Feature
    Dim swComp As SldWorks.Component2
    Dim strPad As String
    For i = 1 To nLevel
        strPad = strPad & vbTab
    Next i
    Set swFeat = model.FirstFeature
    Do While Not swFeat Is Nothing
        If swFeat.Name = "CutSketch1" Then  '''''Change your sketch name
            swFeat.Select False
        End If
        Debug.Print strPad & swFeat.Name & " (" & swFeat.GetTypeName & ")"
        If swFeat.GetTypeName = "Reference" Then
            Set swComp = swFeat.GetSpecificFeature2
            TraverseModel swComp, nLevel + 1
            Set swSubFeat = swFeat.GetFirstSubFeature
            Do While Not swSubFeat Is Nothing
                Debug.Print strPad & vbTab & swSubFeat.Name & " (" & swSubFeat.GetTypeName & ")"
                Set swSubFeat = swSubFeat.GetNextSubFeature
        End If
        Set swFeat = swFeat.GetNextFeature
End Sub