{
 "version": "2026-10-20",
 "license": "Dimension sheets: CC BY 4.0. Standard and published-size files: CC BY 4.0. Xem Studio's own designs (files_license = Xem Studio Design License): free to use and sell things from, not to redistribute as files — https://xemstudio.com/license/. Other publishers' files: their own license, linked beside them.",
 "slug": "print-in-place-push-button-flexure",
 "name": "Print-in-place: push button with flexure return and click",
 "kind": "hardware",
 "category": "3D printing",
 "group": "Print-in-place mechanisms",
 "year": null,
 "question": "How do you 3D print a spring-loaded push button with a click?",
 "tags": [
  "3d printable",
  "print in place",
  "no assembly",
  "no supports",
  "mechanism",
  "stl",
  "step",
  "button",
  "flexure",
  "compliant mechanism"
 ],
 "aliases": [
  "print in place button",
  "compliant push button",
  "3d printed button with spring",
  "flexure button stl",
  "clicky button print"
 ],
 "overall_mm": {
  "length": 52,
  "width": 48,
  "height": 8
 },
 "official_cad": false,
 "xem_status": "free-files",
 "les": false,
 "free_files": 2,
 "url": "https://xemstudio.com/objects/print-in-place-push-button-flexure/",
 "sheet_txt": "https://xemstudio.com/objects/print-in-place-push-button-flexure/sheet.txt",
 "sheet": {
  "basis": "Xem Studio design: compliant (flexure) mechanism, planar; one designed running gap of 0.40 mm",
  "overall_mm": {
   "length": 52,
   "width": 48,
   "height": 8
  },
  "notes": [
   "3D print in place — prints already assembled, moving, in one job. Drawn at true size with no printer tolerance added; the 0.40 mm running gaps are part of the design.",
   "Running gap 0.40 mm per side, 0.80 mm on diameter — part of the design, drawn as is. On the 45° faces the same 0.40 mm is measured square to the face (0.57 mm along the axis).",
   "Bed: flat, everything 8 mm tall straight up from the bed: housing, plunger, flexures and click arm are one printed part with 0.40 mm slots between the moving and fixed edges.",
   "Support while printing: none needed — a straight extrusion; the two mounting holes through the bottom wall are teardrops.",
   "Captured: the plunger hangs on two parallel flexure beams (21 × 1.0 × 8) from the housing's left wall; its shoulder sits 0.40 mm under the housing top, so it cannot come out, and a block 3.0 mm below it is the hard stop.",
   "Freeing it: press the plunger fully a few times; the first press clears any strands in the 0.40 mm slots.",
   "Motion: 3 mm of travel; the tooth on the plunger meets the bump on the click arm at 1.4 mm, pushes the arm 0.6 mm aside and snaps past at 2 mm (a click, and a second one on the way back); the flexures return the plunger. Beam shortening shifts it 0.26 mm sideways at full travel."
  ],
  "table": {
   "columns": [
    "key",
    "value",
    "what"
   ],
   "rows": [
    [
     "gap_mm",
     0.4,
     "running gap per side on every moving interface (radial, axial, under captured parts) — part of the design, not a tolerance"
    ],
    [
     "housing_mm",
     "52 × 44 × 8",
     "outside"
    ],
    [
     "plunger_w_mm",
     12,
     "where it leaves the housing (opening 12.8)"
    ],
    [
     "plunger_out_mm",
     4,
     "above the housing at rest"
    ],
    [
     "travel_mm",
     3,
     "to the hard stop"
    ],
    [
     "click_contact_mm",
     1.4,
     "travel where the plunger's tooth meets the click bump"
    ],
    [
     "click_mm",
     2,
     "travel where the tooth snaps past the bump"
    ],
    [
     "click_overlap_mm",
     0.6,
     "how far the bump arm is pushed aside"
    ],
    [
     "flexure_l_mm",
     21,
     "two parallel beams"
    ],
    [
     "flexure_t_mm",
     1,
     "beam thickness (in the plane)"
    ],
    [
     "flexure_h_mm",
     8,
     "beam height = print height"
    ],
    [
     "side_drift_mm",
     0.26,
     "plunger's sideways shift at full travel from beam shortening (0.6 d²/L), inside the 0.40 gap"
    ],
    [
     "up_stop_mm",
     0.4,
     "shoulder under the housing top: the plunger cannot be pulled out"
    ],
    [
     "mount_holes",
     "2 × Ø3.4 through the bottom wall",
     "teardrop"
    ]
   ]
  }
 },
 "sheet_text": "Print-in-place: push button with flexure return and click — dimension sheet\nSource: Xem Studio, https://xemstudio.com/objects/print-in-place-push-button-flexure/  (sheet CC BY 4.0; files Xem Studio Design License, https://xemstudio.com/license/)\nBasis: Xem Studio design: compliant (flexure) mechanism, planar; one designed running gap of 0.40 mm\nCatalog version: 2026-10-20\n\nOverall (mm): length 52.0, width 48.0, height 8.0\n- 3D print in place — prints already assembled, moving, in one job. Drawn at true size with no printer tolerance added; the 0.40 mm running gaps are part of the design.\n- Running gap 0.40 mm per side, 0.80 mm on diameter — part of the design, drawn as is. On the 45° faces the same 0.40 mm is measured square to the face (0.57 mm along the axis).\n- Bed: flat, everything 8 mm tall straight up from the bed: housing, plunger, flexures and click arm are one printed part with 0.40 mm slots between the moving and fixed edges.\n- Support while printing: none needed — a straight extrusion; the two mounting holes through the bottom wall are teardrops.\n- Captured: the plunger hangs on two parallel flexure beams (21 × 1.0 × 8) from the housing's left wall; its shoulder sits 0.40 mm under the housing top, so it cannot come out, and a block 3.0 mm below it is the hard stop.\n- Freeing it: press the plunger fully a few times; the first press clears any strands in the 0.40 mm slots.\n- Motion: 3 mm of travel; the tooth on the plunger meets the bump on the click arm at 1.4 mm, pushes the arm 0.6 mm aside and snaps past at 2 mm (a click, and a second one on the way back); the flexures return the plunger. Beam shortening shifts it 0.26 mm sideways at full travel.\n\nkey  value  what\ngap_mm  0.4  running gap per side on every moving interface (radial, axial, under captured parts) — part of the design, not a tolerance\nhousing_mm  52 × 44 × 8  outside\nplunger_w_mm  12  where it leaves the housing (opening 12.8)\nplunger_out_mm  4  above the housing at rest\ntravel_mm  3  to the hard stop\nclick_contact_mm  1.4  travel where the plunger's tooth meets the click bump\nclick_mm  2.0  travel where the tooth snaps past the bump\nclick_overlap_mm  0.6  how far the bump arm is pushed aside\nflexure_l_mm  21.0  two parallel beams\nflexure_t_mm  1.0  beam thickness (in the plane)\nflexure_h_mm  8.0  beam height = print height\nside_drift_mm  0.26  plunger's sideways shift at full travel from beam shortening (0.6 d²/L), inside the 0.40 gap\nup_stop_mm  0.4  shoulder under the housing top: the plunger cannot be pulled out\nmount_holes  2 × Ø3.4 through the bottom wall  teardrop\n\nFiles elsewhere (not hosted by Xem Studio; license as stated by the publisher):\n- Xem Studio: Print-in-place mechanism design (geometry computed in the generator) — web — Xem Studio design — https://xemstudio.com/\n\nFree files (Xem Studio Design License, Xem Studio; STEP + STL, 2 parts): https://xemstudio.com/files/hardware/print-in-place-push-button-flexure/index.json\nAPI: https://xemstudio.com/api/geometry?object=print-in-place-push-button-flexure\n",
 "sources": [
  {
   "publisher": "Xem Studio",
   "title": "Print-in-place mechanism design (geometry computed in the generator)",
   "url": "https://xemstudio.com/",
   "formats": [
    "web"
   ],
   "license": "Xem Studio design",
   "license_verified": true,
   "hosted": false
  }
 ],
 "xem": {
  "status": "free-files",
  "sheet_free": true,
  "mesh_price_usd": null,
  "step_price_usd": null,
  "tolerance_mm": null
 },
 "related": [
  "print-in-place-captive-wheel-axle",
  "print-in-place-barrel-hinge-180",
  "print-in-place-multi-knuckle-hinge",
  "print-in-place-captive-turntable",
  "print-in-place-dovetail-slider",
  "print-in-place-articulated-chain",
  "print-in-place-ball-joint"
 ],
 "fits": [],
 "dimensions": "exact (nominal, no printing tolerance)",
 "dimension_rule": "All geometry on Xem Studio is exact (nominal, true size) with no printing tolerance. Where a part meets another part, the object lists its mating features (feature, exact size, what it mates with, fit class: press, slide, run, socket, clamp or designed). Apply your process's allowance to those features only; 'designed' gaps are part of the design and stay as drawn.",
 "mating": [],
 "faq": [
  {
   "q": "What makes it spring back?",
   "a": "Two parallel flexure beams 21 mm long and 1.0 mm thick join the plunger to the housing; pressing bends them, and they straighten again when released."
  },
  {
   "q": "Where does the click come from?",
   "a": "A 45° tooth on the plunger has to push a bump on a thin cantilever 0.6 mm aside; it snaps past it at 2.0 mm of the 3.0 mm travel."
  }
 ],
 "files_license": {
  "name": "Xem Studio Design License",
  "holder": "Xem Studio",
  "url": "https://xemstudio.com/license/",
  "note": "Xem Studio's own design: free to use, print, modify and sell things made from it; not to be republished or redistributed as files."
 },
 "offers": [
  {
   "file": "print-in-place-push-button-flexure-assembly",
   "formats": [
    "step",
    "stl"
   ],
   "price_usd": 0,
   "license": "Xem Studio Design License",
   "step": "https://xemstudio.com/files/hardware/print-in-place-push-button-flexure/print-in-place-push-button-flexure-assembly.step",
   "stl": "https://xemstudio.com/files/hardware/print-in-place-push-button-flexure/print-in-place-push-button-flexure-assembly.stl",
   "note": "The whole print as laid on the bed (1 bodies, already assembled); STEP keeps each moving body a separate solid"
  },
  {
   "file": "print-in-place-push-button-flexure-button",
   "formats": [
    "step",
    "stl"
   ],
   "price_usd": 0,
   "license": "Xem Studio Design License",
   "step": "https://xemstudio.com/files/hardware/print-in-place-push-button-flexure/print-in-place-push-button-flexure-button.step",
   "stl": "https://xemstudio.com/files/hardware/print-in-place-push-button-flexure/print-in-place-push-button-flexure-button.stl",
   "note": "Housing, plunger, flexure beams and click arm: one part"
  }
 ],
 "markdown": "https://xemstudio.com/objects/print-in-place-push-button-flexure/index.md"
}