mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-08-07 16:06:31 +02:00
Changed screw_knob() facets to be suitable for 3D printing.
Fixed knob_height() so it can take a screw as a type.
This commit is contained in:
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
//! Knob with embedded hex head screw.
|
//! Knob with embedded hex head screw.
|
||||||
|
//!
|
||||||
|
//! Most aspects can be customised, e.g. the flange thickness and radius. It can also be solid or just a wall and be wavey edged or fluted.
|
||||||
//
|
//
|
||||||
include <../core.scad>
|
include <../core.scad>
|
||||||
use <../utils/hanging_hole.scad>
|
use <../utils/hanging_hole.scad>
|
||||||
@@ -37,7 +39,9 @@ function screw_knob(screw, wall = 2, stem_h = 6, flange_t = 4, flange_r = 9, sol
|
|||||||
[screw, wall, stem_h, flange_t, flange_r, solid, waves, wave_amp, fluted];
|
[screw, wall, stem_h, flange_t, flange_r, solid, waves, wave_amp, fluted];
|
||||||
|
|
||||||
function knob_nut_trap_depth(screw) = round_to_layer(screw_head_height(screw));
|
function knob_nut_trap_depth(screw) = round_to_layer(screw_head_height(screw));
|
||||||
function knob_height(type) = screw_knob_stem_h(type) + screw_knob_flange_t(type); //! Total height of the knob
|
function knob_height(type) = //! Total height of the knob
|
||||||
|
let(type = !is_list(type[0]) ? screw_knob(type) : type)
|
||||||
|
screw_knob_stem_h(type) + screw_knob_flange_t(type);
|
||||||
|
|
||||||
module screw_knob(type) { //! Generate the STL for a knob to fit the specified hex screw
|
module screw_knob(type) { //! Generate the STL for a knob to fit the specified hex screw
|
||||||
type = !is_list(type[0]) ? screw_knob(type) : type; // Allow just the screw to be specified for backwards compatability
|
type = !is_list(type[0]) ? screw_knob(type) : type; // Allow just the screw to be specified for backwards compatability
|
||||||
@@ -52,13 +56,14 @@ module screw_knob(type) { //! Generate the STL for a knob to fit the specified h
|
|||||||
waves = screw_knob_waves(type);
|
waves = screw_knob_waves(type);
|
||||||
|
|
||||||
function wave(a) = flange_r - amp / 2 + sin(a * waves) * amp / 2;
|
function wave(a) = flange_r - amp / 2 + sin(a * waves) * amp / 2;
|
||||||
points = [for(a = [0 : 359]) wave(a) * [sin(a), cos(a)]];
|
fn = r2sides(flange_r);
|
||||||
|
points = [for(i = [0 : fn - 1], a = i * 360 / fn) wave(a) * [sin(a), cos(a)]];
|
||||||
solid = screw_knob_solid(type);
|
solid = screw_knob_solid(type);
|
||||||
|
|
||||||
module shape()
|
module shape()
|
||||||
if(screw_knob_fluted(type))
|
if(screw_knob_fluted(type))
|
||||||
difference() {
|
difference() {
|
||||||
circle(flange_r, $fn = 360);
|
circle4n(flange_r);
|
||||||
|
|
||||||
c = flange_r * sin(90 / waves); // Flute half chord
|
c = flange_r * sin(90 / waves); // Flute half chord
|
||||||
d = flange_r - flange_r * cos(90 / waves); // Distance from chord to perimeter
|
d = flange_r - flange_r * cos(90 / waves); // Distance from chord to perimeter
|
||||||
@@ -67,7 +72,7 @@ module screw_knob(type) { //! Generate the STL for a knob to fit the specified h
|
|||||||
for(i = [0 : waves - 1])
|
for(i = [0 : waves - 1])
|
||||||
rotate(360 * i / waves)
|
rotate(360 * i / waves)
|
||||||
translate([0, flange_r - amp + flute_r])
|
translate([0, flange_r - amp + flute_r])
|
||||||
circle(flute_r, $fn = 360);
|
circle4n(flute_r);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
polygon(points);
|
polygon(points);
|
||||||
|
@@ -5916,6 +5916,8 @@ Clamp for ribbon cable and polypropylene strip or one or more ribbon cables.
|
|||||||
## Screw_knob
|
## Screw_knob
|
||||||
Knob with embedded hex head screw.
|
Knob with embedded hex head screw.
|
||||||
|
|
||||||
|
Most aspects can be customised, e.g. the flange thickness and radius. It can also be solid or just a wall and be wavey edged or fluted.
|
||||||
|
|
||||||
[printed/screw_knob.scad](printed/screw_knob.scad) Implementation.
|
[printed/screw_knob.scad](printed/screw_knob.scad) Implementation.
|
||||||
|
|
||||||
[tests/screw_knob.scad](tests/screw_knob.scad) Code for this example.
|
[tests/screw_knob.scad](tests/screw_knob.scad) Code for this example.
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 82 KiB |
Reference in New Issue
Block a user