MACRO LIBRARY

Get body bounding box using IBody2::GetBodyBox

Free public access. No account or subscription required.

Files

Get body bounding box using IBody2::GetBodyBox

Code

Module:

'Creates a 3D sketch of the bounding box points of a selected body.
    
'Precondition: part or assembly is open and body is selected.
'Result: Bounding box is sketched and bounding box points are printed
'   to immediate window.
    
'Written by Keith Rice
'CADSharp LLC
'www.cadsharp.com
    
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swBody As SldWorks.Body2
Dim vPts As Variant
    
Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swBody = swSelMgr.GetSelectedObject6(1, -1)
    vPts = swBody.GetBodyBox
    
    Debug.Print "Body name: " & swBody.Name
    Debug.Print "First corner: " & Round(vPts(0), 6), Round(vPts(1), 6), Round(vPts(2), 6)
    Debug.Print "Second corner: " & Round(vPts(3), 6), Round(vPts(4), 6), Round(vPts(5), 6)
    
    SketchBodyBox swModel, vPts
End Sub
    
'Points array must be in this order: X_max, Y_max, Z_max, X_min, Y_min, Z_min
Private Sub SketchBodyBox(swModel As SldWorks.ModelDoc2, vPts As Variant)
    swModel.SketchManager.Insert3DSketch Empty
    
    swModel.SetDisplayWhenAdded False
    swModel.SetAddToDB True
    
    swModel.SketchManager.CreateLine vPts(0), vPts(1), vPts(2), vPts(0), vPts(1), vPts(5)
    swModel.SketchManager.CreateLine vPts(0), vPts(4), vPts(2), vPts(0), vPts(4), vPts(5)
    swModel.SketchManager.CreateLine vPts(3), vPts(1), vPts(2), vPts(3), vPts(1), vPts(5)
    swModel.SketchManager.CreateLine vPts(3), vPts(4), vPts(2), vPts(3), vPts(4), vPts(5)
    
    swModel.SketchManager.CreateLine vPts(0), vPts(1), vPts(2), vPts(3), vPts(1), vPts(2)
    swModel.SketchManager.CreateLine vPts(0), vPts(4), vPts(2), vPts(3), vPts(4), vPts(2)
    swModel.SketchManager.CreateLine vPts(0), vPts(1), vPts(5), vPts(3), vPts(1), vPts(5)
    swModel.SketchManager.CreateLine vPts(0), vPts(4), vPts(5), vPts(3), vPts(4), vPts(5)
    
    swModel.SketchManager.CreateLine vPts(0), vPts(1), vPts(2), vPts(3), vPts(1), vPts(2)
    swModel.SketchManager.CreateLine vPts(0), vPts(4), vPts(2), vPts(3), vPts(4), vPts(2)
    swModel.SketchManager.CreateLine vPts(0), vPts(1), vPts(5), vPts(3), vPts(1), vPts(5)
    swModel.SketchManager.CreateLine vPts(0), vPts(4), vPts(5), vPts(3), vPts(4), vPts(5)
    
    swModel.SketchManager.CreateLine vPts(0), vPts(1), vPts(2), vPts(0), vPts(4), vPts(2)
    swModel.SketchManager.CreateLine vPts(0), vPts(1), vPts(5), vPts(0), vPts(4), vPts(5)
    swModel.SketchManager.CreateLine vPts(3), vPts(1), vPts(2), vPts(3), vPts(4), vPts(2)
    swModel.SketchManager.CreateLine vPts(3), vPts(1), vPts(5), vPts(3), vPts(4), vPts(5)
    
    swModel.SetDisplayWhenAdded True
    swModel.SetAddToDB False
    
    swModel.SketchManager.Insert3DSketch Empty
    
    swModel.EditRebuild3
End Sub