mirror of
https://github.com/DJSundog/NopSCADlib.git
synced 2024-11-23 07:13:51 -05:00
Added screw_polysink().
This commit is contained in:
parent
f4857f6862
commit
53c3cdb598
@ -2933,6 +2933,7 @@ Machine screws and wood screws with various head styles.
|
||||
| ```screw_head_depth(type, d = 0)``` | How far a counter sink head will go into a straight hole diameter d |
|
||||
| ```screw_longer_than(x)``` | Returns shortest screw length longer or equal to x |
|
||||
| ```screw_nut_radius(type)``` | Radius of matching nut |
|
||||
| ```screw_polysink_r(type, z)``` | Countersink hole profile corrected for rounded staircase extrusions. |
|
||||
| ```screw_shorter_than(x)``` | Returns longest screw length shorter than or equal to x |
|
||||
|
||||
### Modules
|
||||
@ -2941,6 +2942,7 @@ Machine screws and wood screws with various head styles.
|
||||
| ```screw(type, length, hob_point = 0, nylon = false)``` | Draw specified screw, optionally hobbed or nylon |
|
||||
| ```screw_and_washer(type, length, star = false, penny = false)``` | Screw with a washer which can be standard or penny and an optional star washer on top |
|
||||
| ```screw_countersink(type, drilled = true)``` | Countersink shape |
|
||||
| ```screw_polysink(type)``` | A countersink hole made from stacked polyholes for printed parts |
|
||||
|
||||
![screws](tests/png/screws.png)
|
||||
|
||||
|
@ -258,7 +258,7 @@ module screw_countersink(type, drilled = true) { //! Countersink shape
|
||||
if(head_type == hs_cs || head_type == hs_cs_cap)
|
||||
translate_z(-head_height)
|
||||
if(drilled)
|
||||
cylinder(h = head_height, r1 = 0, r2 = head_rad + head_t);
|
||||
cylinder(h = head_height + eps, r1 = 0, r2 = head_rad + head_t);
|
||||
else
|
||||
intersection() {
|
||||
cylinder(h = head_height + eps, r1 = 0, r2 = head_rad + head_t);
|
||||
@ -267,6 +267,24 @@ module screw_countersink(type, drilled = true) { //! Countersink shape
|
||||
}
|
||||
}
|
||||
|
||||
function screw_polysink_r(type, z) = //! Countersink hole profile corrected for rounded staircase extrusions.
|
||||
let(rad = screw_radius(type),
|
||||
head_t = rad / 5,
|
||||
head_rad = screw_head_radius(type)
|
||||
)
|
||||
limit(head_rad + head_t - z + (sqrt(2) - 1) * layer_height / 2, screw_clearance_radius(type), head_rad);
|
||||
|
||||
module screw_polysink(type) { //! A countersink hole made from stacked polyholes for printed parts
|
||||
head_depth = screw_head_depth(type);
|
||||
assert(head_depth, "Not a countersunk screw");
|
||||
layers = ceil(head_depth / layer_height);
|
||||
for(i = [0 : layers - 1], side = [-1, 1])
|
||||
translate_z(side * (i + 0.5) * layer_height)
|
||||
poly_cylinder(r = screw_polysink_r(type, i * layer_height + layer_height / 2), h = layer_height + 2 * eps, center = true);
|
||||
|
||||
poly_cylinder(r = screw_clearance_radius(type), h = 100, center = true);
|
||||
}
|
||||
|
||||
module screw_and_washer(type, length, star = false, penny = false) { //! Screw with a washer which can be standard or penny and an optional star washer on top
|
||||
washer = screw_washer(type);
|
||||
head_type = screw_head_type(type);
|
||||
|
Loading…
Reference in New Issue
Block a user