feature_extrude
Extrude sketch profiles, planar faces, or sketch text into a solid, surface, or thin wall; use cut, join, or intersect operations to modify existing bodies.
Instructions
Extrude sketch profiles, planar faces or sketch texts into a solid (or cut/join/ intersect existing bodies).
Units: plain-number lengths are in units (default mm), angles in degrees; a string
is a Fusion expression ("wall * 2", "5 deg") and keeps the feature driven by it.
Refs: profiles from sketch_draw / sketch_profiles ("profile:@x,y") or
{"sketch": , "all": true}; planar faces and to_entity targets from
inspect_query; planes from construction_plane or origin:XY|XZ|YZ; sketch texts from
sketch_draw (kind "text"). Refs to faces/bodies go stale after later features - take
them from the latest results.
Modes:
one_side: side1 + direction (positive = sketch normal) + taper1;
two_sides: side1 and side2 independent (each its own extent and taper);
symmetric: side1 must be a distance; symmetric_full_length picks total vs half. A negative distance extrudes the other way. operation="cut" with through_all and direction="negative" cuts down through a body below the sketch.
Surface: is_solid=false extrudes a surface body (operation new_body / new_component, no thin); profiles may then also be open sketch curve refs or edge refs (one kind, connected curves are chained) - e.g. an open line becomes a wall sheet.
Errors: wrong field for the mode or a wrong entity kind -> INVALID_PARAMS (nothing
changed); a stale profile point -> ENTITY_NOT_FOUND with details.profiles (current
profiles); a feature Fusion computes with an error -> FUSION_API_ERROR and the
timeline is rolled back. A warning keeps the feature and is reported in health.
Returns {"feature": {ref, type, name}, "health": {"state": ok|warning|error|unknown, "message"}, "created_bodies": [{ref, type, name}], "modified_bodies": [{ref, type, name}], "removed_bodies": [<refs of bodies consumed by join/cut>], "component"?: {ref, type, name} (new_component only)}. Body geometry is not repeated: describe the bodies with inspect_* if needed.
Examples:
feature_extrude(profiles=["profile:@10,10"], side1={"type": "distance", "distance": 20})
feature_extrude(profiles=[...], operation="cut", side1={"type": "through_all"}, direction="negative")
feature_extrude(profiles=[...], mode="symmetric", side1={"type": "distance", "distance": 40}, symmetric_full_length=true, thin={"thickness": 2, "location": "center"})
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | one_side (default), two_sides or symmetric | one_side |
| thin | No | Thin wall instead of a solid: {"thickness", "location": side1|side2|center, "thickness2"? (two_sides)} | |
| side1 | Yes | {"type": "distance", "distance"} | {"type": "to_entity", "entity", "offset"=0, "chained"=true} | {"type": "through_all"} | |
| side2 | No | Second side extent; required for two_sides only | |
| start | No | Where the extrude starts: {"type": "profile_plane"} (default) | {"type": "offset", "offset"} | {"type": "entity", "entity", "offset"=0} | |
| units | No | Unit of plain-number lengths and points | mm |
| taper1 | No | Taper of side 1, degrees | |
| taper2 | No | Taper of side 2, degrees (two_sides only) | |
| is_solid | No | true (default) = solid; false = surface body (new_body / new_component only; close surfaces with surface_stitch, check is_solid) | |
| profiles | Yes | Profiles to use: 'profile:<sketch>@x,y' refs from sketch_profiles / sketch_draw, {"sketch", "point"} / {"sketch", "curves"} / {"sketch", "all": true}, or planar face refs (inspect_query) | |
| direction | No | one_side only: positive (default, along the sketch normal) or negative | |
| operation | No | new_body (default), join, cut, intersect or new_component | new_body |
| participant_bodies | No | Body refs join/cut/intersect act on (default: every body it touches); not allowed with new_body / new_component | |
| symmetric_full_length | No | symmetric only: true = side1.distance is the total length, false = length of each half |