Components in Each BOM Table Row Example error
Henrich-Jürgen Kuklane Sep 4, 2015 3:41 AMHi
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