Estimate a wheel rotation axis with an OBB#
This example shows how to use the draft context to fit an oriented bounding box (OBB) to a set of wheel surfaces, then read back the estimated rotation axis, center and radius. These values can be used to configure a rotating wall boundary condition or a rotating reference frame without measuring the geometry by hand.
import flow360 as fl
project = fl.Project.from_cloud("PROJECT_ID_HERE")
geometry = project.geometry
with fl.create_draft(
new_run_from=geometry,
face_grouping="face_grouping_tag",
) as draft:
# Select the surfaces that make up the wheel.
wheel_surfaces = draft.surfaces["wheel_*"]
# Fit the oriented bounding box to those surfaces.
# rotation_axis_hint is optional; when omitted the axis with the most
# circular cross-section is chosen automatically.
obb = draft.compute_obb(wheel_surfaces, rotation_axis_hint=[0, 1, 0])
print("center:", obb.center)
print("rotation axis:", obb.axis_of_rotation)
print("radius:", obb.radius)
Notes#
compute_obbis available only for drafts created from a Geometry asset. Drafts created from a surface mesh or volume mesh do not carry the tessellation data required to fit the box.entitiesaccepts a single surface, a list of surfaces, or a surface view (e.g.draft.surfaces[...]). Non-surface entities (for example mirrored surfaces) are skipped with a warning.rotation_axis_hintbiases the axis selection toward a known direction. When omitted, the axis whose perpendicular cross-section is most circular is used.The returned
OBBResultexposescenter,axes,extents,axis_of_rotationandradius. When the project has a length unit, the dimensioned fields (center,extentsandradius) carry that unit.
Example use cases#
Automatic rotation setup for wheels and other cylindrical components
Estimating component size and orientation directly from geometry
See also
Draft API Reference (details of
DraftContext.compute_obbandOBBResult)Asset Drafts user guide (conceptual overview)