Click button generator with spring or magnets
Print Profile(3)



Bill of Materials
Description
Membership
Like my models? Please consider subscribing. This will help me dedicate more time to create new interesting designs. As a subscriber, you'll get my direct email for priority support, and you can gain access to high-res model files (STEP), original project files (F3D) and source code of my scripts (SCAD) and optionally a commercial license.
This generator easily allows you to create custom click buttons compatible with Cherry MX button with various configurations, here's a complete guide to the generating parameters.
Subscribers to my Get to the source commercial membership can get access to the original .SCAD files and use OpenSCAD nightly builds to run them, if you don’t know how to do it, I wrote a full but simple step by step guide that you can find attached to this project.
Addendum
I also provide a Fusion 360 and a STEP file to use as reference for creating the holes to put the buttons in, to get them click on the dropdown arrow on right side of “Open in Bambu Studio” button and select Download STL/CAD Files from the menu.

Inserts
These parameters define what kind of internal mechanics you will use.
| Parameter | Description | unit | min | max | default |
|---|---|---|---|---|---|
| insert_type | Defines the type of insert to add, this value can be:
| Spring | |||
| spring_internal_diameter | The internal diameter of the spring, this defines the diameter of the pin holding the spring in place on the bottom piece. Preferably use a smaller value. Setting this to zero will avoid pin creation. This value is only used if insert_type is set to Spring. | millimeters | 0 | 5.7 | 3.2 |
| spring_external_diameter | The external diameter of the spring, this defines the diameter of the hole in the middle piece. This value is only used if insert_type is set to Spring. | millimeters | 0 | 6 | 6 |
| spring_fill_pin | If the pin should be filled or only walls are created. This value is only used if insert_type is set to Spring. | false | |||
| spring_minimal_length | The minimal length the spring should achieve when compressed, this helps the generator determine the distance between the top of the hole in the middle piece and the bottom of the piece. This value is only used if insert_type is set to Spring. | millimeters | 0 | 6 | 5 |
| spring_hole_border | Set how high the walls around the hole in the middle piece are. This value is only used if insert_type is set to Spring. | millimeters | 0 | 6 | 2 |
| top_magnet_shape | The shape of the magnet in the middle piece, this value can be:
| Round | |||
| top_magnet_diameter | This parameter value meaning depends on the value set in top_magnet_shape:
| millimeters | 1 | 6.2 | 5 |
| top_magnet_height | The height of the rectangular magnet. This value is only used if top_magnet_shape is Rectangular. | millimeters | 1 | 6 | 3 |
| top_magnet_thickness | The thickness of the magnet. | millimeters | 1 | 30 | 1 |
| top_magnet_cover | The quantity of material that is to be placed below the magnet. Warning: when setting this to zero, magnets_tolerance is considered zero for vertical creation of this and the magnet will be exposed. | millimeters | 0 | 5 | 0.8 |
| bottom_magnet_shape | The shape of the magnet in the bottom piece, this value can be:
| Round | |||
| bottom_magnet_diameter | This parameter value meaning depends on the value set in bottom_magnet_shape:
| millimeters | 1 | 6.2 | 5 |
| bottom_magnet_height | The height of the rectangular magnet. This value is only used if bottom_magnet_shape is Rectangular. | millimeters | 1 | 6 | 3 |
| bottom_magnet_thickness | The thickness of the magnet. | millimeters | 1 | 30 | 1 |
| bottom_magnet_cover | The quantity of material that is to be placed above the magnet. Warning: when setting this to zero, magnets_tolerance is considered zero for vertical creation of this and the magnet will be exposed. | millimeters | 0 | 5 | 0.8 |
| magnets_tolerance | The tolerance of magnets sizes in every direction. | millimeters | 0 | 0.5 | 0.2 |
| full_base | Special mode, if activate the middle part will be created without legs. This value is only used if insert_type is set to Magnets. | true |
Top piece
| Parameter | Description | default |
|---|---|---|
| top_simplify | If this is enabled, a simplified version of the top piece is rendered, the simplified version is easier to print but has lower details. Results will still be fully compatible with Cherry MX buttons, but will not be exactly the same. | true |
Middle piece
| Parameter | Description | unit | min | max | default |
|---|---|---|---|---|---|
| middle_pin_height | The height of the pin for button cap insertion. This is the part that will be on top of the button. | millimeters | 0 | 10 | 3.7 |
| middle_pin_shape | The shape of the pin at top of the button, this value can be:
| Cross | |||
| middle_pin_width | The width of the top pin, scaled accordingly. | millimeters | 0.4 | 5.1 | 4 |
Bottom piece
| Parameter | Description | unit | min | max | default |
|---|---|---|---|---|---|
| bottom_pin_height | This defines the height of the bottom pin. If this value is set to zero, the pin is not created. | millimeters | 0 | 10 | 3 |
| bottom_pin_diameter | The diameter of the bottom pin. This is only used if bottom_pin_height is not set to zero. | millimeters | 1.2 | 10 | 3.85 |
| bottom_flat | If enabled, removes alignment plates on the bottom for a flat surface. | false | |||
| clips | Enables//disables lateral clips creation | true | |||
| clip_depth | The depth of the clip. A value for this parameters must be considered sufficient enough so that they are not too delicate but not excessive so that they are not too hard. | millimeters | 0.4 | 3 | 1.6 |
| clip_hole_depth | The depth of the hole the clips are created. | millimeters | 0.5 | 8 | 3.7 |
| reinforce_towers | Adds a wall behind the towers avoiding them to be too delicate and break away easily. | true | |||
| bottom_simplify | If this is enabled, a simplified version of the bottom piece is rendered, the simplified version is easier to print but has lower details. Results will still be fully compatible with Cherry MX buttons, but will not be exactly the same. This includes:
| true |
Other settings
| Parameter | Description | default |
|---|---|---|
| render_quality | Choose the quality of generation of the objects, the higher quality the more memory/time generation will take. This value can be:
My advice is to find your settings for the whole object using Normal rendering, then switching to High quality or even higher when ready to export. | Normal |
| top_color | The color to use for top piece in Assemble View. Does not affect exported file. | Lavender |
| middle_color | The color to use for middle piece in Assemble View. Does not affect exported file. | Firebrick |
| bottom_color | The color to use for bottom piece in Assemble View. Does not affect exported file. | Light Steel Blue |
Where to buy inserts
You can buy inserts directly from MakerWorld/Bambu Lab under the Maker's Supply section or you can find them:
Amazon
AliExpress
The Amazon and AliExpress links above are part of the affiliate program. I may earn something from your purchase, please consider this as another way to show your appreciation for this model. You will not be charged anything more.
Boost Me (for free)
Want to show your appreciation for my work? Consider sending me a boost. This encourages me to keep creating beautiful, useful models and scripts, and to share them with full documentation as I always have.
Show me your appreciation: buy me a coffee.

https://buymeacoffee.com/zizzo81
All my models are proudly created in Italy with ♥.

License
You may create derivative works based on this object, provided that all such derivative works are published exclusively on the MakerWorld platform and include proper attribution to the original creator. You may not share, upload, host, distribute, or publish this object—or any derivative work of this object—on any other digital platform, marketplace, or distribution channel. Commercial use of this object and any derivative works is strictly prohibited. This includes, but is not limited to, selling, renting, sublicensing, or using the object in any context in which you receive monetary compensation or other financial benefits.















Comment & Rating (5)