Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Sheet metal

The SHEET METAL tab builds parts from a sheet of constant thickness under a sheet metal rule (thickness, bend radius, K-factor), set in Sheet Metal Rules (sheet.manage_rules).

  • Flange (sheet.flange): a base flange from a sketch profile, a contour flange from an open sketch, or an edge flange from a part edge.
  • Hem (sheet.hem) and Fold (sheet.fold) along a sketch line.
  • Unfold / Refold (sheet.unfold, sheet.refold) for working on the flat part.
  • Convert (sheet.convert) turns a plate of constant thickness into sheet metal, or, with bend edges, a solid or a shelled body.
  • Create Flat Pattern (sheet.flat_pattern) shows the flat part with its bend lines and a bend table, and exports it as DXF or a bend-table CSV through the save picker.

Bends follow the rule’s K-factor, so flat lengths match what a press brake will make. Tests check flat lengths against hand-computed bend allowances.

An edge flange takes its setback off its own edge only. Where that edge ends at an inside corner of the base (the base runs on past it, like the leg of an L), the rest of the base stays, and the rule’s bend relief (relief_width and relief_depth; Relief Width and Relief Depth in Sheet Metal Rules) is cut into it beside the bend’s end: a slot the relief width wide, from the relief depth before the bend line to the relief width past the flange’s far edge in the flat pattern. The bend and the flange are then free of the base, folded and flat. A relief that can’t be cut (a width under 0.01 mm, one as wide as the base beside the bend, or a slot that would cut the base apart) is left out, and the flange feature reports a warning saying where.

Where a cut-out has taken part of an edge away (a corner cut off the plate, a notch in the middle of an edge), an edge flange picked on that edge runs along the stretch the cut-outs leave nearest the pick, and takes its setback off that stretch only. The base on the other side of a notch keeps its edge, and a pick there, in the same feature or a later one, makes a flange of its own. Where the base is still left beside the bend’s end at such a cut-out, it gets the bend relief as above. An edge that cut-outs have taken whole is refused.

The setback is cut out of the base’s outline as it was drawn: where the bend line crosses an arc of the outline (a plate with rounded corners, bent inside or in the middle), the arc stays an arc and ends there, in the flat pattern and the DXF. A free-form curve (an ellipse, a spline) in an outline that a setback cuts is followed by tangent arcs within 0.001 mm.

Where two bends of one edge flange feature meet at a corner of the base, the rule’s corner relief shape (corner_relief_shape; Corner Relief Shape in Sheet Metal Rules) says what is cut there. notch, the default, cuts nothing more: the bends end square at the corner, which leaves a step in the flat pattern between each bend’s end and its flange’s closed end. tear cuts no relief either, and no step: both bends run to the corner where the two bend lines meet, and each bend’s end is cut straight, in the flat pattern, from that corner to where its flange’s closed end starts. Folded, the two bends touch at the corner and open to the rule’s gap where the flanges start; the bend table lists a torn bend between the middles of its two ends. A tear whose cuts would cross in the flat pattern, or that would run one bend into the other folded (flanges at very different angles), is left out with a warning and the corner keeps its notch. round and rectangular cut a relief the size of the rule’s corner relief across, centred on the corner where the two bend lines meet: out of the base a round with half that size as its radius, or a square with half that size as its side, and both bends stop where it begins, cut straight across. The flange panels keep their ends. The relief is in the folded part, the flat pattern, the bend table (the bends are shorter) and the DXF (a round relief is an arc). At a corner that isn’t square the round follows the angle of the base and the square becomes a kite, its two cuts square to the edges. Changing the shape in a rule changes the parts made with that rule. A relief that doesn’t fit (under 0.01 mm across, leaving nothing of a bend, or reaching as far from its corner as another edge of the base is) is left out, and the flange feature reports a warning saying where.

{"command":"sheet.manage_rules","params":{"name":"Sheet 2 mm","thickness":"2 mm","k_factor":0.5,
 "bend_radius":"1 mm","corner_relief_shape":"round","corner_relief":"8 mm","active":true}}

