I have a problem with the 'GetTableAnnotations' method of the 'IBomFeature' object, I'm quite sure that it's returning an empty array, event when the BOM table in the drawing is not empty.
The process of getting the 'IBomFeature' works OK, I have checked it with the 'Name', 'TableType' and other properties and the results are as expected, so I assume that the pointer to the BOM works properly.
The code it's like this:
Dim swApp As ISldWorks
Dim swModel As IModelDoc2
Dim swFeat As IFeature
Dim swBom As IBomFeature
Dim vTableArr As Variant
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swFeat = swModel.FirstFeature
Do While Not swFeat Is Nothing
If swFeat.GetTypeName2 = "BomFeat" Then
Set swBom = swFeat.GetSpecificFeature2
vTableArr = swBom.GetTableAnnotations
MsgBox (swBom.Name & " - " & swBom.GetTableAnnotationCount & " - " & UBound(vTableArr))
Set swFeat = swFeat.GetNextFeature
In my drawing I have only one BOM inserted named "Lista de materiales1", and what I get prompted is:
I've tried with different drawings, different types of BOM (top level only, parts only, indented no numbering, indented flat numbering...), I don't know what's wrong.