3 Replies Latest reply on Sep 16, 2015 7:38 AM by Ivana Kolin

    Components in Each BOM Table Row Example error

    Henrich-Jürgen Kuklane

      Hi

       

      I have a problem maybe someone can help me.

      Problem is in Main sub " Set swDraw = swModel "Type missmatch here"". Maybe its stupid question but i am new to solidworks

      I am using solidworks 2015 SP 3.0

       

      Option Explicit

       

      Sub ProcessTableAnn(swApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, swTableAnn As SldWorks.TableAnnotation, ConfigName As String)

       

          Dim nNumRow As Long

          Dim J As Long

          Dim I As Long

          Dim ItemNumber As String

          Dim PartNumber As String

       

          Debug.Print "   Table Title        " & swTableAnn.Title

       

          nNumRow = swTableAnn.RowCount

       

          Dim swBOMTableAnn As BomTableAnnotation

          Set swBOMTableAnn = swTableAnn

       

          For J = 0 To nNumRow - 1

              Debug.Print "   Row Number " & J & " Component Count  : " & swBOMTableAnn.GetComponentsCount2(J, ConfigName, ItemNumber, PartNumber)

              Debug.Print "       Item Number  : " & ItemNumber

              Debug.Print "       Part Number  : " & PartNumber

            

              Dim vPtArr As Variant

              Dim swComp As Object

              Dim pt As Object

              Dim compPath As String

       

              vPtArr = swBOMTableAnn.GetComponents2(J, ConfigName)

       

              If (Not IsEmpty(vPtArr)) Then

                  For I = 0 To UBound(vPtArr)

                      Set pt = vPtArr(I)

                      Set swComp = pt

                      If Not swComp Is Nothing Then

                          Debug.Print "           Component Name :" & swComp.Name2 & "      Configuration Name : " & swComp.ReferencedConfiguration

                          Debug.Print "           Component Path :" & swComp.GetPathName

                      Else

                          Debug.Print "  Could not get component."

                      End If

                  Next

              End If

          Next J

      End Sub

       

      Sub ProcessBomFeature(swApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, swBomFeat As SldWorks.BomFeature)

       

          Dim swFeat As SldWorks.Feature

          Dim vTableArr As Variant

          Dim vTable As Variant

          Dim vConfigArray As Variant

          Dim vConfig As Variant

          Dim ConfigName As String

          Dim swTable As SldWorks.TableAnnotation

        

          Set swFeat = swBomFeat.GetFeature

          vTableArr = swBomFeat.GetTableAnnotations

       

          For Each vTable In vTableArr

              Set swTable = vTable

              vConfigArray = swBomFeat.GetConfigurations(True, True)

              For Each vConfig In vConfigArray

                   ConfigName = vConfig

                   Debug.Print "-------------------------------------------------------"

                   Debug.Print " Component for Configuration : " & ConfigName

                   ProcessTableAnn swApp, swModel, swTable, ConfigName

              Next vConfig

          Next vTable

       

      End Sub

       

      Sub main()

       

          Dim swApp As SldWorks.SldWorks

          Dim swModel As SldWorks.ModelDoc2

          Dim swDraw As SldWorks.DrawingDoc

          Dim swFeat As SldWorks.Feature

          Dim swBomFeat As SldWorks.BomFeature

        

          Set swApp = Application.SldWorks

          Set swModel = swApp.ActiveDoc

          Set swDraw = swModel "Type missmatch"

          Set swFeat = swModel.FirstFeature

       

          Do While Not swFeat Is Nothing

              If "BomFeat" = swFeat.GetTypeName Then

                  Debug.Print "******************************"

                  Debug.Print "Feature Name : " & swFeat.Name

       

                  Set swBomFeat = swFeat.GetSpecificFeature2

       

                  ProcessBomFeature swApp, swModel, swBomFeat

              End If

              Set swFeat = swFeat.GetNextFeature

          Loop

      End Sub