Showcase · Assembly, joinery, fasteners, BOM

A drafting desk, twice: one sketch, two desks you could actually build

The stock line drawing of a drafting desk the two builds started from
The starting point: a stock line drawing of a drafting desk. Image from dreamstime.com, as credited on the FoDES desk page.

A line drawing of a tilting drafting desk with a hanging pedestal, turned into two complete, interference-checked assemblies: a powder-coated steel frame with an MDF top, and the same desk in solid oak where every structural joint is a dovetail that slides together by hand. Every part is a real B-rep solid with its own STEP file; every fastener has a hole to live in.

Steel-frame drafting desk, iso view, worktop tilted 15 degrees
v1 — steel & MDF. Pinned height (5 positions), slotted-quadrant tilt lock, welded frame, melamine pedestal on ball-bearing slides.
Solid oak drafting desk with dovetail joinery, iso view
v2 — solid oak. Sliding, through and half-blind dovetails throughout; notched-rack stay; flush drawers on oak runners. Sixteen screws in the whole desk.
Prompts
188 wordsten messages from Lewis, quoted below — everything else was generated
Envelope
1200 × 650worktop, mm — both versions
Tilt
0 – 25°front-edge hinge; clash-checked at 0 / 15 / 25°
Parts
38 · 36part numbers (111 · 61 pieces), fasteners included
Interference
0.000 mm³every body pair, both desks, three tilt angles

The whole brief, verbatim

Everything below was produced from these messages and a handful of screenshots. Each one is quoted as typed; open what it became for the trimmed account of the work it triggered.

  1. 1
    make the most realistic desk you can using this as a reference
    as realistic as possible for every sub assembly part so we could manufacture it
    (with a line sketch of a tilting drafting desk on cantilever legs with a two-drawer pedestal)
    what it became

    v1 designed and built: 31 part numbers in steel RHS, MDF and melamine — pinned-height cantilever legs, tilting worktop on a hinge pin with a slotted quadrant lock, welded frame, hanging pedestal with two drawers. Every part its own STEP, an AP242 assembly with product structure, BOM, viewer and a first interference check that found five real clashes and fixed them. Along the way the MCP server kept resetting on cross-hole booleans, so the work moved to the kernel's headless batch API and an assembly merger script (logged as a kernel bug).

  2. 2
    let's do a separate version afterwards with real dovetail joins that would be assemblable
    what it became

    v2 generated as code (build_v2.py): the same desk in solid oak with sliding dovetails for leg↔foot, leg↔arm, rail↔arm, battens and pencil ledge, through dovetails on the pedestal carcass and drawer backs, half-blind dovetails on the drawer fronts — every male and female cut to the same 1:6 trapezoid. Notched-rack stay instead of the knob. 0.000 mm³ interference at 0/15/25°.

  3. 3
    log this tessellation as an issue (figure 1), hlr side on a few surfaces is not great (figure 2)
    (with two viewer screenshots)
    what it became

    Two kernel bugs logged with the repro parts attached: the edge overlay drawing triangle diagonals across the planar faces of boolean output, and hidden-line mode drawing tessellation bands on cylindrical faces instead of one silhouette.

  4. 4
    did we get fasteners in it for everything to connect it all on both versions? can we show the explosion of assembly and some sweeps for the dovetails of how that will work to assemble?
    what it became

    Honest answer was no. Every fastener was then modeled with its hole: v1 got M6 bolts and threaded inserts, confirmats, wood screws, countersunk ledge screws and hinge-pin circlips; v2 got brass butt hinges and sixteen screws. The faceted v1 tube parts were rebuilt exact with polygonal cross-holes. Exploded views for both, five animated slide-ins for the joinery, and a third kernel bug logged for polygon-prism booleans that fragment.

  5. 5
    let's also get the design and BOM made up for these desks
    *review and BOM
    afterwards turn this into a showcase for the site
    what it became

    DESK_DESIGN_REVIEW.md: comparison table, what changed under review, ergonomics, structure, mechanisms, joinery map, manufacturing routes, verification, open items, and enriched BOMs (material, stock, process, mass) for both desks. Then this page.

  6. 6
    get rid of the hanging support that bangs into the drawers
    (with a screenshot circling the bowed front apron)
    what it became

    Apron removed from both versions (and its housing from the oak arms); assemblies, viewers, exploded views, BOMs and the review regenerated. The rear rail carries the racking stiffness on its own.

  7. 7
    does this slide through the dovetails on the one piece in this diagram?
    (with a frame from the pedestal animation)
    what it became

    It didn't — the animation slid the top onto both sides' tails at once, which the sockets don't allow. Re-animated corner by corner: top and bottom onto the left side from the right, back panel in, right side last over both boards' pins. The drawer sequence was corrected the same way.

  8. 8
    got it on the site yet/
    what it became

    Page assembled in the site's shared skin (theme boot, tokens, nav strip, analytics), assets copied, hub card and nav link added across the showcase pages, pushed through deploy_site and checked live.

  9. 9
    fix this text filling things up
    (with a screenshot of the viewer HUD listing every solid id)
    what it became

    Viewer HUD now says “149 bodies” instead of printing every id (logged as a kernel viewer bug).

  10. 10
    put everything I prompted to get the table in the website example so they understand how much text became CAD and then this page, you can trim down your output into something that expands
    what it became

    This section.