The rule’s shape and size are the default. An edge flange feature can choose its own for the corners its flanges make: corner_relief_shape (notch, round, rectangular or tear) and corner_relief (the size across, a length or an expression) in sheet.flange, or Corner Relief Shape and Corner Relief in the Flange dialog. In the dialog, Rule as the shape and an empty size take the rule’s; either one left out follows the rule while the other is the feature’s. Corners are relieved only between the flanges of one feature, so a feature’s choice never meets another’s at a corner, and two edge flange features of one part can have different reliefs under one rule. A base or contour flange takes its corners from the rule only and refuses both parameters. The flange gap and the rule’s other values stay with the rule for every flange. The feature’s choice is saved with the design (file format 23).

{"command":"sheet.flange","params":{"edges":[[60,0,2],[120,45,2],[60,90,2],[0,45,2]],
 "height":20,"corner_relief_shape":"round","corner_relief":"6 mm"}}

Where the edge flanges of one feature meet at a corner of the base, their panels are closed toward each other at any bend angle: each end is cut square to the sheet, on a line in the flat chosen so that the edges nearest each other (on the inner faces) run parallel, the rule’s gap apart, either side of the plane halfway between the flanges. Flanges at 72° get slanted ends in the flat; corners that aren’t square close the same way, and at 90° it is the corner the rule always gave. A corner that can’t be closed (a gap under 0.01 mm, flanges bending opposite ways, ends that would overlap in the flat pattern) stays open, and the flange feature reports a warning saying where. A flange added by a later feature leaves the corner as it was: the earlier flange keeps its length and the new one ends at its bend.

The flanges of one edge flange feature can each have an angle and a height of their own. An entry of edges is a point [x, y, z], which takes the feature’s height and angle, or an object {"point": [x, y, z], "angle": "105 deg", "height": "30 mm"} whose angle and height (either one, or both) replace them for that edge. They are expressions like the feature’s own, so parameters work, and each is a feature input of its own (Edge angle, Edge height) after Height and Angle. The corners between such flanges close like those between equal ones: the ends run toward each other the rule’s gap apart, either side of the plane halfway between the two flanges, and a taller flange’s end keeps that line up to its own tip. This is how to close a corner between flanges at different angles, because flanges of separate features don’t close toward each other. In the Flange dialog, picking more than one edge shows a row per edge with an angle and a height box; an empty box takes the value above.

{"command":"sheet.flange","params":{"edges":[[60,0,2],{"point":[120,45,2],"angle":"90 deg"},
 {"point":[60,90,2],"angle":"105 deg","height":"30 mm"},{"point":[0,45,2],"angle":"120 deg","height":"25 mm"}],
 "height":38.6,"angle":"75 deg"}}

A flange can also stand on the far edge of another flange: a return, such as a lip turned in along the top of a tray’s walls. It runs along that edge from end to end, so it follows the closed end of the flange it stands on, slanted or not. Two returns of one feature whose flanges meet at a corner of the base are closed toward each other as well, with the rule’s gap. They are mitred either side of a plane that runs along the mean of the two panels’ normals, bisects their bend lines and passes where the lines their panels start on cross. Returns that lie in one plane (level returns on a tray’s walls, whatever the walls’ angle) then meet on the corner’s bisector, like the sides of a picture frame. Each panel ends on a slanted line in the flat. Each bend stops square where all of it keeps half the gap from that plane, at the latest at the end of the flange it stands on, which can leave a short stretch of that flange’s edge bare. Returns turned opposite ways pass each other. A return that meets no other at a corner ends with the flange it stands on; where the flange beside that one leans in over it, the return is cut back until it keeps as clear of that flange as the end of the flange it stands on does. Returns that can’t be closed stay open with a warning, as on the base. Returns of separate features don’t close toward each other either: make the returns round a corner in one feature. A corner relief or a tear changes none of this: it leaves the flanges’ closed ends as they are, so the returns on them close over a relieved or torn corner as over a whole one.

