03-27-2021
09:32 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
03-27-2021
09:32 AM
Hello. I am new to the subject of Inventor VBA programming, and I also do not understand how to make the "calcualteTightBoundingBox(Body)" in the following code
(source: https://modthemachine.typepad.com/my_weblog/2017/06/getting-the-overall-size-of-parts.html) :
Public Sub TestTightBoundingBox()
' Have a body selected.
Dim body As SurfaceBody
Set body = ThisApplication.CommandManager.Pick(kPartBodyFilter, "Select the body.")
' Call the function to get the tight bounding box.
Dim bndBox As Box
Set bndBox = calculateTightBoundingBox(body)
' Draw the bounding box using a 3D sketch.
Dim partDoc As PartDocument
Set partDoc = ThisApplication.ActiveDocument
Dim sk As Sketch3D
Set sk = partDoc.ComponentDefinition.Sketches3D.Add()
Dim lines As SketchLines3D
Set lines = sk.SketchLines3D
Dim tg As TransientGeometry
Set tg = ThisApplication.TransientGeometry
Dim minXYZ As Point
Dim minXYmaxZ As Point
Dim minXmaxYZ As Point
Dim minXZmaxY As Point
Set minXYZ = bndBox.MinPoint
Set minXYmaxZ = tg.CreatePoint(bndBox.MinPoint.x, bndBox.MinPoint.y, bndBox.MaxPoint.Z)
Set minXmaxYZ = tg.CreatePoint(bndBox.MinPoint.x, bndBox.MaxPoint.y, bndBox.MaxPoint.Z)
Set minXZmaxY = tg.CreatePoint(bndBox.MinPoint.x, bndBox.MaxPoint.y, bndBox.MinPoint.Z)
Dim maxXYZ As Point
Dim maxXYminZ As Point
Dim maxXZminY As Point
Dim maxXminYZ As Point
Set maxXYZ = bndBox.MaxPoint
Set maxXYminZ = tg.CreatePoint(bndBox.MaxPoint.x, bndBox.MaxPoint.y, bndBox.MinPoint.Z)
Set maxXZminY = tg.CreatePoint(bndBox.MaxPoint.x, bndBox.MinPoint.y, bndBox.MaxPoint.Z)
Set maxXminYZ = tg.CreatePoint(bndBox.MaxPoint.x, bndBox.MinPoint.y, bndBox.MinPoint.Z)
Call lines.AddByTwoPoints(minXYZ, minXYmaxZ)
Call lines.AddByTwoPoints(minXYZ, minXZmaxY)
Call lines.AddByTwoPoints(minXZmaxY, minXmaxYZ)
Call lines.AddByTwoPoints(minXYmaxZ, minXmaxYZ)
Call lines.AddByTwoPoints(maxXYZ, maxXYminZ)
Call lines.AddByTwoPoints(maxXYZ, maxXZminY)
Call lines.AddByTwoPoints(maxXYminZ, maxXminYZ)
Call lines.AddByTwoPoints(maxXZminY, maxXminYZ)
Call lines.AddByTwoPoints(minXYZ, maxXminYZ)
Call lines.AddByTwoPoints(minXYmaxZ, maxXZminY)
Call lines.AddByTwoPoints(minXmaxYZ, maxXYZ)
Call lines.AddByTwoPoints(minXZmaxY, maxXYminZ)
End Sub