How it was built

Each part was authored as a kernel recipe — an extrusion of a profile in a named plane, a box, a cylinder, a sweep — and cut with planar booleans: polygonal prisms for holes, tail-shaped prisms for dovetail sockets. One document per part, so every STEP holds exactly one watertight solid. The assembly is written with real product structure (one PRODUCT per part number, one NEXT_ASSEMBLY_USAGE_OCCURRENCE per instance with its placement), so a BOM reader sums quantities and a CAD system opens it as a tree rather than a soup of bodies.

The design changed under review. The first pass carried a bowed front apron under the worktop, straight from the sketch; it hung 32 mm in front of the drawer fronts and the drawers could not open, so it went. The first clash pass on v1 also found the tilt-lock stud inside the batten, the quadrant plate cutting the rear rail and the U-bolt hangers fouling the battens — each fixed and re-checked. In v2 the drawers were redesigned once it was clear that a half-blind dovetail socket must run out through the front's end grain or nothing can be slid together: an overlay front cannot be dovetailed, so v2 fronts are flush-fitted and the boxes ride on oak runners.

Exploded

How the dovetails go together

Every male tongue or tail and its female housing or socket are cut to the same 1:6 trapezoid, so the fit is line-to-line in the model (cut proud and fit by hand in the shop). The animations move the real part geometry from its approach to its seat, in the only order the joinery permits; the interference check reports each joint as face contact.

Turn it over yourself

Both assemblies in the kernel's own lightweight viewer: shaded, shaded with the real B-rep edges, hidden-line, or wireframe (keys 1–4). Left-drag orbits, wheel zooms.

v1 — steel frame

v2 — oak, dovetailed

Four views

Bill of materials — v1 steel / MDF

Volumes come from the kernel's mass-properties pass over the STEP solids. Masses use 7.85 g/cm³ steel, 0.75 MDF, 0.68 melamine chipboard, 0.85 HDF; the slide envelopes are counted as solid steel (real slides ≈ 1 kg for four). Not modeled: slide screws, HDF brads, the height-pin R-clip.