{"command":"sheet.flange","params":{"edges":[[60,2,20],[118,45,20],[60,88,20],[2,45,20]],
 "height":12,"angle":"90 deg"}}

(The four returns of a 120 x 90 tray in 2 mm sheet with 90° walls 20 high: each point is the middle of a wall’s far edge on its inner face, so the returns turn in over the base.)

Convert also takes a solid or a shelled body: pick the face that stays fixed and the sharp edges that become bends (bends; Bend Edges in the dialog). The flat faces reached from the fixed face across those edges become the sheet. A shelled body keeps its walls and their thickness; any other solid’s faces become the outside of the sheet, with the rule’s thickness taken into the body. Each sharp edge stays where the faces of its bend would meet, so the part keeps its envelope and the flat pattern is the outside lengths less a bend deduction per bend, 2·(R + T)·tan(θ/2) − θ·(R + K·T). A bend can be picked on either skin of a shell; bends turn either way, follow one another and take any angle (the walls of a tapered tray at 72°). An edge between two faces of the sheet that is no bend is cut open, each side half the rule’s gap from the plane halfway between the two, like the corners of a tray. A bend drawn as a chamfer (a flat strip between two faces, the chord of the bend’s arc, as models without bend radii draw one) is picked in the middle of the strip: the two faces then meet at their virtual sharp in one bend of the rule’s radius, and the strip is no face of the sheet. A bend modelled with its radius (a cylinder between two flat faces tangent to it, as sheet metal parts from other systems come, or a filleted edge) is picked anywhere on its cylinder, on either skin, and converts the same way: the sheet is bent there with the rule’s radius and K-factor, not the modelled radius, so the flat pattern is the one the rule makes. The result is an ordinary sheet body: edge flanges, cuts, Unfold, the flat pattern and its exports work on it, and it follows the solid when a parameter changes (the edges and the fixed face are found by their names). Without bend edges Convert expects a plate, as before. Either way round walls (holes, slot ends, rounded corners, notches) stay circles and arcs in the flat pattern and the DXF, also where a STEP file writes one in pieces, and the holes and slots of every face of the sheet are its cut-outs, where the bends put them. An engraving in a face of the sheet (a recess with a flat floor, at most half the thickness deep) becomes a pocket of it, as a plate’s does (below), on either skin of a shell. Not converted yet: curved faces other than bends (rolled sheet), with bend edges a hole or an engraving that reaches into a bend or a pocket deeper than half the thickness (cut them after converting), and bends that close a ring.

A plate may carry recesses in one of its faces, such as an engraved label or a counterbore: a recess with a flat floor and walls square to the plate, at most half the plate’s thickness deep. Each becomes a pocket of the sheet (see the pockets below), so the converted part keeps it: the sheet is as thick as the plate, the flat pattern is the whole plate with the recess listed under pockets (its outline, side and depth), and the DXF draws its outline on the pocket layer of its depth, apart from the cut contours, for a laser to mark rather than cut. The face the recesses are in can be the one picked or the other. A recess deeper than half the thickness, recesses in both faces, and a plate whose recesses are larger than the face around them (a thinner plate with raised parts) are refused with the reason. A recess lies in an opening of the face it is cut into, so the faces of a bent part’s legs are none: a bent part is refused as no plate, and converts with its bend edges. A bend across a pocket is refused as for any pocket, so fold or flange clear of an engraving.

{"command":"solid.box","params":{"length":100,"width":60,"height":30,"body_name":"Tray"}}
{"command":"solid.shell","params":{"faces":[[50,30,30]],"thickness":2}}
{"command":"sheet.convert","params":{"body":"Tray","face":[50,30,0],
 "bends":[[50,0,0],[100,30,0],[50,60,0],[0,30,0]]}}

The face can also be the name model.faces lists for it ("face":"F1:+z"), which saves computing a point on a face with holes or a curved outline: model.faces gives every face a point that lies on it.

