AnsweredAssumed Answered

Wend Without While

Question asked by Mário Neto on Mar 27, 2018
Latest reply on Mar 27, 2018 by James Barnes

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

Outcomes