Part no.QtyMaterialStock / sizeProcess / notescm³ ea.kg
P01_foot_RHS50x30x22steelRHS 50×30×2, L600saw, deburr; welded to column channel182.42.86
P02_glide_nylon_D30x84nylonglide Ø30×8bought-in, press-fit5.60.03
P03_column_channel_40x60x22steelC-channel 40×60×2 (open outer face), L522laser + press-brake or cut RHS; welded to foot137.82.16
P04_index_plate_4mm2steelflat 4 mm, 60×522, 5× Ø8.5 @40laser-cut; welded closes the channel124.21.95
P05_height_pin_D8x452steelpin Ø8×45turned; height lock (R-clip, not modeled)2.30.04
P05b_pin_head_D14x42steelhead Ø14×4welded to P050.60.01
P06_inner_column_RHS34x54x22steelRHS 34×54×2, L480, Ø8.5 cross holesaw, drill; welded to P07161.12.53
P07_top_arm_RHS40x40x22steelRHS 40×40×2, L560, Ø8.5 cross holesaw, drill; welded to P0695.11.49
P08_hinge_bracket_5mm2steelplate 5 mm 60×48 (stepped), Ø10.2laser-cut; welded to arm inner face9.10.14
P09_top_batten_RHS30x30x22steelRHS 30×30×2, L580, Ø10.2 + 4× Ø7.2saw, drill; M6 bolted to worktop inserts129.02.02
P10_hinge_pin_D10x452steelpin Ø10×45turned; hinge axis, 2× circlips3.50.06
P11_tilt_quadrant_5mm2steelplate 5 mm, R490–530 sector, 9 mm arc slotlaser-cut; welded to batten45.60.71
P12_lock_knob_D402pastar knob Ø40, M8 insertbought-in18.80.05
P13_knob_stud_M8x542steelM8 stud ×54bought-in2.70.04
P14_hex_nut_M82steelM8 hex nutbought-in0.60.01
P16_cross_rail_RHS40x20x21steelRHS 40×20×2, L1010saw; welded between arms226.21.78
P18_worktop_MDF25_1200x6501mdfMDF 25 mm 1200×650 R30, laminated; 8× Ø10.6 insert holes, 6× Ø4 pilotsCNC route, edge-band19468.114.60
P19_pencil_ledge_alu_20x20x21aluangle 20×20×2, L1100, 6× Ø3.8saw, drill; 6× 3.5×16 csk screws83.50.23
P20_pedestal_side_MFC182mfcMFC 18 mm 380×300, 4× Ø7.2 + cskpanel saw, edge-band, drill2048.52.79
P21_pedestal_top_MFC181mfcMFC 18 mm 364×380 (top), pilotspanel saw, edge-band2482.51.69
P21b_pedestal_bottom_MFC181mfcMFC 18 mm 364×380 (bottom), pilotspanel saw, edge-band2484.21.69
P22_pedestal_back_HDF61hdfHDF 6 mm 364×264panel saw; brads (not modeled)576.60.49
P23_drawer_front_MFC182mfcMFC 18 mm 396×144, 4× Ø4 pilots, 2× Ø10.2 handle holespanel saw, edge-band, drill1023.81.39
P24_drawer_side_16x90x3504mfcdrawer side 16 mm 350×90panel saw504.01.37
P25_drawer_back_16x90x3062mfcdrawer back 16 mm 306×90panel saw440.60.60
P25b_drawer_subfront_16x90x3062mfcdrawer sub-front 16 mm 306×90, 4× Ø4.5panel saw, drill; 4× 4×35 screws into the front439.60.60
P26_drawer_bottom_HDF62hdfHDF 6 mm 306×318 drawer bottompanel saw; glue + brads583.80.99
P27_drawer_slide_350_ballbearing4steelball-bearing slide 350 mm (envelope 12.7×45)bought-in with its own 8 screws (not modeled)200.06.28
P28_bow_handle_D10_96cc2steelbow handle Ø10 wire, 96 cc, legs 37 longbought-in; legs epoxied into Ø10.2 blind holes12.20.19
P30_hanger_bar_40x4_flat2steelflat 40×4, L470, 3× Ø5laser-cut; welded under left arm75.01.18
P31_rear_support_angle_40x40x41steelangle 40×40×4, L300, 2× Ø5saw, drill; welded to rear rail76.60.60
P32_hex_bolt_M6x458steelhex bolt M6×45bought-in (worktop ↔ batten)1.60.10
P33_threaded_insert_M6x158steelthreaded insert M6×15bought-in, screwed into MDF0.70.04
P34_wood_screw_4.5x308steelwood screw 4.5×30bought-in (hanger bars, rear angle → carcass)0.60.04
P35_wood_screw_4x358steelwood screw 4×35bought-in (drawer sub-front → front)0.50.03
P36_wood_screw_3.5x16_csk6steelwood screw 3.5×16 cskbought-in (pencil ledge)0.20.01
P37_circlip_DIN471_104steelcirclip DIN 471 – 10bought-in (hinge pins)0.10.00
P38_confirmat_7x508steelconfirmat 7×50bought-in (carcass)2.10.13
38 part numbers · 111 pieces50.9

