Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

Macro Help - Place BOM in drawing

Status
Not open for further replies.

newby81

Mechanical
Apr 23, 2015
14
0
0
CA
Hi Guys,

I used the API help and found an example which sounds like what I am looking for.

I am now trying to customize the Macro for my application. In doing so I am getting errors which I do not know how to resolve. Any assistance would be appreciated.

Run_Time_Error_krvb63.png


MacroErrorText_cnfrhk.png


Here is the macro code:
Code:
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 swModel = swApp.ActiveDoc
    Set swDrawing = swModel
    Set swModelDocExt = swModel.Extension
    boolstatus = swDrawing.ActivateView("Drawing View1")
    Set swView = swDrawing.ActiveDrawingView

    ' Insert TopLevel BOM table
    AnchorType = swBOMConfigurationAnchor_TopLeft
    BomType = swBomType_TopLevelOnly
    TableTemplate = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\english\bom-standard.sldbomtbt"
    'Configuration = ""
    Configuration = "Default"
    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
 
Replies continue below

Recommended for you

InsertBomTable4 didn't work for some reason and so swBOMAnnotation is Nothing which cause the error later
check that :
- "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\english\bom-standard.sldbomtbt" actually exists
- swView is not nothing with: If swView Is Nothing then Msgbox("View is nothing"): Exit Sub
- change Configuration = "Default" to Configuration = ""
 
Status
Not open for further replies.
Back
Top