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