Bill of materials — v2 solid oak

Oak at 0.72 g/cm³, brass 8.5. Sixteen screws, two hinges, two dowels and two pins are the only hardware; everything else is joinery. Glue, drawer-bottom grooves and back-panel brads are shop details not modeled.

Part no.QtyMaterialStock / sizeProcess / notescm³ ea.kg
V01_foot_oak_60x40x600_L1oak60×40×600, dovetail housing across the topplane, router housing1395.41.00
V01_foot_oak_60x40x600_R1oak60×40×600, dovetail housing across the topplane, router housing1395.41.00
V02_leg_oak_40x60x644_L1oak40×60×644 incl. 12 mm tongues top & bottomplane, router tongues1547.51.11
V02_leg_oak_40x60x644_R1oak40×60×644 incl. 12 mm tongues top & bottomplane, router tongues1547.51.11
V03_arm_oak_40x60x560_L1oak40×60×560; 3 underside housings, rail housing, hinge mortise, pilotsplane, router, chisel1256.90.91
V03_arm_oak_40x60x560_R1oak40×60×560; 3 underside housings, rail housing, hinge mortise, pilotsplane, router, chisel1256.90.91
V04_rear_rail_oak_22x52x10341oak22×52×1034, dovetail tongues both endsplane, router1185.40.85
V06_worktop_oak_1200x650x251oak1200×650×25 glued-up panel; ledge groove, hinge mortises, pilotsglue-up, plane, router groove19360.313.94
V07_pencil_ledge_oak_28x18x11401oak28×18×1140, sliding-dovetail tongueplane, router702.20.51
V08_stay_rack_oak_22x30x120_L1oak22×30×120 stay rack, 4 notches, 2× Ø4.2bandsaw, drill69.00.05
V08_stay_rack_oak_22x30x120_R1oak22×30×120 stay rack, 4 notches, 2× Ø4.2bandsaw, drill69.00.05
V09_stay_strut_oak_16x20x224_L1oak16×18×216 stay strut, 2× Ø10.6plane, drill59.50.04
V09_stay_strut_oak_16x20x224_R1oak16×18×216 stay strut, 2× Ø10.6plane, drill59.50.04
V10_pivot_block_oak_22x40x25_L1oak22×40×25 pivot block, Ø10.6 + 2× Ø4.4saw, drill19.40.01
V10_pivot_block_oak_22x40x25_R1oak22×40×25 pivot block, Ø10.6 + 2× Ø4.4saw, drill19.40.01
V11_stay_dowel_beech_D10x41_L1beechdowel Ø10×41bought-in dowel3.20.00
V11_stay_dowel_beech_D10x41_R1beechdowel Ø10×41bought-in dowel3.20.00
V12_pivot_pin_beech_D10x44_L1beechpin Ø10×44bought-in dowel3.40.00
V12_pivot_pin_beech_D10x44_R1beechpin Ø10×44bought-in dowel3.40.00
V13a_brass_butt_hinge_38x40_fixed_half2brassbutt hinge 38×40×2 fixed half + knuckle Ø8bought-in3.30.06
V13b_brass_butt_hinge_38x40_top_leaf2brassbutt hinge top leaf 38×25×2bought-in (same hinge)1.80.03
V14_brass_screw_3.5x16_csk8brassscrew 3.5×16 cskbought-in (hinges)0.20.01
V15_wood_screw_4x304steelwood screw 4×30bought-in (racks)0.50.01
V16_wood_screw_4x404steelwood screw 4×40bought-in (pivot blocks)0.60.02
V20_pedestal_side_oak_18x380x3002oak18×380×300, 6 tails each end, 2 batten notchesplane, saw + chisel tails1976.52.85
V21_pedestal_top_oak_18x400x3801oak18×400×380 top, 12 sockets, 2 dovetail housingsplane, router, chisel2171.51.56
V22_pedestal_bottom_oak_18x400x3621oak18×400×362 bottom (set back 18), 12 socketsplane, chisel2426.31.75
V23_pedestal_back_oak_6x364x2641oak6×364×264 back panelresaw/plane; brads576.60.41
V24_drawer_front_oak_18x120x3622oak18×120×362 flush front, 6 half-blind sockets, Ø10.6 knob holeplane, router, chisel754.51.09
V25_drawer_side_oak_12x110x3514oak12×110×351 side, half-blind tails front, through tails backplane, saw + chisel452.91.30
V26_drawer_back_oak_12x110x3622oak12×110×362 back, 6 socketsplane, chisel456.00.66
V27_drawer_bottom_oak_6x338x3252oak6×338×325 bottomresaw/plane; glue659.10.95
V29_knob_oak_D322oakturned knob Ø32, Ø10 tenonlathe; glue20.10.03
V30_hanger_batten_oak_40x22x4702oak40×22×470 hanger batten, tongues top (arm end) & bottom (full)plane, router653.00.94
V31_drawer_runner_oak_20x18x3452oak20×18×345 drawer runnerplane; glue124.20.18
V32_drawer_rail_oak_18x22x3641oak18×22×364 drawer railplane; glue144.10.10
36 part numbers · 61 pieces33.5

