Files
Get body bounding box using IFace2::GetTessTriangles
Code
Module:
'Demonstrates how to get the minimum bounding box (within the X-Y-Z coord system) _
of a body using tessellation triangles.
'Preconditions: Body is selected.
'Results: See immediate window.
'Written by Keith Rice and Rajat Jain
'CADSharp LLC
'www.cadsharp.com
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swBody As SldWorks.Body2
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swBody = swSelMgr.GetSelectedObject6(1, -1)
Dim myMinBB As clsMinBoundingBox
Set myMinBB = New clsMinBoundingBox
myMinBB.GetMinimumBoundingBox swBody
Debug.Print "X max: " & Round(myMinBB.X_max, 8)
Debug.Print "X min: " & Round(myMinBB.X_min, 8)
Debug.Print "X distance: " & Round(Abs(myMinBB.X_max - myMinBB.X_min), 8)
Debug.Print "Y max: " & Round(myMinBB.Y_max, 8)
Debug.Print "Y min: " & Round(myMinBB.Y_min, 8)
Debug.Print "Y distance: " & Round(Abs(myMinBB.Y_max - myMinBB.Y_min), 8)
Debug.Print "Z max: " & Round(myMinBB.Z_max, 8)
Debug.Print "Z min: " & Round(myMinBB.Z_min, 8)
Debug.Print "Z distance: " & Round(Abs(myMinBB.Z_max - myMinBB.Z_min), 8)
Dim dblPts(5) As Variant
dblPts(0) = myMinBB.X_max
dblPts(1) = myMinBB.Y_max
dblPts(2) = myMinBB.Z_max
dblPts(3) = myMinBB.X_min
dblPts(4) = myMinBB.Y_min
dblPts(5) = myMinBB.Z_min
SketchBodyBox swModel, dblPts
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