For a shop drawing or spreadsheet, sheet.export_bend_table returns CSV by default; choose format: "json" for structured data. It includes the sheet rule, thickness, bend angles, radii, allowances and flat centre-line coordinates. Lengths use millimetres and angles use degrees. A bend is listed where its centre line has material: one that a cut-out has shortened gives the length and ends it has left, and one that cut-outs split gives a row for every piece, all with the bend’s number (the flat pattern and the DXF draw the same pieces as bend lines). Supply path to save it, or omit path to receive the content through the command response. body defaults to the last sheet body. Exporting does not add a timeline entry or consume an undo step.

{"command":"sheet.export_bend_table","params":{"format":"csv","path":"bracket-bends.csv"}}
{"command":"sheet.export_dxf","params":{"path":"bracket-flat.dxf"}}

The DXF is an AutoCAD 2000 (AC1015) drawing in millimetres, made for a laser-cutting shop’s nesting or CAM software: each kind of line is on a layer of its own, with a colour (AutoCAD’s index) and, for the bends, a linetype that the file defines.

LayerColourLineHolds
OUTLINE7 white or blackcontinuousthe outer contour of each piece of the sheet
CUT4 cyancontinuouswhat is cut out inside it: holes, slots, and the loose pieces a cut leaves (the middle of a ring)
TEXT2 yellowcontinuousthe letters that text cut through the sheet, with their counters; only with "text": "cut", the default
ETCH6 magentacontinuousletters as single contours, to be marked and not cut: "text": "etch", and always text machined to a depth
BEND_UP, BEND_DOWN1 red, 5 blueDASHEDthe bend centre lines, by direction
BEND_NOTES8 greycontinuousthe note beside each bend line, only with "bend_notes": true
POCKET_…3 greencontinuouspockets, a layer for each depth (see below)
PERFORATION3 greencontinuousthe holes of a perforation field

OUTLINE, CUT, BEND_UP and BEND_DOWN are always in the layer table, the others when the sheet has something for them. The inner contours (CUT, TEXT) are written before the outline, so a program that follows the file’s order cuts inside-out.

A round hole is a CIRCLE, a circular arc an ARC, a whole ellipse one ELLIPSE and an arc of an ellipse an elliptical ELLIPSE; the pieces of a spline, the outlines of text and the other conics are SPLINEs of their own degree, so no curve is written as chords. For a machine that reads only lines and arcs, pass "curves": "arcs" to sheet.export_dxf: the free-form curves are then tangent arcs and lines within 0.001 mm.

Letters are told from other cut-outs by where they came from: a cut whose sketch holds text (Sketch Text) marks the cut-outs it makes as letters, counters included, while the design is built; nothing more is saved in the design file. A letter that another cut-out overlaps, or that the sheet’s edge clips, has become one shape with it and stays on CUT.

{"command":"sheet.export_dxf","params":{"path":"tray-flat.dxf","text":"etch","bend_notes":true}}

With "bend_notes": true each bend line gets a note on BEND_NOTES, B1 UP 90° R1 (the bend’s number, its direction, its angle and its inner radius; %%d is AutoCAD’s degree sign). It is 3 mm high ("note_height" changes that), centred half a height beside the middle of the line, parallel to it and readable from below or from the right. A bend that cut-outs split has a note for each piece. Notes are off by default, because a program that cuts or marks every layer would mark them.

A design with several sheet bodies exports one file for each with "per_body": true: the files are <path>-<body>.dxf (characters a file name cannot hold become _; two bodies that would share a name get _2, _3…), and the reply lists them in files. Without a path it lists their DXF texts instead.

Base-flange profiles keep their interior holes. Through cuts that cross a sheet edge become notches in the flat outline; overlapping and repeated cuts remove their combined area once. The flat preview, DXF and unfolded solid use the same material boundaries. Lines and circular arcs remain exact. An ellipse, a spline or text stays the curve it was drawn as in the flat pattern and the unfolded solid; the folded solid follows it with tangent arcs within 0.001 mm, and the point lists write it as chords within 0.001 mm (the DXF keeps the curve, see above). Flat-pattern JSON lists each cut-out twice, in the same order: as points (cutouts), and exactly (cutout_shapes): a round hole as {"circle": {"center", "radius"}}, any other as its line, arc (centre, radius, start and sweep in degrees) and polyline segments (one polyline for each ellipse quarter, spline or glyph curve).

