Insert and Show BOM Table in Assembly Example (VBA)
This example shows how to insert and show a BOM table in an assembly
document.
'------------------------------------------------
' Preconditions: Specified file to open and template exist.
'
' Postconditions:
' 1. Indented BOM table is inserted.
' 2. Split-circle stacked balloon, which uses the
' BOM table item number for its upper text,
is inserted
' for the selected face.
' 3. Examine both the BOM table and stacked balloon to verify
' the results.
'
' NOTE: Because this assembly document is used by a
SolidWorks
' online tutorial, do not
save any changes when
' closing the document.
'-------------------------------------------------
Option Explicit
Sub main()
Dim swApp
As SldWorks.SldWorks
Dim swModel
As SldWorks.ModelDoc2
Dim swModelDocExt
As SldWorks.ModelDocExtension
Dim swBOMAnnotation
As SldWorks.BomTableAnnotation
Dim swBOMFeature
As SldWorks.BomFeature
Dim swNote
As SldWorks.Note
Dim boolstatus
As Boolean
Dim BomType
As Long
Dim Configuration
As String
Dim TemplateName
As String
Dim nErrors
As Long
Dim nWarnings
As Long
Set swApp = Application.SldWorks
' Open assembly document
Set swModel = swApp.OpenDoc6("C:\Program
Files\SolidWorks Corp\SolidWorks\samples\tutorial\api\arm2.sldasm",
swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)
Set swModelDocExt = swModel.Extension
' Insert BOM table
TemplateName = "C:\Program Files\SolidWorks
Corp\SolidWorks\lang\english\bom-standard.sldbomtbt"
BomType = swBomType_Indented
Configuration = "Default"
Set swBOMAnnotation = swModelDocExt.InsertBomTable3(TemplateName,
0, 1, BomType, Configuration, False, swNumberingType_Detailed, True)
Set swBOMFeature = swBOMAnnotation.BomFeature
' Print the name of the configuration used
for the BOM table
Debug.Print "Name of configuration used
for BOM table: " & swBOMFeature.Configuration
' Insert BOM balloon for the selected
face, which
' belongs to the part Side
boolstatus = swModelDocExt.SelectByID2("",
"FACE", 0.091853347996107, -1.04709589619745E-02, 1.74830255600256E-03, False,
0, Nothing, 0)
Dim StackedBalloonParams as
SldWorks.StackedBalloonOptions
Set StackedBalloonParams = swModelDocExt.CreateStackedBalloonOptions()
StackedBalloonParams.BalloonsPerLine = 10
StackedBalloonParams.StackDirection = swStackedBalloonDir_Right
StackedBalloonParams.Style = swBS_SplitCirc
StackedBalloonParams.Size = swBF_Tightest
StackedBalloonParams.UpperTextContent = swBalloonTextItemNumber
StackedBalloonParams.UpperText = ""
StackedBalloonParams.LowerTextContent =
swBalloonTextCustom
StackedBalloonParams.LowerText = "Lower text"
StackedBalloonParams.ShowQuantity = True
StackedBalloonParams.QuantityPlacement =
swBalloonQuantityPlacement_Top
StackedBalloonParams.QuantityDenotationText = "PLACES"
StackedBalloonParams.QuantityOverride = False
StackedBalloonParams.ItemNumberStart = 1
StackedBalloonParams.ItemNumberIncrement = 1
StackedBalloonParams.ItemOrder =
swBalloonItemNumbers_DoNotChangeItemNumbers
Set swNote = swModelDocExt.InsertStackedBalloon2(StackedBalloonParams)
swModel.ViewZoomtofit2
' Get whether balloon is a stacked
balloon;
' if so, print the name of the balloon
If swNote.IsStackedBalloon Then
Debug.Print ("Name
of stacked balloon: " & swNote.GetName)
End If
End Sub