algorithmic modeling for Rhino
Hi All,
I have a series of Breps referenced from Rhino. I want to calculate the bounding box of these Breps from different planes (worldXY, rotated worldXY etc). The calculations seem to be working correctly (ie I get the correct bounding box dimension) but when these calculated bounding boxes gets output from the custom GH component, they all get displayed oriented in the WorldXY plane.
Is anyone having the same problem or does anyone have any suggestions?
------------------------------------
Dim CurrentBrep As Brep = Nothing
Floor.CastTo(CurrentBrep)
Dim worldXY as plane(origin,unitx,unity)
WorldXY.Rotate(someangle,unitz)
'get bounding box.
Dim CurrentBox As BoundingBox = CurrentBrep.GetBoundingBox(WorldXY)
BoundingBoxList.Add(CurrentBox)
DA.SetDataList(1, BoundingBoxList)
Tags:
I think that's how it's supposed to work now. You can reference a box object that will be correctly oriented in world coordinates like this:
Private Sub RunScript(ByVal b As Brep, ByVal pl As Plane, ByRef A As Object)
Dim bx As box
Dim bbox As boundingbox = b.GetBoundingBox(pl, bx)
a = bx
End Sub
Hi Kermin,
a BoundingBox object is defined by two corner points (lower-left-front and upper-right-back) and is therefore unable to store orientations. If you want an oriented boundingbox you'll need to use the overload of GetBoundingBox() that takes a Box object.
Dim box As Box = Box.Unset
CurrentBrep.GetBoundingBox(Plane.WorldXY, box)
I added the Box type specifically because I ran into problems like this more often. Traditionally boxes are represented in Rhino core as arrays of 8 corner-points, but there's no guarantee of orthogonality there.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Sounds great. Now I understand what's happening.
Thanks.
Hi David,
I'm trying to get some oriented bounding boxes similar to this example but it gives me an ArgumentTypeException error: expected StrongBox[Box], got Box
import Rhino as rc
plane = rc.Geometry.Plane.WorldXY
plane.Rotate(math.radians(-120), rc.Geometry.Vector3d.ZAxis)
box = rc.Geometry.Box.Unset
bbox = geometry.GetBoundingBox(plane, box)
Any idea what's going wrong here? What is a StrongBox in general?
Thanks,
Mostapha
StrongBox seems to be a python thing. No habla Python.
--
David Rutten
david@mcneel.com
Tirol, Austria
Thanks David! I wrote my own version for now.
Hello
import Rhino as rc
import mathplane = rc.Geometry.Plane.WorldXY
plane.Rotate(math.radians(-120), rc.Geometry.Vector3d.ZAxis)
a= x.GetBoundingBox(plane)
x as geometrybase (item)
the resulting boundingbox is a self in this method.
Best,
M.
Hi Mostapha,
this seems to work:
import Rhino as rc
import math
plane = rc.Geometry.Plane.WorldXY
plane.Rotate(math.radians(-120), rc.Geometry.Vector3d.ZAxis)
bbox = geometry.GetBoundingBox(plane)
box = rc.Geometry.Box(bbox)
xform = rc.Geometry.Transform.Rotation(math.radians(-120),
rc.Geometry.Vector3d.ZAxis, rc.Geometry.Point3d.Origin)
box.Transform(xform)
a = box
Cheers
emilio
Huh ... hadn't seen Marios's reply before posting ...
emilio
Hi Mario and Emilio,
Thank you for your help. I'll definitely use your suggestions next time.
Cheers,
Mostapha
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by