{"$schema":"nativecad-dfm-pack/1","id":"furniture-construction","title":"Furniture construction & joinery — how a chair is actually built","sector":"furniture-construction","version":"2026-09-12","summary":"The construction vocabulary of furniture — rail, stretcher, splat, apron, shell, star base, cantilever, lamination, tenon, dowel, cord seat — each mapped to the ops that build it, plus standard member sections, joint-selection rules and worked recipes for ten chair construction types.","aliases":["joinery","woodworking joinery","furniture joinery","chair construction","furniture construction","chair frame","mortise and tenon","mortise-tenon","stretcher","splat","apron","crest rail","bentwood","bent lamination","bent plywood","moulded shell","shell chair","star base","cantilever chair","sled base","cord seat","danish cord","cane seat","turned leg","cabinetmaking","chair joint"],"crossSector":false,"size":"standard","sources":[{"id":"joyce-furniture","title":"Ernest Joyce, The Technique of Furniture Making (rev. Alan Peters), 4th ed. — chair and table joinery proportions","note":"Standard cabinetmaking reference for rail, stretcher and leg sections and tenon proportions."},{"id":"hayward-joints","title":"Charles H. Hayward, Woodwork Joints — mortise-and-tenon, half-lap, bridle and dowel proportions","note":"Source of the one-third and two-thirds tenon rules."},{"id":"wood-handbook","title":"USDA Forest Products Laboratory, Wood Handbook FPL-GTR-190 (ch. 8 fastenings, ch. 10 adhesives, ch. 19 bent wood members)","url":"https://www.fpl.fs.usda.gov/documnts/fplgtr/fpl_gtr190.pdf","accessed":"2026-09-10"},{"id":"en-12520","title":"EN 12520:2015 Furniture — Strength, durability and safety — Requirements for domestic seating","accessed":"2026-09-10"},{"id":"en-1728","title":"EN 1728:2012+AC:2013 Furniture — Seating — Test methods for the determination of strength and durability","accessed":"2026-09-10"},{"id":"en-1022","title":"EN 1022:2018 Furniture — Seating — Determination of stability","accessed":"2026-09-10"},{"id":"en-636","title":"EN 636:2012+A1:2015 Plywood — Specifications (veneer thickness and panel build-up)","accessed":"2026-09-10"},{"id":"en-10305-3","title":"EN 10305-3:2016 Steel tubes for precision applications — Welded cold-sized tubes (furniture tube sizes and wall thicknesses)","accessed":"2026-09-10"},{"id":"astm-d3574","title":"ASTM D3574-17 Standard Test Methods for Flexible Cellular Materials — Slab, Bonded and Molded Urethane Foams","accessed":"2026-09-10"},{"id":"pu-handbook","title":"Covestro (Bayer) Polyurethanes Handbook — cold-cure moulded flexible and self-skinning foam seat shells","accessed":"2026-09-10"},{"id":"iso-4762","title":"ISO 4762:2004 Hexagon socket head cap screws","accessed":"2026-09-10"},{"id":"din-7997","title":"DIN 7997 Countersunk head wood screws with cross recess","accessed":"2026-09-10"},{"id":"iso-8734","title":"ISO 8734:1997 Parallel pins, of hardened steel and martensitic stainless steel (dowel pins)","accessed":"2026-09-10"},{"id":"franks-cord","title":"Frank's Cane & Rush Supply — Danish (laid paper) seat cord and pre-woven cane webbing technical data","accessed":"2026-09-10"},{"id":"titebond-tds","title":"Franklin International, Titebond III Ultimate Wood Glue technical data sheet — clamp time, open time and bond-line thickness","accessed":"2026-09-10"}],"entries":[{"id":"op-inventory-for-furniture","kind":"note","tier":1,"title":"Which ops build furniture today","summary":"Furniture is built today from cad_box, cad_cylinder, cad_extrude_profile, cad_revolve_profile, cad_sweep_profile, cad_tube_sweep, cad_loft_profiles, cad_boolean_subtract, cad_fillet_edges, cad_pattern_copies, cad_transform, cad_drill_hole and cad_hole_pattern.","applies":["chair","stool","table","cabinet"],"basis":"The tool surface this build ships, now including cad_joint (CADSF-1370) and cad_fastener (CADSF-1371); the recipes below predate them and remain valid manual alternatives.","tags":["glossary","ops","shipped"],"sources":[]},{"id":"planned-joinery-ops","kind":"note","tier":1,"title":"cad_joint and cad_fastener ship","summary":"A one-call mortise-and-tenon (cad_joint, CADSF-1370) and standard fastener (cad_fastener, CADSF-1371) now ship; cad_fastener_audit must return zero findings before a bolted assembly ships. The manual recipes below remain valid alternatives.","applies":["chair","stool","table"],"basis":"cad_joint and cad_fastener appear in this build's tools/list (CADSF-1370, CADSF-1371); the recipes below predate them and remain buildable manual alternatives.","tags":["glossary","shipped","joinery"],"sources":[]},{"id":"glossary-rail","kind":"feature","tier":1,"title":"Rail — the horizontal member between two legs","summary":"A rail is the horizontal member tying two legs at seat level (seat rail) or at the back (back rail); 20-30 mm thick and 50-80 mm deep. Build it with cad_box, or cad_extrude_profile for a shaped rail, and tenon it into the legs.","applies":["chair","stool","table"],"basis":"A rail carries the seat load in bending between the legs, so it is deep in the load direction and thin across it.","tags":["glossary","rail","frame"],"sources":["joyce-furniture"]},{"id":"glossary-stretcher","kind":"feature","tier":1,"title":"Stretcher — the low rail that triangulates the legs","summary":"A stretcher is a low horizontal member between legs, 20-25 mm square or round, whose job is to stop the leg frame racking. Build it with cad_box or cad_revolve_profile (turned) and tenon or dowel it into the legs.","applies":["chair","stool","table"],"basis":"A stretcher works in tension/compression against racking, not bending, so its section is small and square.","tags":["glossary","stretcher","frame"],"sources":["joyce-furniture"]},{"id":"glossary-apron","kind":"feature","tier":1,"title":"Apron — the skirt rail under a seat or table top","summary":"An apron is the rail immediately under a top or seat, set back 5-15 mm from the edge, 18-25 mm thick. Build it with cad_box and cad_transform; it is the member a top screws down onto.","applies":["table","chair","casegoods"],"basis":"The apron stiffens the top and hides the joint line; the setback reads as a shadow gap.","tags":["glossary","apron","frame"],"sources":["joyce-furniture"]},{"id":"glossary-splat","kind":"feature","tier":1,"title":"Splat — the shaped vertical board in a chair back","summary":"A splat is the single shaped board rising from the back seat rail into the crest rail, 8-16 mm thick. Build it with cad_extrude_profile on a curved outline, or cad_loft_profiles for a twisted splat, then tenon both ends.","applies":["chair"],"basis":"One wide board spans the back with fewer joints than a set of spindles.","tags":["glossary","splat","back"],"sources":["joyce-furniture"]},{"id":"glossary-shell","kind":"feature","tier":1,"title":"Shell — a one-piece seat-and-back surface","summary":"A shell is a single curved panel forming seat and back, 8-10 mm in moulded veneer or 25-40 mm in moulded foam. Build it with cad_sweep_profile (a thin rectangular section along the curved side profile) or cad_loft_profiles plus cad_shell / cad_thicken.","applies":["chair"],"basis":"A shell replaces a seat frame, a back frame and their joints with one moulded part.","tags":["glossary","shell","moulded"],"sources":["en-636"]},{"id":"glossary-star-base","kind":"feature","tier":1,"title":"Star base — the radial multi-arm foot of a swivel chair","summary":"A star base is a hub with 4-5 radial arms carrying glides or casters. Build one arm with cad_box or cad_sweep_profile and repeat it with cad_pattern_copies {type:'circular', count:5, totalAngle:6.2832}, then cad_boolean_union it to a cad_cylinder hub.","applies":["chair","office chair"],"basis":"Radial arms put the support polygon under a single central column.","tags":["glossary","base","swivel"],"sources":["en-1022"]},{"id":"glossary-lamination","kind":"feature","tier":1,"title":"Bent lamination — a curved member glued up from thin plies","summary":"A bent laminate is a curved solid member glued from 1.0-1.5 mm veneer plies over a form. Model the FINISHED member, not the plies: cad_sweep_profile with a rectangular section along the bend path, corner radii via path.fillets.","applies":["chair","stool"],"basis":"Thin plies bend elastically and the glue line holds the curve; the finished part is one solid in CAD.","tags":["glossary","lamination","bent"],"sources":["wood-handbook"]},{"id":"glossary-tenon","kind":"feature","tier":1,"title":"Tenon — the tongue formed on the entering member","summary":"A tenon is the reduced tongue on the end of a rail, one third of the rail thickness and two thirds of the receiving member's width long. Cut it today as a cad_box tenon cad_boolean_union'ed to the rail; cad_joint ships (CADSF-1370).","applies":["chair","table"],"basis":"One third of the stock leaves equal cheeks and a shoulder that resists racking.","tags":["glossary","tenon","joinery"],"sources":["hayward-joints"]},{"id":"glossary-mortise","kind":"feature","tier":1,"title":"Mortise — the socket cut in the receiving member","summary":"A mortise is the rectangular socket in a leg that receives a tenon, 0.2 mm larger than the tenon on each face for glue. Cut it today with cad_boolean_subtract of an oversize cad_box, or cad_drill_hole for a round mortise; cad_joint ships (CADSF-1370).","applies":["chair","table"],"basis":"A socket in the leg keeps the joint's glue area on long grain.","tags":["glossary","mortise","joinery"],"sources":["hayward-joints"]},{"id":"glossary-mount-plate","kind":"feature","tier":1,"title":"Mount plate — the metal plate between a shell and a frame","summary":"A mount plate is a 3-5 mm steel or aluminium plate brazed or welded to a tube frame, drilled 4 x M6, that the shell bolts down onto. Build it with cad_box + cad_hole_pattern and bolt through with cad_drill_hole; cad_fastener ships (CADSF-1371).","applies":["chair"],"basis":"A plate spreads a bolt load over a thin shell that a bolt head alone would crush.","tags":["glossary","plate","shell","frame"],"sources":["iso-4762"]},{"id":"glossary-crest-rail","kind":"feature","tier":2,"title":"Crest rail — the top rail of a chair back","summary":"The crest rail is the shaped top member of a back, 25-45 mm deep, often curved in plan. Build it with cad_sweep_profile along a shallow arc path, or cad_extrude_profile of a curved outline, then mortise it for the splat.","applies":["chair"],"basis":"The crest takes the occupant's back load and is the member a back is judged by.","tags":["glossary","crest","back"],"sources":["joyce-furniture"]},{"id":"glossary-arm-rail","kind":"feature","tier":2,"title":"Arm rail — a continuous rail forming arms and back","summary":"An arm rail is one continuous curved member that forms both arms and the back top, 25-40 mm thick. Build it with cad_sweep_profile along a U-shaped coplanar path with generous path.fillets, or as a laminated bend.","applies":["chair"],"basis":"A single continuous rail removes the arm-to-back joint entirely.","tags":["glossary","arm","continuous"],"sources":["joyce-furniture"]},{"id":"glossary-seat-frame","kind":"feature","tier":2,"title":"Seat frame — the four-rail frame the seat sits in","summary":"A seat frame is four rails tenoned into four legs, with 20-30 mm thick rails, carrying a drop-in panel, a cord weave or a cane sheet. Build it as four cad_box rails plus cad_transform, mortised into the legs.","applies":["chair"],"basis":"A frame lets the seat surface be a separate material from the structure.","tags":["glossary","frame","seat"],"sources":["joyce-furniture"]},{"id":"glossary-turned-leg","kind":"feature","tier":2,"title":"Turned leg — a leg of revolution from a lathe profile","summary":"A turned leg is a leg whose section is circular everywhere, typically 30-45 mm at the top tapering to 20-28 mm at the floor. Build it with cad_revolve_profile on an [[r,z],...] half profile — never sample it as an N-gon.","applies":["chair","stool","table"],"basis":"A lathe only makes bodies of revolution, so the CAD op that matches the process is the revolve.","tags":["glossary","leg","turned"],"sources":["joyce-furniture"]},{"id":"glossary-cantilever","kind":"feature","tier":2,"title":"Cantilever frame — a chair with no back legs","summary":"A cantilever frame carries the seat on a sprung front-to-back loop of 19-25 mm steel tube with no rear leg. Build it with cad_tube_sweep along a coplanar side-profile path and cad_mirror for the second side.","applies":["chair"],"basis":"The tube's elastic springback is the chair's suspension; EN 1728 fatigue is the governing case.","tags":["glossary","cantilever","tube"],"sources":["en-10305-3"]},{"id":"glossary-sled-base","kind":"feature","tier":2,"title":"Sled base — a pair of runner-shaped tube frames","summary":"A sled base carries the chair on two floor runners rather than four feet, from 19-25 mm tube. Build it with cad_tube_sweep along the runner side profile and cad_mirror; it cannot use cad_pattern_copies because the two sides are mirrored, not translated.","applies":["chair"],"basis":"Runners spread the load on soft floors and stop the chair sinking.","tags":["glossary","sled","tube"],"sources":["en-10305-3"]},{"id":"glossary-spacer","kind":"feature","tier":2,"title":"Spacer — the short cylinder that carries a panel off a frame","summary":"A spacer is a short turned or machined cylinder, 12-25 mm diameter, that stands a seat or back panel off the frame to make a shadow gap. Build it with cad_cylinder {r,h} and screw through it.","applies":["chair"],"basis":"The gap is a deliberate detail and a ventilation path, not a tolerance.","tags":["glossary","spacer","detail"],"sources":["joyce-furniture"]},{"id":"glossary-cord-seat","kind":"feature","tier":2,"title":"Cord seat — a seat woven from laid paper cord","summary":"A cord seat is a hand-woven envelope of ~3 mm laid paper cord over the seat frame. In CAD model the FRAME and the woven envelope as a 12-18 mm thick panel inset in the frame with cad_extrude_profile — do not model individual cords.","applies":["chair"],"basis":"Modelling each cord costs thousands of faces and tells a reviewer nothing the envelope does not.","tags":["glossary","cord","seat","weave"],"sources":["franks-cord"]},{"id":"glossary-cane-seat","kind":"feature","tier":2,"title":"Cane seat — a pre-woven cane sheet in a groove","summary":"A cane seat is a pre-woven cane sheet, 1.5-2.5 mm thick, held in a 5-6 mm groove around the seat frame by a spline. Model it as a thin cad_extrude_profile panel let into a cad_boolean_subtract groove in the frame.","applies":["chair"],"basis":"The spline groove is real geometry a maker needs; the weave is not.","tags":["glossary","cane","seat"],"sources":["franks-cord"]},{"id":"glossary-half-lap","kind":"feature","tier":2,"title":"Half-lap — two members each cut back to half thickness","summary":"A half-lap removes half the thickness from each of two crossing members so they finish flush. Cut it today with two cad_boolean_subtract cad_box pockets, each half the member thickness deep; cad_joint ships (CADSF-1370).","applies":["chair","table"],"basis":"Half-lap trades glue area for a joint that can be cut with one setting.","tags":["glossary","half-lap","joinery"],"sources":["hayward-joints"]},{"id":"glossary-dowel-joint","kind":"feature","tier":2,"title":"Dowel joint — two or more pins across a butt joint","summary":"A dowel joint pins a butt joint with 2 or more 8-10 mm dowels at 32 mm centres, entering 15-20 mm each side. Cut it today with matching cad_hole_pattern holes in both parts plus a cad_cylinder dowel; cad_fastener ships (CADSF-1371).","applies":["chair","casegoods"],"basis":"Two pins locate and stop the joint rotating; one pin is a hinge.","tags":["glossary","dowel","joinery"],"sources":["iso-8734"]},{"id":"glossary-scrolled-sheet","kind":"feature","tier":2,"title":"Scrolled sheet — a seat rolled from one continuous panel","summary":"A scrolled seat is one 8-12 mm plywood sheet rolled through seat and back with scrolled ends, carried by two side frames. Build it with cad_sweep_profile: a thin rectangular section along the coplanar side-profile path, scrolls as path.fillets.","applies":["chair"],"basis":"A single sheet on two frames is the whole chair; the scrolls stiffen the free edges.","tags":["glossary","sheet","scroll","bent"],"sources":["en-636"]},{"id":"glossary-swivel-hub","kind":"feature","tier":2,"title":"Swivel hub — the column and tilt fitting under a shell","summary":"A swivel hub is the column (40-60 mm diameter) plus a tilt/plate fitting between shell and base, bolted up 4 x M8. Build the column with cad_cylinder, the fitting with cad_box + cad_hole_pattern, and bolt through with cad_drill_hole.","applies":["chair","office chair"],"basis":"The hub is where the shell's load enters the base, so it is the one place a plate is unavoidable.","tags":["glossary","swivel","hub","base"],"sources":["iso-4762"]},{"id":"glossary-glide","kind":"feature","tier":2,"title":"Glide — the foot fitting at the bottom of a leg","summary":"A glide is a 16-25 mm diameter disc or dome at a leg's foot, entering a 8-10 mm hole. Build it with cad_cylinder or cad_revolve_profile and cad_drill_hole for its stem socket.","applies":["chair","stool","table"],"basis":"The glide, not the leg, is what touches the floor and what a stability test slides on.","tags":["glossary","glide","foot"],"sources":["en-1022"]},{"id":"glossary-veneer-lay-up","kind":"feature","tier":2,"title":"Veneer lay-up — the ply schedule inside a moulded shell","summary":"A moulded shell is 7-9 plies of 1.0-1.5 mm veneer with alternating grain, finishing 8-10 mm. Model the FINISHED shell thickness; the lay-up is a note for the maker, not geometry.","applies":["chair"],"basis":"Alternating grain is what stops a curved panel splitting along one direction.","tags":["glossary","veneer","lay-up","shell"],"sources":["en-636"]},{"id":"section-leg-square-timber","kind":"dimension","tier":1,"title":"Chair/table leg section, solid hardwood (square)","summary":"A solid hardwood chair or table leg is 30-45 mm square, typically 36 mm; below 30 mm the mortises for the seat rails leave too little cheek, above 45 mm the leg reads as a table leg.","applies":["chair","stool","table"],"value":{"min":30,"max":45,"typical":36,"unit":"mm"},"basis":"Leg width must leave >= 2 x tenon-thickness of cheek each side of a 1/3-thickness rail mortise, at a seat height that puts the leg in bending.","sources":["joyce-furniture","wood-handbook"],"tags":["section","leg","timber"]},{"id":"section-stretcher","kind":"dimension","tier":1,"title":"Stretcher section (square or turned)","summary":"A stretcher between chair or stool legs is 20-25 mm square or round, typically 22 mm — big enough for a 7-8 mm tenon, small enough to stay out of the sitter's way.","applies":["chair","stool","table"],"value":{"min":20,"max":25,"typical":22,"unit":"mm"},"basis":"Sized by the tenon it must carry (1/3 of 22 mm = 7 mm) rather than by bending, because a stretcher works in tension and compression.","sources":["joyce-furniture","hayward-joints"],"tags":["section","stretcher"]},{"id":"section-tube-leg","kind":"dimension","tier":1,"title":"Light steel tube leg, outside diameter","summary":"A light chair tube leg or stretcher is 12-16 mm outside diameter, typically 14 mm, with a 1.0-1.5 mm wall — the section used for stacking-chair leg frames and understructures.","applies":["chair","stool"],"value":{"min":12,"max":16,"typical":14,"unit":"mm"},"basis":"EN 10305-3 precision welded tube is stocked in this range; below 12 mm the frame is not stiff enough to pass EN 1728 seat fatigue.","sources":["en-10305-3"],"tags":["section","tube","frame"]},{"id":"section-veneer-shell","kind":"dimension","tier":1,"title":"Moulded veneer (bent plywood) shell thickness","summary":"A moulded veneer seat/back shell finishes 8-10 mm, typically 9 mm: 7-9 plies of 1.0-1.5 mm veneer laid with alternating grain and pressed in one operation.","applies":["chair"],"value":{"min":8,"max":10,"typical":9,"unit":"mm"},"basis":"Thinner than 8 mm the shell flexes past its glue lines under EN 1728 seat load; thicker than 10 mm it will not take the compound curve without splitting.","sources":["en-636","wood-handbook"],"tags":["section","shell","veneer"]},{"id":"section-moulded-shell","kind":"dimension","tier":1,"title":"Moulded polyurethane foam shell thickness","summary":"A cold-cure moulded PU foam shell over a rigid substrate finishes 25-40 mm, typically 30 mm, measured normal to the substrate at the seat pan.","applies":["chair"],"value":{"min":25,"max":40,"typical":30,"unit":"mm"},"basis":"Below 25 mm the sitter feels the substrate; above 40 mm the shell loses the sharp moulded silhouette and the demould time climbs.","sources":["pu-handbook","astm-d3574"],"tags":["section","shell","foam"]},{"id":"section-seat-rail","kind":"dimension","tier":2,"title":"Seat rail section (thickness x depth)","summary":"A chair seat rail is 20-30 mm thick and 50-80 mm deep, typically 25 x 65 mm, with the depth in the vertical (load) direction.","applies":["chair"],"value":{"table":[{"member":"seat rail","thickness_mm":25,"depth_mm":65},{"member":"back rail","thickness_mm":22,"depth_mm":55},{"member":"front rail","thickness_mm":25,"depth_mm":70}],"unit":"mm"},"basis":"The rail spans between legs in bending under the sitter, so depth, not thickness, is the sizing dimension.","sources":["joyce-furniture"],"tags":["section","rail"]},{"id":"section-arm-rail","kind":"dimension","tier":2,"title":"Arm rail / continuous rail section","summary":"A continuous arm rail is 25-40 mm thick, typically 32 mm, and 45-70 mm deep where it crosses the back.","applies":["chair"],"value":{"min":25,"max":40,"typical":32,"unit":"mm"},"basis":"The rail is loaded by a sitter pushing up on the arm and must still take a tenon from each back leg.","sources":["joyce-furniture"],"tags":["section","arm"]},{"id":"section-splat","kind":"dimension","tier":2,"title":"Back splat thickness","summary":"A shaped back splat is 8-16 mm thick, typically 12 mm, and tenoned 8-10 mm into the crest rail and the back seat rail.","applies":["chair"],"value":{"min":8,"max":16,"typical":12,"unit":"mm"},"basis":"Thin enough to flex with the sitter's back, thick enough to carry a tenon at each end.","sources":["joyce-furniture"],"tags":["section","splat"]},{"id":"section-mount-plate","kind":"dimension","tier":2,"title":"Shell-to-frame mount plate thickness","summary":"The steel mount plate between a shell and a tube frame is 3-5 mm thick, typically 4 mm, with 4 holes on a 60-120 mm pattern.","applies":["chair"],"value":{"min":3,"max":5,"typical":4,"unit":"mm"},"basis":"Thick enough not to dish under a bolt torque, thin enough to disappear under the shell.","sources":["iso-4762"],"tags":["section","plate","frame"]},{"id":"section-laminate-ply","kind":"dimension","tier":2,"title":"Veneer ply thickness for a bent lamination","summary":"Plies for a bent lamination are 1.0-1.5 mm thick, typically 1.2 mm; a 24 mm finished leg is about 20 plies.","applies":["chair","stool"],"value":{"min":1,"max":1.5,"typical":1.2,"unit":"mm"},"basis":"Bending stress in a ply is proportional to its thickness over the bend radius; 1.5 mm is the practical limit at a 60 mm radius in beech.","sources":["wood-handbook","en-636"],"tags":["lamination","veneer"]},{"id":"section-spacer-diameter","kind":"dimension","tier":2,"title":"Spacer diameter between a panel and a frame","summary":"A turned spacer standing a seat or back panel off a frame is 12-25 mm in diameter, typically 18 mm, and 8-20 mm long.","applies":["chair"],"value":{"min":12,"max":25,"typical":18,"unit":"mm"},"basis":"The spacer must be wider than the screw washer it hides and narrower than the rail it stands on.","sources":["joyce-furniture"],"tags":["section","spacer"]},{"id":"section-seat-panel","kind":"dimension","tier":2,"title":"Solid or plywood seat panel thickness","summary":"A flat drop-in or screwed-on seat panel is 12-20 mm thick, typically 16 mm in plywood and 20 mm in solid timber.","applies":["chair","stool"],"value":{"min":12,"max":20,"typical":16,"unit":"mm"},"basis":"Sized to take a wood screw into its edge or face without splitting and to span the seat frame without sagging.","sources":["en-636","wood-handbook"],"tags":["section","seat","panel"]},{"id":"section-tube-wall","kind":"dimension","tier":2,"title":"Steel furniture tube wall thickness","summary":"Furniture tube wall is 1.0-2.0 mm, typically 1.5 mm, in EN 10305-3 precision welded tube; below 1.0 mm the tube collapses at the bend.","applies":["chair"],"value":{"min":1,"max":2,"typical":1.5,"unit":"mm"},"basis":"Wall/diameter ratio must stay above about 0.07 for a mandrel bend at 3 x diameter without ovalising.","sources":["en-10305-3"],"tags":["section","tube","wall"]},{"id":"section-tube-frame-heavy","kind":"dimension","tier":2,"title":"Heavy steel tube leg frame, outside diameter","summary":"A load-bearing chair leg frame or cantilever loop uses 19-25 mm outside-diameter tube, typically 22 mm, where section-tube-leg's 12-16 mm is only an understructure or stretcher.","applies":["chair"],"value":{"min":19,"max":25,"typical":22,"unit":"mm"},"basis":"A cantilever or four-leg frame takes the whole seat moment through the tube and needs the larger second moment of area.","sources":["en-10305-3","en-1728"],"tags":["section","tube","frame"]},{"id":"joint-leg-rail-mortise-tenon","kind":"rule","tier":1,"title":"Leg to rail: mortise and tenon","summary":"A rail meeting a leg is ALWAYS a mortise-and-tenon: tenon 1/3 of the rail thickness, 2/3 of the leg width long, 0.2 mm clearance on the cheeks. Never butt-and-screw a seat rail to a leg.","applies":["chair","table","stool"],"basis":"The seat rail carries the racking moment; only a tenon puts long-grain glue area on both sides of that moment.","sources":["hayward-joints","joyce-furniture"],"tags":["joint-selection","tenon"],"value":{"typical":0.2,"unit":"mm","note":"cheek clearance per face"}},{"id":"joint-shell-to-frame-plate","kind":"rule","tier":1,"title":"Shell to frame: screws through a mount plate","summary":"A moulded shell NEVER bolts straight to a tube: braze or weld a 3-5 mm mount plate to the frame and bolt the shell to the plate, 4 x M6 on a 60-120 mm pattern with washers under the shell.","applies":["chair"],"basis":"A bolt head bearing on 9 mm of veneer crushes it; the plate spreads the load and gives the frame a flat datum.","sources":["iso-4762","en-1728"],"tags":["joint-selection","shell","frame"],"value":{"typical":6,"unit":"mm","note":"M6 through a 4 mm plate"}},{"id":"joint-bent-leg-to-seat-screws","kind":"rule","tier":1,"title":"Bent laminate leg to seat: screws, not a tenon","summary":"A bent laminate leg meets a seat panel on its flat glued end and is fixed with 2-4 wood screws up through the seat into the leg end grain, pilot 4.0-4.5 mm, 25-40 mm long. Do not tenon a laminate leg.","applies":["stool","chair"],"basis":"The leg's glue lines run along the leg, so a mortise across them would sever every ply; a screw up the leg axis loads them in shear.","sources":["din-7997","wood-handbook"],"tags":["joint-selection","screws","lamination"],"value":{"min":2,"max":4,"unit":"count","note":"screws per leg"}},{"id":"tenon-one-third-rule","kind":"rule","tier":2,"title":"Tenon thickness: one third of the stock","summary":"Tenon thickness = 1/3 of the entering member's thickness, rounded to the nearest 1 mm (a 24 mm rail gives an 8 mm tenon). Equal cheeks each side is what the rule buys.","applies":["chair","table"],"basis":"Equal thirds keep both mortise cheeks and the tenon at the same strength, so no one part fails first.","sources":["hayward-joints"],"tags":["tenon","proportion"],"value":{"typical":0.333,"unit":"ratio"}},{"id":"tenon-length-rule","kind":"rule","tier":2,"title":"Tenon length: two thirds into the receiving member","summary":"Tenon length = 2/3 of the receiving member's width, up to 35 mm for a blind tenon (a 36 mm leg gives a 24 mm tenon). A through-tenon runs the full width plus 2-5 mm proud.","applies":["chair","table"],"basis":"Two thirds leaves a mortise wall thick enough not to blow out and gives most of the available glue area.","sources":["hayward-joints"],"tags":["tenon","proportion"],"value":{"typical":0.667,"unit":"ratio"}},{"id":"joint-stretcher-to-leg","kind":"rule","tier":2,"title":"Stretcher to leg: round tenon or dowel","summary":"A 20-25 mm stretcher enters a leg as a round tenon 10-14 mm in diameter, 15-20 mm deep — a cad_drill_hole mortise, not a rectangular one.","applies":["chair","stool","table"],"basis":"A round stretcher's tenon is turned in the same lathe setting, so a drilled socket is the matching operation.","sources":["joyce-furniture"],"tags":["joint-selection","stretcher"],"value":{"min":10,"max":14,"typical":12,"unit":"mm"}},{"id":"joint-splat-to-rail","kind":"rule","tier":2,"title":"Splat to rails: stub tenon both ends","summary":"A splat is tenoned 8-10 mm into both the crest rail and the back seat rail, tenon thickness 1/3 of the splat (a 12 mm splat gives a 4 mm tenon).","applies":["chair"],"basis":"The splat is loaded by the sitter's back in bending at both ends, so both ends need a shoulder.","sources":["hayward-joints"],"tags":["joint-selection","splat"],"value":{"min":8,"max":10,"unit":"mm"}},{"id":"joint-panel-screw-slot","kind":"rule","tier":2,"title":"Solid panel to frame: screws in slots","summary":"Screw a solid-timber top or seat panel to its rails through 8-10 mm cross-grain slots, not round holes: allow 2-3 mm of movement per 300 mm of panel width.","applies":["table","chair","casegoods"],"basis":"Solid wood moves 2-3 mm per 300 mm across the grain over a season; a tight screw splits the panel.","sources":["wood-handbook"],"tags":["joint-selection","movement"],"value":{"min":2,"max":3,"unit":"mm","note":"per 300 mm of width"}},{"id":"joint-shell-to-star-base","kind":"rule","tier":2,"title":"Shell to swivel base: 4 bolts through a hub plate","summary":"A shell on a swivel base bolts to the tilt/hub plate with 4 x M8 on a 100-160 mm square pattern, through a 4-6 mm plate, with the column concentric to the base hub.","applies":["chair","office chair"],"basis":"Four bolts on a wide pattern carry the tilt moment; fewer or closer and the plate works loose under EN 1728 cycling.","sources":["iso-4762","en-1728"],"tags":["joint-selection","base","shell"],"value":{"typical":8,"unit":"mm","note":"M8"}},{"id":"joint-selection-table","kind":"rule","tier":2,"title":"Joint selection: which joint for which pair","summary":"One table: leg-rail = mortise-tenon; leg-stretcher = round tenon; splat-rail = stub tenon; shell-frame = screws through a mount plate; bent leg-seat = screws; panel-frame = slotted screws; shell-base = 4 bolts; crossing flat members = half-lap.","applies":["chair","stool","table"],"basis":"Every pair in the table is chosen by which member carries the moment and which way the glue lines run.","sources":["hayward-joints","joyce-furniture"],"tags":["joint-selection","table"],"value":{"table":[{"pairing":"leg + rail","joint":"mortise-tenon","today":"cad_box tenon + cad_boolean_subtract mortise"},{"pairing":"leg + stretcher","joint":"round tenon","today":"cad_revolve_profile tenon + cad_drill_hole"},{"pairing":"splat + rail","joint":"stub tenon","today":"cad_extrude_profile + cad_boolean_subtract"},{"pairing":"shell + tube frame","joint":"screws through a mount plate","today":"cad_box plate + cad_hole_pattern"},{"pairing":"bent laminate leg + seat","joint":"wood screws","today":"cad_hole_pattern pilot holes"},{"pairing":"solid panel + frame","joint":"slotted screws","today":"cad_extrude_profile slot"},{"pairing":"shell + swivel base","joint":"4 bolts through a hub plate","today":"cad_hole_pattern"},{"pairing":"crossing flat members","joint":"half-lap","today":"two cad_boolean_subtract pockets"}]}},{"id":"lamination-radius-rule","kind":"rule","tier":2,"title":"Minimum bend radius for a lamination","summary":"Minimum inside bend radius >= 40 x ply thickness for beech or birch veneer: 1.2 mm plies bend to about a 50 mm radius, 1.5 mm plies to 60 mm. Tighter needs steaming or thinner plies.","applies":["chair","stool"],"basis":"Bending strain in the outer fibre is ply thickness / (2 x radius); 40:1 keeps it under the elastic limit of beech veneer.","sources":["wood-handbook"],"tags":["lamination","bend"],"value":{"typical":40,"unit":"ratio","note":"radius / ply thickness"}},{"id":"joint-clearance-rule","kind":"rule","tier":2,"title":"Clearance in a modelled joint","summary":"Model a glued wood joint with 0.1-0.3 mm clearance per mated face (0.2 mm default) and a bolted metal joint with 0.5-1.0 mm hole clearance, so cad_assembly_fit reports a fit instead of an interference.","applies":["chair","table"],"basis":"A zero-clearance CAD joint reads as interference; a glue line is 0.1-0.2 mm of cured adhesive in reality.","sources":["titebond-tds","iso-4762"],"tags":["clearance","assembly"],"value":{"min":0.1,"max":0.3,"typical":0.2,"unit":"mm"}},{"id":"fastener-wood-screw-leg-seat","kind":"fastener","tier":2,"title":"Wood screw, leg to seat (DIN 7997 countersunk)","summary":"A 5.0 x 40 mm countersunk wood screw fixing a leg to a seat panel wants a 3.5 mm pilot in the leg end grain, a 5.2 mm clearance hole in the seat and a 10 mm countersink.","applies":["stool","chair"],"value":{"table":[{"screw":"5.0 x 40","pilot_mm":3.5,"clearance_mm":5.2,"csk_mm":10},{"screw":"4.5 x 35","pilot_mm":3,"clearance_mm":4.7,"csk_mm":9},{"screw":"4.0 x 30","pilot_mm":2.8,"clearance_mm":4.2,"csk_mm":8}],"unit":"mm"},"basis":"Wood Handbook ch. 8: lead hole 70% of root diameter in softwood, 90% in hardwood; clearance hole = shank diameter + 0.2 mm.","sources":["din-7997","wood-handbook"],"tags":["fastener","screw","seat"]},{"id":"fastener-m6-shell-plate","kind":"fastener","tier":2,"title":"M6 bolt, shell to mount plate","summary":"An M6 socket-head bolt through a shell into a mount plate wants a 6.6 mm clearance hole in the shell, a 12 mm washer under the head and 8-12 mm of thread engagement in the plate.","applies":["chair"],"value":{"typical":6.6,"unit":"mm","note":"clearance hole in the shell"},"basis":"ISO 4762 medium-fit clearance for M6 is 6.6 mm; a 12 mm washer keeps bearing stress on 9 mm veneer under 10 MPa.","sources":["iso-4762"],"tags":["fastener","bolt","shell"]},{"id":"fastener-dowel-pin-8","kind":"fastener","tier":2,"title":"Dowel, 8 mm — locating a butt joint","summary":"An 8 mm fluted wood dowel enters 15-20 mm each side with a 8.0 mm hole (H8) and 0.1-0.2 mm glue clearance; use 2 or more dowels at 32 mm centres, never one.","applies":["chair","casegoods"],"value":{"typical":8,"unit":"mm"},"basis":"One dowel is a hinge; two fix rotation. 32 mm centres match line-boring practice.","sources":["iso-8734","wood-handbook"],"tags":["fastener","dowel"]},{"id":"material-steam-bent-beech","kind":"material","tier":2,"title":"Steam-bent beech (Fagus sylvatica)","summary":"Beech at 0.72 g/cm3, ~14 GPa MOE, steam-bent at 100 C and 25-30% moisture to an inside radius of about 3 x the section thickness — the classic bentwood leg and back-hoop material.","applies":["chair","stool"],"value":{"table":[{"property":"density","value":0.72,"unit":"g/cm3"},{"property":"MOE","value":14,"unit":"GPa"},{"property":"min bend radius","value":3,"unit":"ratio"}]},"basis":"Wood Handbook ch. 19: beech and ash are the temperate species with the highest steam-bending ratio.","sources":["wood-handbook"],"tags":["material","beech","bent"]},{"id":"material-birch-laminate","kind":"material","tier":2,"title":"Birch veneer laminate (bent lamination and moulded shells)","summary":"Birch laminate at 0.68 g/cm3 and 11-13 GPa in the face-grain direction, from 1.2-1.5 mm plies; the standard material for a moulded 8-10 mm shell or a laminated leg.","applies":["chair","stool"],"value":{"table":[{"property":"density","value":0.68,"unit":"g/cm3"},{"property":"MOE (face grain)","value":12,"unit":"GPa"},{"property":"ply thickness","value":1.35,"unit":"mm"}]},"basis":"EN 636 plywood classes plus Wood Handbook ch. 19 laminate properties.","sources":["en-636","wood-handbook"],"tags":["material","birch","laminate"]},{"id":"material-moulded-pu-foam","kind":"material","tier":2,"title":"Cold-cure moulded polyurethane foam shell","summary":"Moulded flexible PU seat foam at 45-60 kg/m3 core density with a 3-6 mm self-skin, 25-40 mm thick over the substrate, demoulded in 4-8 minutes.","applies":["chair"],"value":{"table":[{"property":"core density","value":50,"unit":"kg/m3"},{"property":"skin thickness","value":4,"unit":"mm"},{"property":"shell thickness","value":30,"unit":"mm"}]},"basis":"Cold-cure moulded foam practice; density measured to ASTM D3574 Test A.","sources":["pu-handbook","astm-d3574"],"tags":["material","foam","shell"]},{"id":"material-paper-cord","kind":"material","tier":2,"title":"Laid paper cord (Danish cord) seat","summary":"Three-ply laid paper cord at 3.0-3.2 mm diameter, about 12 m per 100 mm of seat width in a plain weave, tensioned over the seat rails and held by L-nails at 25 mm pitch.","applies":["chair"],"value":{"table":[{"property":"cord diameter","value":3.1,"unit":"mm"},{"property":"L-nail pitch","value":25,"unit":"mm"}]},"basis":"Supplier technical data for Danish laid paper cord; the L-nail pitch is what stops the weave creeping.","sources":["franks-cord"],"tags":["material","cord","seat"]},{"id":"test-seat-static-load","kind":"test","tier":2,"title":"EN 1728 seat static load","summary":"1300 N applied vertically to the seat, 10 times. Geometry: the seat panel must span its frame without the rails deflecting into the legs, and every seat-rail tenon must carry the moment.","applies":["chair","stool"],"basis":"EN 1728 clause 6.4 seat static load for domestic seating; the failure mode is a seat-rail tenon shearing.","sources":["en-1728","en-12520"],"tags":["test","seat","load"],"value":{"typical":1300,"unit":"N"}},{"id":"test-back-static-load","kind":"test","tier":2,"title":"EN 1728 backrest static load","summary":"560 N applied horizontally to the top of the backrest, 10 times, with the seat loaded. Geometry: the back leg-to-crest joint and the splat tenons take the whole moment.","applies":["chair"],"basis":"EN 1728 clause 6.5; this is the load that pulls a back-leg mortise open.","sources":["en-1728","en-12520"],"tags":["test","back","load"],"value":{"typical":560,"unit":"N"}},{"id":"test-leg-forward-static","kind":"test","tier":2,"title":"EN 1728 leg forward static load","summary":"500 N applied horizontally at seat level with the chair blocked, 10 times. Geometry: this is the racking case a stretcher or a corner block exists to carry.","applies":["chair","stool"],"basis":"EN 1728 clause 6.15 leg forward static load; a chair with no stretcher and no corner block fails here first.","sources":["en-1728","en-12520"],"tags":["test","racking","frame"],"value":{"typical":500,"unit":"N"}},{"id":"standard-en-12520","kind":"standard","tier":2,"title":"EN 12520 — domestic seating strength, durability and safety","summary":"EN 12520:2015 sets the requirement levels a domestic chair must meet and points at the EN 1728 test methods and EN 1022 stability; the geometric clauses are edge radii >= 2 mm and no accessible shear gap of 8-25 mm.","applies":["chair","stool"],"basis":"The umbrella requirement standard a domestic chair is certified against in the EU.","sources":["en-12520","en-1728","en-1022"],"tags":["standard","seating"]},{"id":"joint-recipe-mortise-tenon-today","kind":"recipe","tier":2,"title":"Recipe: a mortise-and-tenon between a leg and a rail with today's ops","summary":"Cut a real mortise-and-tenon with the ops this build ships: a cad_box mortise subtracted from the leg, a cad_box tenon unioned to the rail, 0.2 mm clearance per face. cad_joint ships (CADSF-1370).","applies":["chair","table"],"basis":"Implements joint-leg-rail-mortise-tenon and tenon-one-third-rule as buildable calls; cad_joint (CADSF-1370) now offers a one-call alternative.","sources":["hayward-joints"],"tags":["recipe","joinery","tenon","shipped"],"recipe":{"prompt":"Cut a mortise-and-tenon joint between a 36mm square leg and a 25x65mm rail","steps":[{"tool":"cad_box","args":{"dx":36,"dy":36,"dz":420},"note":"the leg, section-leg-square-timber typical 36mm"},{"tool":"cad_box","args":{"dx":8.4,"dy":24.2,"dz":45.4,"origin":[13.8,12,340]},"note":"mortise cutter: 8mm tenon + 0.2mm per face, 24mm deep (2/3 of 36), 45mm tall"},{"tool":"cad_boolean_subtract","args":{"of":"$0","tool":"$1"},"note":"the mortise in the leg"},{"tool":"cad_box","args":{"dx":25,"dy":300,"dz":65,"origin":[5.5,36,330]},"note":"the rail, section-seat-rail 25x65"},{"tool":"cad_box","args":{"dx":8,"dy":24,"dz":45,"origin":[14,12,340]},"note":"the tenon: 1/3 of 25mm rounded to 8mm, 24mm long, shoulders all round"},{"tool":"cad_boolean_union","args":{"of":"$3","tool":"$4"},"note":"tenon on the rail; it now enters the mortise with 0.2mm per face"}],"expect":{"volume":496140,"faceCount":11,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"joint-recipe-screwed-today","kind":"recipe","tier":2,"title":"Recipe: a screwed shell-to-plate joint with today's ops","summary":"Bolt a shell to a frame mount plate with the ops this build ships: a cad_box plate, cad_hole_pattern for the 4 x M6 pattern, cad_drill_hole clearance holes in the shell. cad_fastener ships (CADSF-1371).","applies":["chair"],"basis":"Implements joint-shell-to-frame-plate and fastener-m6-shell-plate as buildable calls; cad_fastener (CADSF-1371) now offers a one-call alternative.","sources":["iso-4762"],"tags":["recipe","joinery","fastener","shipped"],"recipe":{"prompt":"Make a 4mm mount plate with a 4 x M6 pattern and put matching clearance holes in a 9mm shell panel","steps":[{"tool":"cad_box","args":{"dx":120,"dy":100,"dz":4},"note":"section-mount-plate typical 4mm"},{"tool":"cad_hole_pattern","args":{"of":"$0","type":"drill","diameter":5,"depth":4,"pattern":{"kind":"grid","origin":[20,20],"dx":80,"dy":60,"nx":2,"ny":2}},"note":"4 x M6 tapping holes on an 80 x 60mm pattern"},{"tool":"cad_box","args":{"dx":400,"dy":380,"dz":9,"origin":[-140,-140,4]},"note":"the 9mm shell panel, section-veneer-shell typical"},{"tool":"cad_hole_pattern","args":{"of":"$2","type":"drill","diameter":6.6,"depth":9,"pattern":{"kind":"grid","origin":[20,20],"dx":80,"dy":60,"nx":2,"ny":2}},"note":"6.6mm clearance, fastener-m6-shell-plate"}],"expect":{"volume":1366768.37,"faceCount":14,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"recipe-bent-laminate-leg-stool","kind":"recipe","tier":2,"title":"Recipe: bent-laminate legs screwed under a round seat","summary":"Construction type 1: three bent-laminate legs, each swept as one solid along its bend path, screwed up into a round seat panel through a circular pilot-hole pattern.","applies":["stool","chair"],"basis":"Combines glossary-lamination, section-leg-square-timber, joint-bent-leg-to-seat-screws and fastener-wood-screw-leg-seat into one buildable frame.","sources":["wood-handbook","din-7997"],"tags":["recipe","construction-type","lamination","stool"],"recipe":{"prompt":"Model a three-legged stool: bent laminate legs swept along their bend, a round seat panel, legs screwed up into the seat","steps":[{"tool":"cad_sweep_profile","args":{"section":{"start":[-20,-12],"segments":[{"to":[20,-12]},{"to":[20,12]},{"to":[-20,12]},{"to":[-20,-12]}]},"path":{"points":[[0,0,0],[0,0,380],[0,60,420]],"fillets":60}},"note":"one bent laminate leg: 40x24 section, bend radius 60mm (>= 40 x 1.2mm ply, lamination-radius-rule)"},{"tool":"cad_pattern_copies","args":{"of":"$0","type":"circular","center":[0,0,0],"count":3,"totalAngle":6.283185},"note":"three legs at 120 degrees — separate parts, not a union (CADSF-1376)"},{"tool":"cad_extrude_profile","args":{"depth":18,"outer":{"circle":{"cx":0,"cy":0,"r":175}}},"note":"the seat panel, section-seat-panel typical 16-18mm, native circle not an N-gon"},{"tool":"cad_hole_pattern","args":{"of":"$2","type":"drill","diameter":4.2,"depth":12,"pattern":{"kind":"circular","center":[0,0],"radius":140,"count":3}},"note":"one 4.2mm clearance hole per leg, fastener-wood-screw-leg-seat"},{"tool":"cad_transform","args":{"of":"$3","translate":[0,0,420]},"note":"seat up onto the leg tops"}],"expect":{"volume":1731286.71,"faceCount":16,"watertight":true,"note":"measured 2026-09-19: CADSF-1561 (cc1f38cb, 2026-09-15) gave a BLIND hole a 118° DRILL POINT: the flat floor became a cone on the three Ø4.2x12 seat holes: +3 faces. The +0.160% volume is NOT the drill points (three cones are 17.5 mm^3) — it is the chord deficit of the three tessellated swept legs, and it is inside the 0.5% band"}}},{"id":"recipe-moulded-shell-on-tube-frame","kind":"recipe","tier":2,"title":"Recipe: moulded veneer shell on a tube leg frame with a mount plate","summary":"Construction type 2: a 9 mm moulded shell swept as a thin section along its side profile, four hollow tube legs, and a 4 mm mount plate drilled 4 x M6 that the shell bolts to.","applies":["chair"],"basis":"Combines section-veneer-shell, section-tube-leg, section-mount-plate and joint-shell-to-frame-plate.","sources":["en-636","en-10305-3","iso-4762"],"tags":["recipe","construction-type","shell","tube"],"recipe":{"prompt":"Model a moulded plywood shell chair: one-piece seat-and-back shell, four tubular steel legs, shell bolted to a mount plate on the frame","steps":[{"tool":"cad_sweep_profile","args":{"section":{"start":[-4.5,-200],"segments":[{"to":[4.5,-200]},{"to":[4.5,200]},{"to":[-4.5,200]},{"to":[-4.5,-200]}]},"path":{"points":[[0,-190,0],[0,120,0],[0,200,70],[0,230,300]],"fillets":[90,70]}},"note":"the shell: 400mm wide x 9mm thick section swept through seat and back"},{"tool":"cad_tube_sweep","args":{"section":{"start":[11,0],"segments":[{"to":[-11,0],"center":[0,0],"ccw":true},{"to":[11,0],"center":[0,0],"ccw":true}]},"holes":[{"start":[9.5,0],"segments":[{"to":[-9.5,0],"center":[0,0],"ccw":false},{"to":[9.5,0],"center":[0,0],"ccw":false}]}],"path":{"points":[[0,0,0],[0,0,380],[0,55,410]]}},"note":"one 22mm OD x 1.5mm wall tube leg, section-tube-frame-heavy; the hole loop is wound CW so it is subtracted"},{"tool":"cad_transform","args":{"of":"$1","translate":[0,340,0],"copy":true},"note":"the second leg as a copy — cad_pattern_copies and cad_mirror do not accept a cad_tube_sweep body on this build; repeat cad_transform for the rest"},{"tool":"cad_box","args":{"dx":120,"dy":100,"dz":4,"origin":[-60,-50,410]},"note":"the mount plate, section-mount-plate typical 4mm"},{"tool":"cad_hole_pattern","args":{"of":"$3","type":"drill","diameter":5,"depth":4,"pattern":{"kind":"grid","origin":[-40,-30],"dx":80,"dy":60,"nx":2,"ny":2}},"note":"4 x M6 tapping holes, joint-shell-to-frame-plate"}],"expect":{"volume":47685.84,"faceCount":14,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"recipe-turned-leg-frame-through-tenon","kind":"recipe","tier":2,"title":"Recipe: turned legs through-tenoned into a seat frame","summary":"Construction type 3: legs turned as bodies of revolution with their round through-tenons turned in the same profile, and a 22 mm seat frame ring drilled to receive them.","applies":["chair","stool"],"basis":"Combines glossary-turned-leg, glossary-seat-frame, joint-stretcher-to-leg and glossary-wedged-through-tenon.","sources":["joyce-furniture","hayward-joints"],"tags":["recipe","construction-type","turned","tenon"],"recipe":{"prompt":"Model a turned-leg chair frame: tapered turned legs, a seat frame ring, legs through-tenoned into the frame","steps":[{"tool":"cad_revolve_profile","args":{"profile":[[0,0],[18,0],[18,40],[14,200],[16,380],[13,380],[13,440],[0,440]]},"note":"leg and its 26mm round through-tenon turned in ONE body of revolution — the tenon is a step in the lathe profile, not a unioned cylinder"},{"tool":"cad_extrude_profile","args":{"depth":22,"outer":{"rect":{"x":0,"y":0,"w":440,"h":400,"cornerRadius":40}},"holes":[{"rect":{"x":0,"y":0,"w":360,"h":320,"cornerRadius":30}}]},"note":"the seat frame ring, 40mm rails x 22mm"},{"tool":"cad_drill_hole","args":{"of":"$1","center":[180,160],"diameter":26.4,"through":true},"note":"the through-mortise: 26mm round tenon + 0.2mm per face, joint-clearance-rule"}],"expect":{"volume":1312405.74,"faceCount":1065,"watertight":true,"note":"measured 2026-09-19: faceCount was ABSENT from this pin, so every gate skipped the one number a representation change can move (CADSF-1630). Measured 1065 — a turned leg is a tessellated revolve, so this is a tessellation DENSITY, not a topology fact. Volume agrees to 0.0005%"}}},{"id":"recipe-tenoned-rail-frame-with-splat","kind":"recipe","tier":2,"title":"Recipe: legs, tenoned rails and stretchers carrying a back splat","summary":"Construction type 4: 36 mm square legs, a 25 x 65 mm seat rail and a 22 mm stretcher between them, and a 12 mm shaped back splat stub-tenoned between the crest and the back rail.","applies":["chair"],"basis":"Combines section-leg-square-timber, section-seat-rail, section-stretcher, section-splat and joint-splat-to-rail.","sources":["joyce-furniture","hayward-joints"],"tags":["recipe","construction-type","frame","splat"],"recipe":{"prompt":"Model a wooden chair frame: square legs, seat rails and stretchers tenoned in, a shaped back splat between the crest rail and the back rail","steps":[{"tool":"cad_box","args":{"dx":36,"dy":36,"dz":440},"note":"a back leg, section-leg-square-timber typical 36mm"},{"tool":"cad_pattern_copies","args":{"of":"$0","type":"linear","step":[420,0,0],"count":2},"note":"the pair of back legs"},{"tool":"cad_box","args":{"dx":384,"dy":25,"dz":65,"origin":[36,5.5,340]},"note":"the seat rail between them, section-seat-rail 25 x 65"},{"tool":"cad_box","args":{"dx":384,"dy":22,"dz":22,"origin":[36,7,120]},"note":"the stretcher, section-stretcher typical 22mm"},{"tool":"cad_extrude_profile","args":{"depth":12,"outer":{"rect":{"x":0,"y":0,"w":180,"h":260,"cornerRadius":70}}},"note":"the shaped back splat, section-splat typical 12mm"},{"tool":"cad_transform","args":{"of":"$4","translate":[228,18,470]},"note":"the splat standing between the back rail and the crest rail"}],"expect":{"volume":511125.65,"faceCount":10,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"recipe-closed-loop-laminated-side-frames","kind":"recipe","tier":2,"title":"Recipe: closed-loop laminated side frames carrying a scrolled sheet","summary":"Construction type 5: two closed-loop laminated side frames, each a 24 mm extruded ring, carrying one scrolled 10 mm sheet swept through seat and back with rolled ends.","applies":["chair"],"basis":"Combines glossary-lamination, glossary-scrolled-sheet and lamination-radius-rule.","sources":["wood-handbook","en-636"],"tags":["recipe","construction-type","lamination","sheet"],"recipe":{"prompt":"Model a chair built from two closed laminated side loops and one continuous scrolled plywood sheet","steps":[{"tool":"cad_extrude_profile","args":{"depth":24,"outer":{"rect":{"x":0,"y":0,"w":640,"h":700,"cornerRadius":140}},"holes":[{"rect":{"x":0,"y":0,"w":560,"h":620,"cornerRadius":100}}]},"note":"one closed-loop laminated side frame, 40mm band x 24mm"},{"tool":"cad_transform","args":{"of":"$0","translate":[0,0,420],"copy":true},"note":"the second side frame — a copy, so both stay separate parts"},{"tool":"cad_sweep_profile","args":{"section":{"start":[-5,-210],"segments":[{"to":[5,-210]},{"to":[5,210]},{"to":[-5,210]},{"to":[-5,-210]}]},"path":{"points":[[0,-260,0],[0,140,0],[0,215,80],[0,240,300]],"fillets":[110,80]}},"note":"the scrolled sheet: 10mm section swept through seat and back, scrolls as path fillets"}],"expect":{"volume":3040304.67,"faceCount":22,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"recipe-carried-panels-on-spacers","kind":"recipe","tier":2,"title":"Recipe: seat and back panels carried off a frame on spacers","summary":"Construction type 6: a solid frame rail, four 18 mm turned spacers standing a 16 mm seat panel off it, and the clearance holes the through-screws pass.","applies":["chair"],"basis":"Combines glossary-spacer, section-spacer-diameter, section-seat-panel and joint-panel-screw-slot.","sources":["joyce-furniture","din-7997"],"tags":["recipe","construction-type","spacer","panel"],"recipe":{"prompt":"Model a chair whose seat and back panels are carried off the frame on spacers, with a shadow gap","steps":[{"tool":"cad_box","args":{"dx":420,"dy":60,"dz":28},"note":"the frame rail the panel is carried on"},{"tool":"cad_cylinder","args":{"r":9,"h":16},"note":"one spacer, section-spacer-diameter typical 18mm diameter"},{"tool":"cad_pattern_copies","args":{"of":"$1","type":"linear","step":[340,0,0],"count":2},"note":"a pair of spacers along the rail"},{"tool":"cad_box","args":{"dx":420,"dy":400,"dz":16,"origin":[0,-170,44]},"note":"the seat panel, section-seat-panel typical 16mm, standing 16mm clear of the rail"},{"tool":"cad_hole_pattern","args":{"of":"$3","type":"drill","diameter":5.2,"depth":16,"pattern":{"kind":"grid","origin":[40,10],"dx":340,"dy":30,"nx":2,"ny":1}},"note":"5.2mm clearance holes through the panel into the spacers, fastener-wood-screw-leg-seat"}],"expect":{"volume":2687320.41,"faceCount":10,"watertight":true,"note":"measured 2026-09-19: faceCount was ABSENT from this pin (CADSF-1630). Measured 10 — an analytic all-planar body. Volume agrees to 4e-7%"}}},{"id":"recipe-two-shells-on-laminated-legs","kind":"recipe","tier":2,"title":"Recipe: separate seat and back shells on laminated legs","summary":"Construction type 7: two separate moulded shells (seat and back), each a 9 mm section swept along its own curve, three laminated legs, and the plate that joins back shell to seat shell.","applies":["chair"],"basis":"Combines section-veneer-shell, glossary-lamination, glossary-mount-plate and joint-shell-to-frame-plate.","sources":["en-636","iso-4762"],"tags":["recipe","construction-type","shell","lamination"],"recipe":{"prompt":"Model a chair with a separate seat shell and back shell on three laminated legs, joined by plates","steps":[{"tool":"cad_sweep_profile","args":{"section":{"start":[-4.5,-210],"segments":[{"to":[4.5,-210]},{"to":[4.5,210]},{"to":[-4.5,210]},{"to":[-4.5,-210]}]},"path":{"points":[[0,-200,0],[0,140,0],[0,200,45]],"fillets":120}},"note":"the seat shell, section-veneer-shell typical 9mm"},{"tool":"cad_sweep_profile","args":{"section":{"start":[-4.5,-190],"segments":[{"to":[4.5,-190]},{"to":[4.5,190]},{"to":[-4.5,190]},{"to":[-4.5,-190]}]},"path":{"points":[[0,220,180],[0,250,330],[0,215,460]],"fillets":200}},"note":"the back shell, a second moulded part"},{"tool":"cad_sweep_profile","args":{"section":{"start":[-19,-11],"segments":[{"to":[19,-11]},{"to":[19,11]},{"to":[-19,11]},{"to":[-19,-11]}]},"path":{"points":[[0,0,0],[0,0,360],[0,70,405]],"fillets":55}},"note":"one laminated leg"},{"tool":"cad_pattern_copies","args":{"of":"$2","type":"circular","center":[0,0,0],"count":3,"totalAngle":6.283185},"note":"three legs"},{"tool":"cad_box","args":{"dx":90,"dy":60,"dz":4,"origin":[-45,190,170]},"note":"the plate joining the back shell to the seat shell, section-mount-plate"},{"tool":"cad_hole_pattern","args":{"of":"$4","type":"drill","diameter":6.6,"depth":4,"pattern":{"kind":"grid","origin":[-25,205],"dx":50,"dy":30,"nx":2,"ny":2}},"note":"4 x M6 clearance holes, fastener-m6-shell-plate"}],"expect":{"volume":21052.61,"faceCount":14,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"recipe-lofted-body-with-dowelled-legs","kind":"recipe","tier":2,"title":"Recipe: a sculptural lofted body on dowelled turned legs","summary":"Construction type 8: a sculptural body lofted through three section polygons, turned legs, and the 10 mm dowel socket that pins each leg into the body.","applies":["chair"],"basis":"Combines cad_loft_profiles for a carved body with glossary-turned-leg, glossary-dowel-joint and fastener-dowel-pin-8.","sources":["joyce-furniture","iso-8734"],"tags":["recipe","construction-type","loft","dowel"],"recipe":{"prompt":"Model a sculptural chair body lofted from sections, standing on turned legs pinned in with dowels","steps":[{"tool":"cad_loft_profiles","args":{"profiles":[{"pts":[[180,0],[166.3,57.4],[127.28,106.07],[68.88,138.58],[0,150],[-68.88,138.58],[-127.28,106.07],[-166.3,57.4],[-180,0],[-166.3,-57.4],[-127.28,-106.07],[-68.88,-138.58],[0,-150],[68.88,-138.58],[127.28,-106.07],[166.3,-57.4]],"z":0},{"pts":[[210,0],[194.01,65.06],[148.49,120.21],[80.36,157.06],[0,170],[-80.36,157.06],[-148.49,120.21],[-194.01,65.06],[-210,0],[-194.01,-65.06],[-148.49,-120.21],[-80.36,-157.06],[0,-170],[80.36,-157.06],[148.49,-120.21],[194.01,-65.06]],"z":60},{"pts":[[190,0],[175.54,57.4],[134.35,106.07],[72.71,138.58],[0,150],[-72.71,138.58],[-134.35,106.07],[-175.54,57.4],[-190,0],[-175.54,-57.4],[-134.35,-106.07],[-72.71,-138.58],[0,-150],[72.71,-138.58],[134.35,-106.07],[175.54,-57.4]],"z":130}]},"note":"the sculptural body: three sections lofted, a cubic loft"},{"tool":"cad_revolve_profile","args":{"profile":[[0,0],[16,0],[16,30],[13,180],[15,330],[0,350]]},"note":"a turned leg, glossary-turned-leg"},{"tool":"cad_drill_hole","args":{"of":"$1","center":[0,0],"diameter":10.2,"depth":20},"note":"the dowel socket in the leg top: 10mm dowel + 0.2mm, fastener-dowel-pin-8"},{"tool":"cad_cylinder","args":{"r":5,"h":36},"note":"the dowel itself, entering 18mm each side"}],"expect":{"volume":2827.43,"faceCount":4,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"recipe-foam-shell-over-substrate","kind":"recipe","tier":2,"title":"Recipe: a moulded foam shell over a rigid substrate","summary":"Construction type 9: the rigid substrate lofted as a solid, the finished outer surface lofted as a second solid, and the 25-40 mm foam layer produced by subtracting one from the other.","applies":["chair"],"basis":"Combines section-moulded-shell and material-moulded-pu-foam; the foam is modelled as the difference between the finished surface and the substrate.","sources":["pu-handbook","astm-d3574"],"tags":["recipe","construction-type","foam","loft"],"recipe":{"prompt":"Model a moulded foam chair shell over its rigid substrate: substrate, finished outer form, and the foam layer between them","steps":[{"tool":"cad_loft_profiles","args":{"profiles":[{"pts":[[210,0],[181.87,95],[105,164.54],[0,190],[-105,164.54],[-181.87,95],[-210,0],[-181.87,-95],[-105,-164.54],[0,-190],[105,-164.54],[181.87,-95]],"z":0},{"pts":[[200,0],[173.21,90],[100,155.88],[0,180],[-100,155.88],[-173.21,90],[-200,0],[-173.21,-90],[-100,-155.88],[0,-180],[100,-155.88],[173.21,-90]],"z":260}]},"note":"the finished outer form of the shell, lofted from two sections"},{"tool":"cad_loft_profiles","args":{"profiles":[{"pts":[[180,0],[155.88,80],[90,138.56],[0,160],[-90,138.56],[-155.88,80],[-180,0],[-155.88,-80],[-90,-138.56],[0,-160],[90,-138.56],[155.88,-80]],"z":30},{"pts":[[170,0],[147.22,75],[85,129.9],[0,150],[-85,129.9],[-147.22,75],[-170,0],[-147.22,-75],[-85,-129.9],[0,-150],[85,-129.9],[147.22,-75]],"z":230}]},"note":"the rigid substrate inside it, offset ~30mm all round"},{"tool":"cad_boolean_subtract","args":{"of":"$0","tool":"$1"},"note":"the foam layer between the two surfaces, section-moulded-shell 25-40mm of PU"}],"expect":{"volume":13308444.21,"faceCount":44,"watertight":true,"note":"measured 2026-09-19: faceCount was ABSENT from this pin (CADSF-1630). Measured 44. Volume agrees to 3e-8%"}}},{"id":"recipe-shell-on-swivel-star-base","kind":"recipe","tier":2,"title":"Recipe: a moulded shell on a column and star base","summary":"Construction type 10: the shell swept as a 9 mm section, a hub, five radial arms repeated with a circular pattern, and the column that carries the shell on the base.","applies":["chair","office chair"],"basis":"Combines glossary-star-base, glossary-swivel-hub and joint-shell-to-star-base.","sources":["en-1022","iso-4762"],"tags":["recipe","construction-type","shell","base","swivel"],"recipe":{"prompt":"Model a shell chair on a swivel column and a five-arm star base","steps":[{"tool":"cad_sweep_profile","args":{"section":{"start":[-4.5,-220],"segments":[{"to":[4.5,-220]},{"to":[4.5,220]},{"to":[-4.5,220]},{"to":[-4.5,-220]}]},"path":{"points":[[0,-200,0],[0,150,0],[0,225,90],[0,250,340]],"fillets":[100,80]}},"note":"the moulded shell, section-veneer-shell typical 9mm"},{"tool":"cad_cylinder","args":{"r":45,"h":60},"note":"the base hub"},{"tool":"cad_box","args":{"dx":250,"dy":26,"dz":20,"origin":[40,-13,0]},"note":"one star-base arm"},{"tool":"cad_pattern_copies","args":{"of":"$2","type":"circular","center":[0,0,0],"count":5,"totalAngle":6.283185},"note":"five arms, glossary-star-base"},{"tool":"cad_cylinder","args":{"r":25,"h":300},"note":"the swivel column, glossary-swivel-hub"},{"tool":"cad_transform","args":{"of":"$4","translate":[0,0,60]},"note":"column standing on the hub, carrying the shell above"}],"expect":{"volume":589048.62,"faceCount":4,"watertight":true,"note":"measured 2026-09-19: agrees with the kernel on the CADSF-1630 corpus sweep — volume inside the 0.5% band and faceCount exact"}}},{"id":"finish-edge-solid-hardwood","kind":"rule","tier":2,"title":"Edge treatment: break every exposed solid-hardwood edge, 1-3 mm","summary":"Break every exposed solid-hardwood arris with a 1-3 mm roundover (2 mm typical); arm rails and seat fronts take a larger one, up to ~12 mm. Mating faces (tenon cheeks, glue lines) stay sharp. Use cad_fillet_edges on the exposed edges, after the joints.","applies":["chair","stool","table","solid wood"],"value":{"min":1,"max":3,"typical":2,"unit":"mm"},"basis":"A sharp hardwood arris splinters, dents and will not hold a finish film; a 1-3 mm roundover (a hand-plane chamfer or a 1/8 in router roundover) is the trade's minimum edge break. Mating faces stay sharp so the joint line closes without a visible groove.","sources":["joyce-furniture","wood-handbook"],"tags":["finish","edge","roundover","hardwood","fillet"]},{"id":"finish-edge-ply-laminate","kind":"rule","tier":2,"title":"Edge treatment: ease exposed plywood / laminate edges 0.5-1 mm","summary":"A plywood or moulded-veneer edge shows its laminations; it is eased with a 0.5-1 mm radius (sanded arris), not rounded over - a large radius cuts through the face veneer and exposes the core. Seat and shell rims follow this rule; mating faces are not eased.","applies":["plywood","moulded shell","bent lamination","chair"],"value":{"min":0.5,"max":1,"typical":1,"unit":"mm"},"basis":"Face veneers on furniture ply are 0.6-1.5 mm thick; a roundover larger than the face veneer exposes the glue line and the cross-band beneath.","sources":["joyce-furniture","en-636"],"tags":["finish","edge","plywood","laminate","fillet"]},{"id":"finish-tube-end-cap","kind":"rule","tier":2,"title":"Edge treatment: tube cut ends are capped, not left open","summary":"A steel or aluminium tube's cut end (typically 16-25 mm OD, 1-2 mm wall) is closed by an end cap, plug or glide - never left as an open sharp ring. Model the cap or glide as its own part; the tube's own bends need no edge treatment. Bought-in fasteners are not eased.","applies":["tube frame","steel chair","glide"],"basis":"An open tube end is a laceration hazard and scratches floors; EN 12520 / EN 1728 durability testing assumes glides are fitted.","sources":["en-12520","en-1728","en-10305-3"],"tags":["finish","edge","tube","cap","glide"]},{"id":"finish-cast-parting-line","kind":"rule","tier":2,"title":"Edge treatment: blend cast and moulded parting lines, 1-3 mm","summary":"A die-cast aluminium base or a moulded plastic/FRP shell has its parting line and exposed edges blended with a 1-3 mm radius (1.5 mm typical) - the tool is polished to it. Build it with cad_fillet_edges; faces that seat on a column or a hub are left sharp.","applies":["star base","die-cast","moulded shell","plastic"],"value":{"min":1,"max":3,"typical":1.5,"unit":"mm"},"basis":"Sharp external corners on a casting or moulding are stress raisers and fill badly; a 1-3 mm external radius is the usual design minimum for die-cast and injection-moulded parts.","sources":["en-1022"],"tags":["finish","edge","casting","moulding","blend"]}]}