Cuts can leave separate material pieces, including the centre of a ring cut. These pieces remain one logical sheet group through Unfold / Refold and export as separate flat outlines. A cut that parts a piece from the base (a flange cut off along its bend, the part of a ring’s inside on a flange’s edge) keeps it too, folded or flat, and its warning says how many pieces are no longer joined to the base, their area and where they lie in the flat pattern. Islands inside other material (a ring’s centre, a letter’s counter) are not counted. Large profiles that exceed the geometry processing budget report an error instead of exporting a partial outline.

A Box cut, or a Cylinder cut whose axis is the sheet’s normal, machines the sheet like the extrude of its footprint: through the sheet it is a cut-out (a cylinder a round one), and part way it is a pocket. A primitive cut at any other angle, or across a folded bend, is refused.

Hole machines the sheet the same way from a flat face of any panel, the base or a flange, on either side, folded or unfolded: square to that panel, a through hole (plain or tapped) is a round cut-out of the flat pattern and a CIRCLE in the DXF, and a counterbore or a blind flat-bottomed hole is a round pocket. A hole slanted to its panel or drilled into the edge of the sheet, a countersink and a drill point are refused.

Parallel, untapered extrude cuts also preserve shallow pockets through Unfold / Refold. The pocket floor and side walls remain solid geometry; overlapping cuts from opposite sides become a through hole wherever they remove the whole thickness. Flat-pattern JSON lists pockets with their side, depth and bottom/top thickness coordinates in millimetres. DXF pocket boundaries use POCKET_BOTTOM_Z…_TO_…_MM, POCKET_TOP_Z…_TO_…_MM, or POCKET_INTERNAL_Z…_TO_…_MM layers. These are machining operations, so do not treat every pocket layer as a through-cut contour when importing the drawing into a CAM tool. (Text machined to a depth is a marking, on ETCH.)

Extrude Intersect on a straight base or an unfolded sheet retains the material inside both the current tool footprint and its depth interval, including interior holes, detached islands and earlier pockets. A shallow intersection records the removed layers above and below the retained material as top and bottom pockets. The sheet rule keeps the original stock gauge; the remaining solid can be thinner. A completely empty intersection removes the sheet and its metadata together. DXF records pocket depth in its layer names; importing that DXF as ordinary sketch geometry does not reconstruct the machining depths automatically. Each positive retained or removed depth layer must meet the kernel’s 0.000001 mm extrusion resolution; smaller layers report an error rather than being rounded away. To Object can retain a tool that trims to a straight prism, using its actual trimmed footprint. A curved tool with varying depth is refused before changing sheet geometry. Pocket profiles can move with planar panels when forming, but a pocket crossing a bend zone cannot yet be refolded. Machining folded bend material, tapered sheet cuts and other unsupported 3D sheet Cut/Intersect operations report an error before changing the design; they cannot silently restore removed material during a later sheet rebuild.

A sketch can be drawn on a flat face of the sheet: the base or a flange, on either side. Pick the face (or give sketch.create the point plane: {face: [x, y, z]}) and the sketch attaches to that panel instead of to a certified source face. It keeps the face’s name, sheet:<body>:<panel>:<top|bottom> (the panel is base or the flange’s feature tag), and finds the face again whenever the sheet is rebuilt: after a parameter change such as the thickness or a flange angle, through Unfold / Refold, after the file is reopened and when the body is renamed. Sketch coordinates are the flat pattern’s, so a point drawn on a flange lies where the flat pattern and its DXF have it, and on the bottom face y runs the other way, as seen from below. When the face is gone (its flange is suppressed or deleted) the sketch reports a lost attachment instead of moving to another face; Redefine Sketch Plane attaches it to another face. fixed: true still freezes the picked plane in space.