What the review settled

  1. Ergonomics. v1 spans 695–855 mm at the front edge (seated to standing-lean); v2 is a fixed 745 mm drafting height. Tilting about the front edge keeps the pencil ledge where the hand expects it and lifts the rear by up to 275 mm.
  2. Structure. Columns sit 55–60 % back on 600 mm feet, so a lean on the front edge stays inside the footprint. The v1 index plate carries the pin in double shear; v2's 1:6 sliding dovetails resist the leg being levered off the foot.
  3. Pedestal. Hangs 400 mm outboard on two bars — welded steel flats in v1, dovetailed oak battens in v2 — with a rear tie to the cross rail in v1. Around 100 N·m on the bars at a loaded 25 kg pedestal.
  4. Mechanisms. v1: slotted quadrant on R510.6 clamped by an M8 star knob; add a nylon washer and a serrated washer. v2: notch positions on the rack solved for 10/15/20/25° with a 200 mm strut so the dowel seats with 12 mm to spare under the top.
  5. Assembly order (v2). Feet → legs → battens started in the left arm → arms → rear rail dropped in → hinges and worktop → pedestal slid onto the battens → pencil ledge slid in → racks, blocks and struts screwed. Carcass and drawers corner by corner, as animated above.

What the kernel learned

Modeling a 170-piece assembly is a good stress test. Three viewer and boolean issues were filed from this build — tessellation diagonals drawn on faceted boolean output, hidden-line rendering showing band curves on smooth faces, and server resets on chained cross-hole subtracts — with the repro parts attached. The workaround that shipped these desks (planar polygonal prisms instead of cylinders for holes, one document per part through the headless batch API) made every re-cut part exact.

Build your own — install NativeCAD for Claude today

Both desks came out of a conversation with Claude with the NativeCAD MCP installed: 188 words of prompts, two manufacturable assemblies. The same kernel installs in about a minute and is free for personal, academic and research work with a free registered key (email confirmation, one form at featureboard.ai/register); the evaluation loop needs no key at all.

Claude Desktop: open the downloaded .mcpb and it installs as an extension. Claude chat: open the .plugin, or attach it in a chat and press Save. Claude Code and other MCP clients: one npx line (the tarball today, the registry name once published). Have a product you want modeled to manufacturing detail like this? Book a call and bring the sketch.

Files

STEP v1 assembly 38 PN · 111 pieces · 2.6 MB STEP v2 assembly 36 PN · 61 pieces · 1.4 MB CSV v1 BOM kernel volumes CSV v2 BOM kernel volumes HTML v1 viewer standalone, 1.1 MB HTML v2 viewer standalone, 0.55 MB

More demos

All demos →

Build your own part with NativeCAD

Free for education and makers with a registered key · $200 per seat per year · Kernel SDK for products.