Insert and Show BOM Table and BOM Balloon Example (VBA)
This example shows how to insert a bill of materials table and balloon
in a drawing document.
'----------------------------------------------------------------------------
' Preconditions: Specified file to open and template exist.
'
' Postconditions:
' 1. An indented BOM table is inserted.
' 2. A BOM balloon annotation is inserted.
' 3. Inspect the Immediate Window for the name of the configuration used
' to create the table, the type of numbering, and the name of
the annotation.
'
' NOTE: Because this drawing document is used by a SolidWorks
' online tutorial, do not save any changes
when
' closing the document.
'------------------------------------------------------------------
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:\Program Files\SolidWorks
Corp\SolidWorks\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
' Print the name of the configuration used
for the BOM table
Debug.Print "Name of configuration used for BOM table: " &
swBOMFeature.Configuration
Debug.Print "Display as one item? " & swBOMFeature.DisplayAsOneItem
Debug.Print "Strikeout missing items? " & swBOMFeature.StrikeoutMissingItems
Debug.Print "Sequence start number: " & swBOMFeature.SequenceStartNumber
Debug.Print "Keep missing items? " & swBOMFeature.KeepMissingItems
Debug.Print "Keep current item numbers? " & 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.UpperText = ""
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