Added nut_sides parameter to allow creation of non-cylinder nut

This commit is contained in:
Ian Drake 2023-12-08 00:41:00 -05:00 committed by Adrian Schlatter
parent 32c20eb982
commit 40c02e5ecb
2 changed files with 8 additions and 3 deletions

View File

@ -97,7 +97,11 @@ argument for higbee_arc):
:alt: M12x0.5 nut
Note that for a nut you also have to specify an outer diameter. The inner
diameter is implicitly given by the thread designator ("M12x0.5" in this case).
diameter is implicitly given by the thread designator ("M12x0.5" in this case). You can set the number of sides for the nut! So you can make hex nuts:
.. code-block:: OpenScad
nut("M30", turns=4, Douter=46, nut_sides=6);
To make a threaded hole (e.g. in a plate), an intuitive approach would be to
create the difference of the plate and a bolt. However, this part would not work

View File

@ -48,7 +48,8 @@ module bolt(designator, turns, higbee_arc=20, fn=120, table=THREAD_TABLE) {
};
};
module nut(designator, turns, Douter, higbee_arc=20, fn=120, table=THREAD_TABLE) {
module nut(designator, turns, Douter, higbee_arc=20, fn=120, nut_sides=120, table=THREAD_TABLE) {
nut_sides = nut_sides == 120 ? fn : nut_sides;
union() {
specs = thread_specs(str(designator, "-int"), table=table);
P = specs[0]; Dsupport = specs[2];
@ -57,7 +58,7 @@ module nut(designator, turns, Douter, higbee_arc=20, fn=120, table=THREAD_TABLE)
translate([0, 0, -P / 2])
difference() {
cylinder(h=H, d=Douter, $fn=fn);
cylinder(h=H, d=Douter, $fn=nut_sides);
translate([0, 0, -0.1])
cylinder(h=H+0.2, d=Dsupport, $fn=fn);
};