place
Position FreeCAD objects by their real bounding-box corner, avoiding manual offset calculations and automatically handling PartDesign body placement for correct results.
Instructions
Position an object by its real bounding box instead of a derived offset.
Pass exactly one of bbox_min or origin:
- bbox_min: the object's bounding-box minimum corner is moved to this
point. The server computes the offset from the object's CURRENT real
bounding box, so you express intent ("put this corner here") instead
of deriving a translation yourself and getting it wrong.
- origin: sets the placement's base position directly.
rotation ({"Axis": {"x","y","z"}, "Angle": degrees}) is applied before
the bbox/origin move, so a subsequent bbox_min still lands correctly.
IMPORTANT: if obj_name is a feature inside a PartDesign::Body (e.g. a
Pad), this tool automatically moves the owning Body instead — a
feature's own Placement is silently reverted by its Body on recompute,
so setting it directly on the feature appears to work and does nothing.
Check the response's movedBody/placementOwner fields to see when this
substitution happened.
Pass expect_size ([x, y, z]) to verify the resulting bounding box matches
what you intended — this catches the common mistake of mapping a
sketch/pad's width/height/length onto the wrong real-world axis (e.g.
building a 320mm-long rail as 22x22x320 instead of 22x320x22).
Args:
doc_name: The name of the document containing the object.
obj_name: The name of the object to place.
bbox_min: [x, y, z] target for the object's bounding-box minimum corner.
origin: [x, y, z] target for the placement's base position.
rotation: {"Axis": {"x","y","z"}, "Angle": degrees} to set before moving.
expect_size: [x, y, z] expected bounding box, checked after placement.
rotation_center: [x, y, z] to rotate ABOUT, instead of about the
object's own origin. This is what posing a linkage needs — a
connecting rod swings about its wrist pin, a crank arm sweeps
about the main-bearing axis. Without it you would have to
pre-compute the compensating translation yourself, which is the
derived-number mistake this tool exists to prevent.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | ||
| bbox_min | No | ||
| doc_name | Yes | ||
| obj_name | Yes | ||
| rotation | No | ||
| expect_size | No | ||
| rotation_center | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |