AnsweredAssumed Answered

API to link weldment cut list placed on each sheet to all the views of this sheet

Question asked by Sebastien Kitten on Apr 8, 2017
Latest reply on Apr 8, 2017 by Deepak Gupta


I currently use a macro that scans all the views for each sheet placed in a drawing and assigns the BOM table placed on each sheet to all the views present on this sheet. This works pretty well, excepted when it comes to weldment cut list. I would like to adapt this macro so it works exactly the same way when the sheet has a weldment cut list instead of a BOM. I don't want to replace the weldment cut list with a BOM including the detailed cut list. I don't succeed in getting the feature name of the table when it is a weldment cut list. Here is my code, I'm looking for some help to correct the "If TableType = 4 Then" test.


Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swDraw As SldWorks.DrawingDoc

Dim swTableAnnotation As SldWorks.TableAnnotation

Dim swBOMAnnotation As SldWorks.BomTableAnnotation

Dim swBOMFeature As SldWorks.BomFeature

Dim swWCLAnnotation As Variant

Dim swWCLFeature As SldWorks.WeldmentCutListFeature

Dim View As SldWorks.View

Dim vSheetName  As Variant

Dim i As Integer

Dim TableType As Long

Dim BOMTableName As String

Dim WCLTableName As String



Sub main()

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swDraw = swModel

Set Sheet = swDraw.GetCurrentSheet



vSheetName = swDraw.GetSheetNames



    For i = 0 To UBound(vSheetName)

        swDraw.ActivateSheet vSheetName(i)




        'Get the first View from the DrawingDoc

        Set View = swDraw.GetFirstView

        'Traverse all the TableAnnotations for the View looking for BOM table type_

        Set swTableAnnotation = View.GetFirstTableAnnotation

        Do While Not swTableAnnotation Is Nothing

            TableType = swTableAnnotation.Type

            If TableType = 2 Then ' BOM

                Set swBOMAnnotation = swTableAnnotation

                Set swBOMFeature = swBOMAnnotation.BomFeature

                BOMTableName = swBOMFeature.Name

                Debug.Print "BOM on this active sheet: " & BOMTableName

            End If

            If TableType = 4 Then ' WeldmentCutList

'                Set swWCLFeature =

'                BOMTableName = swWCLFeature.Name

'                Debug.Print "Weldment Cut List on this active sheet: " & BOMTableName

            End If

            Set swView = swDraw.GetFirstView

            Set swView = swView.GetNextView

                While Not swView Is Nothing

                    swView.SetKeepLinkedToBOM True, BOMTableName

                    Set swView = swView.GetNextView


        Exit Do

        Set swTableAnnotation = swTableAnnotation.GetNext


    Next i


End Sub