AnsweredAssumed Answered

Bended part flatening script does not work

Question asked by Edgars Baumanis on Mar 28, 2018
Latest reply on Mar 31, 2018 by Nilesh Patel



I have been using ready script that I found on the internet as part of my own macro, but today I noticed that it doesn't do the job that it is supposed to do.

I have two example parts, they are very similar, but it might be that they are made with different Solidworks versions - that is why the script works for some parts, but for some it doesn't. In the attachment there are two pats - "part1" where the script is working and "part2" where the script is not working for some reason.

Can someone help me get this script working for both parts?



The script

Option Explicit


Public Enum swSMBendState_e


    swSMBendStateNone = 0       '  No bend state - not a sheet metal part


    swSMBendStateSharps = 1     '  Bends are in the sharp state - bends currently not applied


    swSMBendStateFlattened = 2  '  Bends are flattened


    swSMBendStateFolded = 3     '  Bends are fully applied


End Enum


Public Enum swSMCommandStatus_e


    swSMErrorNone = 0               '  No errors


    swSMErrorUnknown = 1            '  Failed for an unknown reason


    swSMErrorNotAPart = 2           '  Sheet metal commands only apply to SolidWorks parts


    swSMErrorNotASheetMetalPart = 3 '  Part contains no sheet metal features


    swSMErrorInvalidBendState = 4   '  Invalid bend state was specified


End Enum


Sub main()


    Dim swApp               As SldWorks.SldWorks


    Dim swModel             As SldWorks.ModelDoc2


    Dim nBendState          As Long


    Dim nRetVal             As Long


    Dim bRet                As Boolean


    Set swApp = CreateObject("SldWorks.Application")


    Set swModel = swApp.ActiveDoc




    nBendState = swModel.GetBendState




    Debug.Print "File = " & swModel.GetPathName


    Debug.Print "  BendState    = " & nBendState




    If nBendState <> swSMBendStateFlattened Then


        nRetVal = swModel.SetBendState(swSMBendStateFlattened)


        Debug.Print "  SetBendState = " & nRetVal




        ' Rebuild to see changes


        bRet = swModel.EditRebuild3: Debug.Assert bRet


    End If


End Sub