4 Replies Latest reply on Oct 17, 2018 4:35 AM by Deepak Gupta

    How to write properties in the cut list of multibody-part

    Marco Crociani

      Hello everyone,

       

      i use a multibody-part with SW2017 sp5, I have this macro that works perfectly to write some properties in the cut list:

      the macro recognizes that the body was made with "metal-sheet function" and writes properties in the cut-list only in "metal-sheet" bodies.

       

      I would have this further improvement,:

      when it recognizes the first sheet-metal body I want to define a progressive number "1" and use it in the properties of the cutting list of this body

      when it recognizes the second sheet-metal body I want to define a progressive number "2" and use it in the properties of the cutting list of this body

      when it recognizes the third sheet-metal body I want to define a progressive number "3" and use it in the properties of the cutting list of this body

       

       

      can you help me????????

      look below my macro

       

      Thanks in advance

       

       

      Option Explicit

          Dim swApp               As SldWorks.SldWorks

          Dim vBodies             As Variant

          Dim swmodel             As SldWorks.ModelDoc2

          Dim swFeat              As SldWorks.Feature

          Dim swCustPropMgr       As SldWorks.CustomPropertyManager

          Dim FileNumber          As String

          Dim FileName            As String

          Dim Codice_1            As String

          Dim CODICE              As String

          Dim CODICE_FINALE       As String

          Dim UM                  As String

          Dim PESO                As String

          Dim DESCRIZIONE         As String

          Dim TIPO_LAM_1          As String

          Dim TIPO_LAM_2          As String

          Dim sThickness          As String

          Dim Folds               As String

          Dim swBodyFolder        As SldWorks.BodyFolder

          Dim j                   As Integer

          Dim swBody              As Body2

        

        

      Sub main()

       

          On Error Resume Next

       

       

          Set swApp = Application.SldWorks

          Set swmodel = swApp.ActiveDoc

          Set swCustPropMgr = swmodel.Extension.CustomPropertyManager("")

          swCustPropMgr.Get4 "CODICE", False, CODICE, """"

          swCustPropMgr.Get4 "CODICE_FINALE", False, CODICE_FINALE, """"

          swCustPropMgr.Get4 "UM", False, UM, ""

          swCustPropMgr.Get4 "PESO", False, PESO, ""

          swCustPropMgr.Get4 "DESCRIZIONE", False, DESCRIZIONE, """"

          swCustPropMgr.Get4 "TIPO_LAM_1", False, TIPO_LAM_1, """"

          swCustPropMgr.Get4 "TIPO_LAM_2", False, TIPO_LAM_2, """"

       

       

         'search the file name

          FileName = swmodel.GetTitle

          Debug.Print "Nome File --> "; FileName

        

          'delete the file extension

          Codice_1 = Left(FileName, InStrRev(swmodel.GetTitle, ".") - 1)

          Debug.Print "Codice_1 --> "; Codice_1

        

          Set swFeat = swmodel.FirstFeature

              Do While Not swFeat Is Nothing

              Debug.Print "NAME: " & swFeat.Name & "   - TYPE: " & swFeat.GetTypeName

            

              swFeat.GetSpecificFeature2

            

                  If swFeat.GetTypeName() = "CutListFolder" Then

                  Set swBodyFolder = swFeat.GetSpecificFeature2

                

              'Debug.Print swFeat.GetTypeName

                

                  vBodies = swBodyFolder.GetBodies

                   For j = 0 To UBound(vBodies)

                  

                      Set swBody = vBodies(j)

                     'if he finds a sheet-metal he writes "SHEET METAL !!!! -> N." & progressive number

                      If swBody.IsSheetMetal Then Debug.Print "SHEET METAL!!!! --> N." progressive number

                      If swBody.IsSheetMetal = False Then GoTo salta

                   Next j

                    

                

                 ' here the macro write the properties in the cut-list

                  swBodyFolder.UpdateCutList

                  

                              Set swCustPropMgr = swFeat.CustomPropertyManager

                              swCustPropMgr.Get4 "Spessore lamiera", False, "", sThickness

                            

                              swCustPropMgr.Add3 "CODICE", swCustomInfoText, Codice_1 & "." & progressive number, 1

                              swCustPropMgr.Add3 "CODICE_FINALE", swCustomInfoText, Codice_1 & "." & progressive number, 1

                              swCustPropMgr.Add3 "UM", swCustomInfoText, "NR", 1

                              swCustPropMgr.Add3 "PESO", swCustomInfoText, Chr(34) & "SW-MASS" & Chr(34), 1

                              swCustPropMgr.Add3 "DESCRIZIONE", swCustomInfoText, "Lamiera sp. " & sThickness & "mm", 1

                              swCustPropMgr.Add3 "TIPO_LAM_2", swCustomInfoText, "sp. " & sThickness & "mm", 1

                            

                              swCustPropMgr.Get4 "Piegature", False, "", Folds

                            

                              If Folds = 0 Then

                              swCustPropMgr.Add3 "TIPO_LAM_1", swCustomInfoText, "PIANA", 1

                                  Else

                                  swCustPropMgr.Add3 "TIPO_LAM_1", swCustomInfoText, "PIEGATA", 1

                              End If

                            

                  End If

                

      salta:

            

              Set swFeat = swFeat.GetNextFeature

              Loop

       

       

      End Sub