5 Replies Latest reply on Mar 27, 2018 1:33 PM by James Barnes

    Wend Without While

    Mário Neto

      Hi, i'm getting a "wend without while" in this line of code:

       

         While Not swFeat Is Nothing

        

          If Espessura Is Nothing Then

         

              If swFeat.GetTypeName = "SheetMetal" Then

             

                  Set swsheetmetal = swFeat.GetDefinition

                  Thickness = swsheetmetal.Thickness

                  conv = 1000

                  Thickness = Thickness * conv

                      Espessura = Thickness

                          AddCustProp swChildModel

                          AddCorte swChildModel

                         

              Debug.Print " Thickness is :"; Thickness; "milimeters"

             

              End If

             

                  Set swFeat = swFeat.GetNextFeature

          Wend

       

      But it's CLEARYL right there, why is this happening? The full code is:

       

      Public Sub Exporting()

       

       

       

         Dim SwApp                       As SldWorks.SldWorks

         Dim SwModel                     As SldWorks.ModelDoc2

         Dim swAssy                      As SldWorks.AssemblyDoc

         Dim swConf                      As SldWorks.Configuration

         Dim swRootComp                  As SldWorks.Component2

       

       

         Dim nStart                      As Single

        

         Dim bRet                        As Boolean

       

       

       

       

       

         Set SwApp = Application.SldWorks

         Set SwModel = SwApp.ActiveDoc

         Set swConf = SwModel.GetActiveConfiguration

         Set swRootComp = swConf.GetRootComponent3(True)

         

              If SavingPath <= "" Then GoTo Ending Else: GoTo Start:

       

       

      Start:

       

       

         Debug.Print "File = " & SwModel.GetPathName

        

       

       

         TraverseComponent swRootComp, 1

       

       

       

         Debug.Print "Finished!"

        

        

       

       

      Ending:

      End Sub

       

       

      Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long)

       

       

      Dim vChildComp                  As Variant

       

       

         Dim SwApp                       As SldWorks.SldWorks

         Dim swPart                      As SldWorks.PartDoc

         Dim swAssy                      As SldWorks.AssemblyDoc

       

       

         Dim swChildComp                 As SldWorks.Component2

         Dim swConfig                    As SldWorks.Configuration

         Dim swConfMgr                   As SldWorks.ConfigurationManager

         Dim swChildModel                As SldWorks.ModelDoc2

         Dim SwModel                     As SldWorks.ModelDoc2

       

       

         Dim swChildCustPropMngr         As CustomPropertyManager

         Dim swChildModelDocExt          As ModelDocExtension

         Dim swsheetmetal                As SldWorks.SheetMetalFeatureData

         Dim swFeat                      As SldWorks.Feature

         Dim swBody                      As SldWorks.Body2

        

         Dim Sheet_metal                 As Boolean

         Dim Boolstatus                  As Boolean

        

         Dim Thickness                   As Double

         Dim conv                        As Double

        

         Dim i                           As Long

         Dim loptions                    As Long

         Dim lerrors                     As Long

        

         Dim sPadStr                     As String

         Dim FilePath                    As String

         Dim FileName                    As String

         Dim swThkDir                    As String

         Dim swMatDir                    As String

         Dim swCurrent                   As String

         Dim RefCfg                      As String

         Dim ChildConfigName             As String

         Dim sMatName                    As String

         Dim sMatDB                      As String

         Dim exFileName                  As String

       

       

         Dim Bodies                      As Variant

         Dim Extension                   As Variant

        

       

       

      Set SwApp = Application.SldWorks

      Set SwModel = SwApp.ActiveDoc

        

       

       

      If Not SwModel Is Nothing Then

         

          If SwModel.GetType = swDocASSEMBLY Then GoTo Assembly Else GoTo Part1

             

      Else: GoTo Fim

      End If

       

       

       

       

       

       

      Part1:

       

       

      Set swPart = SwModel

      Set swChildModel = SwModel

       

       

      GoTo Part2:

       

       

      Assembly:

       

       

         vChildComp = swComp.GetChildren

       

       

         For i = 0 To UBound(vChildComp)

             Set swChildComp = vChildComp(i)

       

       

             'Check to see if current component is suppressed

            

             If swChildComp.IsSuppressed = False Then GoTo Active Else GoTo Skip

            

       

       

      Active:

       

       

      Set SwApp = Application.SldWorks

       

       

      Set swChildModel = swChildComp.GetModelDoc2

       

       

         'Check to see if child component is an Assembly or part

       

       

         If (swChildModel.GetType <> swDocPART) Then GoTo Jump 'Skips Subassemby level

       

       

       

       

      Set swPart = swChildModel 'Applies part commands for current component

       

       

      swCurrent = swChildComp.ReferencedConfiguration 'Get current configuration of component

       

       

      Part2:

       

       

      Bodies = swPart.GetBodies2(swBodyType_e.swAllBodies, True)

       

       

      Set swBody = Bodies(0)

       

       

         If swBody.IsSheetMetal = 0 Then 'If Body is not sheet metal

       

       

                 GoTo Jump

       

       

         End If

       

       

         If swBody.IsSheetMetal = 1 Then 'If body is sheet metal

       

       

             Debug.Print "Processing component " & FileName & " as a sheet metal component"

       

       

             Debug.Print "Current Config is : "; swCurrent

       

       

             GoTo Process

       

       

         End If

       

       

      Process:

       

       

      'Get Part Material

       

       

      Set swPart = swChildModel

       

       

      sMatName = swPart.GetMaterialPropertyName2(swCurrent, sMatDB)

       

       

       

      If sMatName = "" Then sMatName = "None"

       

       

      Debug.Print "    Current material is : "; sMatName

       

       

       

       

      'Get File Name

       

       

      FileName = swChildModel.GetTitle

       

       

      Debug.Print "File Name is : "; FileName

       

       

      'Get File Path

       

       

      sPathName = swPart.GetPathName

       

       

      Debug.Print "File Path is : "; sPathName

       

       

      'Get part Thickness

       

       

      Set swFeat = swChildModel.FirstFeature

       

       

         While Not swFeat Is Nothing

        

          If Espessura Is Nothing Then

         

              If swFeat.GetTypeName = "SheetMetal" Then

             

                  Set swsheetmetal = swFeat.GetDefinition

                  Thickness = swsheetmetal.Thickness

                  conv = 1000

                  Thickness = Thickness * conv

                      Espessura = Thickness

                          AddCustProp swChildModel

                          AddCorte swChildModel

                         

              Debug.Print " Thickness is :"; Thickness; "milimeters"

             

              End If

             

                  Set swFeat = swFeat.GetNextFeature

          Wend

       

       

      End If

       

       

      swMatDir = SavingPath & "\" & sMatName

       

       

      Debug.Print swMatDir

       

       

      If Dir(swMatDir, vbDirectory) = "" Then MkDir swMatDir

       

       

      swThkDir = SavingPath & "\" & sMatName & "\" & Thickness & "mm"

       

       

      Debug.Print swThkDir

       

       

      If Dir(swThkDir, vbDirectory) = "" Then MkDir swThkDir

       

       

      exFileName = SavingPath & "\" & sMatName & "\" & Thickness & "\" & FileName

       

       

      Debug.Print exFileName

       

       

      Set swOpenModel = SwApp.ActivateDoc3(swChildModel.GetPathName, True, loptions, lerrors)

       

       

       

       

       

      swChildModel.ExportToDWG2 exFileName & ".DXF", sPathName, swExportToDWG_ExportSheetMetal, True, 0, False, False, options, Null

       

       

       

      SwApp.CloseDoc (swChildModel.GetPathName)

       

       

       

       

       

       

       

       

              

       

       

      GoTo Jump

       

       

              

       

       

      Skip:

       

       

       

       

       

       

       

       

         Debug.Print "Skipped"

       

       

       

       

       

       

       

       

      Jump:

       

       

             TraverseComponent swChildComp, nLevel + 1

       

       

                Next i

       

       

       

       

       

       

      Fim:

      End Sub