Hide Table of Contents

Insert and Show BOM Table and BOM Balloon Example (VBA)

This example shows how to insert a Bill of Materials (BOM) table and balloon in a drawing document.

'----------------------------------------------------------------------------
' Preconditions:
' 1. Specified file and template exist.
' 2. Open an Immediate Window.
'
' Postconditions:
' 1. Inserts an indented BOM table.
' 2. Inserts a BOM balloon annotation.
' 3. Inspect the Immediate Window for the BOM feature properties.
'
' NOTE: Because the drawing is used elsewhere, do not save any changes.
'---------------------------------------------------------------------------

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swModelDocExt           As SldWorks.ModelDocExtension
Dim swDrawing               As SldWorks.DrawingDoc
Dim swView                  As SldWorks.View
Dim swBOMAnnotation         As SldWorks.BomTableAnnotation
Dim swBOMFeature            As SldWorks.BomFeature
Dim swNote                  As SldWorks.Note
Dim BomBalloonParams        As SldWorks.BalloonOptions
Dim boolstatus              As Boolean
Dim AnchorType              As Long
Dim BomType                 As Long
Dim nErrors                 As Long
Dim nWarnings               As Long
Dim Configuration           As String
Dim TableTemplate           As String

Option Explicit

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.OpenDoc6("C:\Users\Public\Documents\SOLIDWORKS\SOLIDWORKS 2018\samples\tutorial\advdrawings\foodprocessor.slddrw", swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    Set swDrawing = swModel
    Set swModelDocExt = swModel.Extension
    boolstatus = swDrawing.ActivateView("Drawing View1")
    Set swView = swDrawing.ActiveDrawingView

    ' Insert indented BOM table
    AnchorType = swBOMConfigurationAnchor_TopLeft
    BomType = swBomType_Indented
    TableTemplate = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\english\bom-standard.sldbomtbt"
    Configuration = ""
    Set swBOMAnnotation = swView.InsertBOMTable4(False, 0.4, 0.3, AnchorType, BomType, Configuration, TableTemplate, False, swNumberingType_Detailed, True)
    Set swBOMFeature = swBOMAnnotation.BomFeature

    Debug.Print "Type of BOM table as defined in swBomType_e: " & swBOMFeature.TableType
    Debug.Print "Numbering type of BOM table as defined in swNumberingType_e: " & swBOMFeature.NumberingTypeOnIndentedBOM
   
Debug.Print "Value to display when a value is 0 as defined in swZeroQuantityDisplay_e: " & swBOMFeature.ZeroQuantityDisplay
    Debug.Print "Name of configuration used for BOM table: " & swBOMFeature.Configuration
    Debug.Print "Display as one item? " & swBOMFeature.DisplayAsOneItem
    Debug.Print "Sequence start number: " & swBOMFeature.SequenceStartNumber
    Debug.Print "Keep missing items? " & swBOMFeature.KeepMissingItems
   
Debug.Print "  Strikeout missing items? " & swBOMFeature.StrikeoutMissingItems
   
Debug.Print "  Replace missing components as defined in swKeepReplacedCompOption_e: " & swBOMFeature.KeepReplacedCompOption
    Debug.Print "Keep current item numbers when reordering rows? " & swBOMFeature.KeepCurrentItemNumbers

    boolstatus = swModelDocExt.SelectByID2("", "EDGE", 0.1205506330468, 0.261655309417, -4.000000000133E-04, False, 0, Nothing, 0)

    Set BomBalloonParams = swModel.Extension.CreateBalloonOptions()
    BomBalloonParams.Style = swBS_Circular
    BomBalloonParams.Size = swBF_2Chars
    BomBalloonParams.UpperTextContent = swBalloonTextItemNumber
    BomBalloonParams.ShowQuantity = True
    BomBalloonParams.QuantityPlacement = swBalloonQuantityPlacement_Right
    BomBalloonParams.QuantityDenotationText = "PLACES"
    BomBalloonParams.QuantityOverride = False
    BomBalloonParams.QuantityOverrideValue = ""
    BomBalloonParams.ItemNumberStart = 1
    BomBalloonParams.ItemNumberIncrement = 1
    BomBalloonParams.ItemOrder = swBalloonItemNumbers_DoNotChangeItemNumbers

    Set swNote = swModelDocExt.InsertBOMBalloon2(BomBalloonParams)

    ' Get whether balloon is a BOM balloon
    ' If so, print the name of the BOM balloon

    If swNote.IsBomBalloon Then
        Debug.Print ("Name of BOM balloon: " & swNote.GetName)
    End If

    swDrawing.ForceRebuild

End Sub



Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Insert and Show BOM Table and BOM Balloon Example (VBA)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2018 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.