Insert and Show BOM Table in Assembly (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. Parts-only 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\cosmosfloxpress\ball
valve\ball_valve.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_PartsOnly
Configuration
= "Default"
Set
swBOMAnnotation = swModelDocExt.InsertBomTable2(TemplateName,
0.4, 0.3, BomType, Configuration, False)
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.02268677135385, 0.0082159933431, 0.01133567172189,
False, 0, Nothing, 0)
Set
swNote = swModelDocExt.InsertStackedBalloon(swBS_SplitCirc,
swBF_Tightest, swBalloonTextItemNumber, "", swBalloonTextCustom,
"Lower text", swBF_UserDef, True, 2, "Denotation Text")
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