mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-09-25 22:49:07 +02:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5d3f1115bb | ||
|
9f9adeb6ca | ||
|
f9b06c855c | ||
|
05bfe9b159 | ||
|
f961874ce3 | ||
|
7a6210f442 |
87
readme.md
87
readme.md
@@ -38,16 +38,17 @@ See [usage](docs/usage.md) for requirements, installation instructions and a usa
|
|||||||
<tr><td> <a href = "#Iecs">Iecs</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Ssr_shroud">Ssr_shroud</a> </td><td></td><td></td></tr>
|
<tr><td> <a href = "#Iecs">Iecs</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Ssr_shroud">Ssr_shroud</a> </td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Inserts">Inserts</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
<tr><td> <a href = "#Inserts">Inserts</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Jack">Jack</a> </td><td> <a href = "#Springs">Springs</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Jack">Jack</a> </td><td> <a href = "#Springs">Springs</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Ldrs">Ldrs</a> </td><td> <a href = "#Ssrs">Ssrs</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Kp_pillow_blocks">Kp_pillow_blocks</a> </td><td> <a href = "#Ssrs">Ssrs</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Ldrs">Ldrs</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Leds">Leds</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Leds">Leds</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Meter">Meter</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Washers">Washers</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Meter">Meter</a> </td><td> <a href = "#Washers">Washers</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Wire">Wire</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Wire">Wire</a> </td><td></td><td></td><td></td></tr>
|
||||||
<tr><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td></td><td></td><td></td></tr>
|
<tr><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td></td><td></td><td></td></tr>
|
||||||
|
<tr><td> <a href = "#Modules">Modules</a> </td><td></td><td></td><td></td><td></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -93,8 +94,10 @@ Also single bearing balls are modelled as just a silver sphere and a BOM entry.
|
|||||||
| Qty | Module call | BOM entry |
|
| Qty | Module call | BOM entry |
|
||||||
| ---:|:--- |:---|
|
| ---:|:--- |:---|
|
||||||
| 1 | ```ball_bearing(BB608)``` | Ball bearing 608-2RS 8mm x 22mm x 7mm |
|
| 1 | ```ball_bearing(BB608)``` | Ball bearing 608-2RS 8mm x 22mm x 7mm |
|
||||||
|
| 1 | ```ball_bearing(BB6200)``` | Ball bearing 6200-2RS 10mm x 30mm x 9mm |
|
||||||
|
| 1 | ```ball_bearing(BB6201)``` | Ball bearing 6201-2RS 12mm x 32mm x 10mm |
|
||||||
| 1 | ```ball_bearing(BB624)``` | Ball bearing 624-2RS 4mm x 13mm x 5mm |
|
| 1 | ```ball_bearing(BB624)``` | Ball bearing 624-2RS 4mm x 13mm x 5mm |
|
||||||
| 2 | ``` bearing_ball(3)``` | Steel ball 3mm |
|
| 4 | ``` bearing_ball(3)``` | Steel ball 3mm |
|
||||||
|
|
||||||
|
|
||||||
<a href="#top">Top</a>
|
<a href="#top">Top</a>
|
||||||
@@ -1087,6 +1090,57 @@ E.g. a "brown" socket for mains live needs to be displayed as "sienna" to look r
|
|||||||
| 1 | ```jack_4mm_shielded("brown", 3, "sienna")``` | 4mm shielded jack socket brown |
|
| 1 | ```jack_4mm_shielded("brown", 3, "sienna")``` | 4mm shielded jack socket brown |
|
||||||
|
|
||||||
|
|
||||||
|
<a href="#top">Top</a>
|
||||||
|
|
||||||
|
---
|
||||||
|
<a name="Kp_pillow_blocks"></a>
|
||||||
|
## Kp_pillow_blocks
|
||||||
|
KP pillow block bearings
|
||||||
|
|
||||||
|
|
||||||
|
[vitamins/kp_pillow_blocks.scad](vitamins/kp_pillow_blocks.scad) Object definitions.
|
||||||
|
|
||||||
|
[vitamins/kp_pillow_block.scad](vitamins/kp_pillow_block.scad) Implementation.
|
||||||
|
|
||||||
|
[tests/kp_pillow_blocks.scad](tests/kp_pillow_blocks.scad) Code for this example.
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
| Function | Description |
|
||||||
|
|:--- |:--- |
|
||||||
|
| ```kp_base_height(type)``` | Height of base containing the bolts |
|
||||||
|
| ```kp_diameter(type)``` | Rod hole diameter |
|
||||||
|
| ```kp_hole_offset(type)``` | Rod hole offset |
|
||||||
|
| ```kp_screw_separation(type)``` | Separation of bolts in the base |
|
||||||
|
|
||||||
|
### Functions
|
||||||
|
| Function | Description |
|
||||||
|
|:--- |:--- |
|
||||||
|
| ```kp_size(type)``` | Size of bracket |
|
||||||
|
|
||||||
|
### Modules
|
||||||
|
| Module | Description |
|
||||||
|
|:--- |:--- |
|
||||||
|
| ```kp_pillow_block(type)``` | Draw the KP pillow block |
|
||||||
|
| ```kp_pillow_block_assembly(type, part_thickness = 2, screw_type = M5_cap_screw, nut_type = undef)``` | Assembly with fasteners in place |
|
||||||
|
| ```kp_pillow_block_hole_positions(type)``` | Place children at hole positions |
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Vitamins
|
||||||
|
| Qty | Module call | BOM entry |
|
||||||
|
| ---:|:--- |:---|
|
||||||
|
| 1 | ```kp_pillow_block(KP000)``` | KP000 pillow block |
|
||||||
|
| 1 | ```kp_pillow_block(KP001)``` | KP001 pillow block |
|
||||||
|
| 1 | ```kp_pillow_block(KP08)``` | KP08 pillow block |
|
||||||
|
| 2 | ```sliding_t_nut(M4_sliding_t_nut)``` | Nut M4 sliding T |
|
||||||
|
| 2 | ```sliding_t_nut(M5_sliding_t_nut)``` | Nut M5 sliding T |
|
||||||
|
| 2 | ```nut(M5_nut, nyloc = undef)``` | Nut M5 x 4mm |
|
||||||
|
| 2 | ```screw(M4_cap_screw, 10)``` | Screw M4 cap x 10mm |
|
||||||
|
| 4 | ```screw(M5_cap_screw, 12)``` | Screw M5 cap x 12mm |
|
||||||
|
| 2 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
||||||
|
| 6 | ```washer(M5_washer)``` | Washer M5 x 10mm x 1mm |
|
||||||
|
|
||||||
|
|
||||||
<a href="#top">Top</a>
|
<a href="#top">Top</a>
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -5076,11 +5130,12 @@ Small holes can get away without it, but they print better with truncated teardr
|
|||||||
### Modules
|
### Modules
|
||||||
| Module | Description |
|
| Module | Description |
|
||||||
|:--- |:--- |
|
|:--- |:--- |
|
||||||
| ```semi_teardrop(h, r, d = undef, center = true)``` | A semi teardrop in the positive Y domain |
|
| ```semi_teardrop(h, r, d = undef, center = true, chamfer = 0)``` | A semi teardrop in the positive Y domain |
|
||||||
| ```teardrop(h, r, center = true, truncate = true)``` | For making horizontal holes that don't need support material, set ```truncate = false``` to make traditional RepRap teardrops that don't even need bridging |
|
| ```teardrop(h, r, center = true, truncate = true, chamfer = 0)``` | For making horizontal holes that don't need support material, set ```truncate = false``` to make traditional RepRap teardrops that don't even need bridging |
|
||||||
| ```teardrop_plus(h, r, center = true, truncate = true)``` | Slightly bigger teardrop to allow for the 3D printing staircase effect |
|
| ```teardrop_chamfer(h, center, chamfer)``` | Helper module for adding chamfer to a teardrop |
|
||||||
| ```tearslot(h, r, w, center = true)``` | A horizontal slot that doesn't need support material |
|
| ```teardrop_plus(h, r, center = true, truncate = true, chamfer = 0)``` | Slightly bigger teardrop to allow for the 3D printing staircase effect |
|
||||||
| ```vertical_tearslot(h, r, l, center = true)``` | A vertical slot that doesn't need support material |
|
| ```tearslot(h, r, w, center = true, chamfer = 0)``` | A horizontal slot that doesn't need support material |
|
||||||
|
| ```vertical_tearslot(h, r, l, center = true, chamfer = 0)``` | A vertical slot that doesn't need support material |
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
34
tests/kp_pillow_blocks.scad
Normal file
34
tests/kp_pillow_blocks.scad
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
//
|
||||||
|
// NopSCADlib Copyright Chris Palmer 2018
|
||||||
|
// nop.head@gmail.com
|
||||||
|
// hydraraptor.blogspot.com
|
||||||
|
//
|
||||||
|
// This file is part of NopSCADlib.
|
||||||
|
//
|
||||||
|
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||||
|
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
// See the GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||||
|
// If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
//
|
||||||
|
include <../core.scad>
|
||||||
|
use <../utils/layout.scad>
|
||||||
|
|
||||||
|
include <../vitamins/kp_pillow_blocks.scad>
|
||||||
|
include <../vitamins/nuts.scad>
|
||||||
|
|
||||||
|
module kp_pillow_blocks() {
|
||||||
|
screws = [M4_cap_screw, M5_cap_screw, M5_cap_screw];
|
||||||
|
nuts = [M4_sliding_t_nut, M5_sliding_t_nut, M5_nut];
|
||||||
|
layout([for(k = kp_pillow_blocks) 2 * kp_size(k)[1]])
|
||||||
|
kp_pillow_block_assembly(kp_pillow_blocks[$i], screw_type = screws[$i], nut_type = nuts[$i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($preview)
|
||||||
|
kp_pillow_blocks();
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 86 KiB |
BIN
tests/png/kp_pillow_blocks.png
Normal file
BIN
tests/png/kp_pillow_blocks.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 88 KiB |
Binary file not shown.
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 43 KiB |
@@ -22,25 +22,47 @@ include <../core.scad>
|
|||||||
module teardrops() {
|
module teardrops() {
|
||||||
color(pp1_colour)
|
color(pp1_colour)
|
||||||
rotate([90, 0, -45])
|
rotate([90, 0, -45])
|
||||||
linear_extrude(height = 3)
|
difference() {
|
||||||
difference() {
|
linear_extrude(height = 3) {
|
||||||
square(40);
|
difference() {
|
||||||
|
square([80, 40]);
|
||||||
|
|
||||||
|
translate([10, 10])
|
||||||
|
teardrop(h = 0, r = 3);
|
||||||
|
|
||||||
|
translate([10, 20])
|
||||||
|
teardrop_plus(h = 0, r = 3);
|
||||||
|
|
||||||
|
translate([20, 30])
|
||||||
|
tearslot(h = 0, r = 3, w = 10);
|
||||||
|
|
||||||
|
translate([30, 15])
|
||||||
|
vertical_tearslot(h = 0, r =3, l = 10);
|
||||||
|
|
||||||
|
translate([20, 10])
|
||||||
|
semi_teardrop(h = 0, r = 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([40, 0, 1.5]) {
|
||||||
|
h = 3 + eps;
|
||||||
|
chamfer = 0.5;
|
||||||
|
|
||||||
translate([10, 10])
|
translate([10, 10])
|
||||||
teardrop(h = 0, r = 3);
|
teardrop(h = h, r = 3, chamfer = chamfer);
|
||||||
|
|
||||||
translate([10, 20])
|
translate([10, 20])
|
||||||
teardrop_plus(h = 0, r = 3);
|
teardrop_plus(h = h, r = 3, chamfer = chamfer);
|
||||||
|
|
||||||
translate([20, 30])
|
translate([20, 30])
|
||||||
tearslot(h = 0, r = 3, w = 10);
|
tearslot(h = h, r = 3, w = 10, chamfer = chamfer);
|
||||||
|
|
||||||
translate([30, 15])
|
translate([30, 15])
|
||||||
vertical_tearslot(h = 0, r =3, l = 10);
|
vertical_tearslot(h = h, r =3, l = 10, chamfer = chamfer);
|
||||||
|
|
||||||
translate([20, 10])
|
translate([20, 10])
|
||||||
semi_teardrop(h = 0, r = 3);
|
semi_teardrop(h = h, r = 3, chamfer = chamfer);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
teardrops();
|
teardrops();
|
||||||
|
@@ -21,45 +21,106 @@
|
|||||||
//! For making horizontal holes that don't need support material.
|
//! For making horizontal holes that don't need support material.
|
||||||
//! Small holes can get away without it, but they print better with truncated teardrops.
|
//! Small holes can get away without it, but they print better with truncated teardrops.
|
||||||
//
|
//
|
||||||
module teardrop(h, r, center = true, truncate = true) //! For making horizontal holes that don't need support material, set ```truncate = false``` to make traditional RepRap teardrops that don't even need bridging
|
module teardrop(h, r, center = true, truncate = true, chamfer = 0) { //! For making horizontal holes that don't need support material, set ```truncate = false``` to make traditional RepRap teardrops that don't even need bridging
|
||||||
render(convexity = 5)
|
module teardrop_2d(r, truncate) {
|
||||||
extrude_if(h, center)
|
|
||||||
hull() {
|
|
||||||
circle4n(r);
|
|
||||||
|
|
||||||
if(truncate)
|
|
||||||
translate([0, r / 2])
|
|
||||||
square([2 * r * (sqrt(2) - 1), r], center = true);
|
|
||||||
else
|
|
||||||
polygon([[0, 0], [eps, 0], [0, r * sqrt(2)]]);
|
|
||||||
}
|
|
||||||
|
|
||||||
module semi_teardrop(h, r, d = undef, center = true) //! A semi teardrop in the positive Y domain
|
|
||||||
render(convexity = 5)
|
|
||||||
extrude_if(h, center)
|
|
||||||
intersection() {
|
|
||||||
R = is_undef(d) ? r : d / 2;
|
|
||||||
teardrop(r = R, h = 0);
|
|
||||||
|
|
||||||
sq = R + 1;
|
|
||||||
translate([-sq, 0])
|
|
||||||
square([2 * sq, sq]);
|
|
||||||
}
|
|
||||||
|
|
||||||
module teardrop_plus(h, r, center = true, truncate = true) //! Slightly bigger teardrop to allow for the 3D printing staircase effect
|
|
||||||
teardrop(h, r + layer_height / 4, center, truncate);
|
|
||||||
|
|
||||||
module tearslot(h, r, w, center = true) //! A horizontal slot that doesn't need support material
|
|
||||||
extrude_if(h, center)
|
|
||||||
hull() {
|
hull() {
|
||||||
translate([-w/2,0,0]) teardrop(r = r, h = 0);
|
circle4n(r);
|
||||||
translate([ w/2,0,0]) teardrop(r = r, h = 0);
|
if(truncate)
|
||||||
|
translate([0, r / 2])
|
||||||
|
square([2 * r * (sqrt(2) - 1), r], center = true);
|
||||||
|
else
|
||||||
|
polygon([[0, 0], [eps, 0], [0, r * sqrt(2)]]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render(convexity = 5)
|
||||||
|
extrude_if(h, center)
|
||||||
|
teardrop_2d(r, truncate);
|
||||||
|
|
||||||
|
teardrop_chamfer(h, center, chamfer) {
|
||||||
|
linear_extrude(eps, center = true)
|
||||||
|
teardrop_2d(r + chamfer / 2, truncate);
|
||||||
|
translate_z(-chamfer / 2)
|
||||||
|
linear_extrude(eps, center = true)
|
||||||
|
teardrop_2d(r, truncate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module semi_teardrop(h, r, d = undef, center = true, chamfer = 0) { //! A semi teardrop in the positive Y domain
|
||||||
|
module semi_teardrop_2d(r, d) {
|
||||||
|
intersection() {
|
||||||
|
R = is_undef(d) ? r : d / 2;
|
||||||
|
teardrop(r = R, h = 0);
|
||||||
|
|
||||||
|
sq = R + 1;
|
||||||
|
translate([-sq, 0])
|
||||||
|
square([2 * sq, sq]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render(convexity = 5)
|
||||||
|
extrude_if(h, center)
|
||||||
|
semi_teardrop_2d(r, d);
|
||||||
|
|
||||||
|
teardrop_chamfer(h, center, chamfer) {
|
||||||
|
linear_extrude(eps, center = true)
|
||||||
|
semi_teardrop_2d(r + chamfer / 2, d);
|
||||||
|
translate_z(-chamfer / 2)
|
||||||
|
linear_extrude(eps, center = true)
|
||||||
|
semi_teardrop_2d(r, d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module teardrop_plus(h, r, center = true, truncate = true, chamfer = 0) //! Slightly bigger teardrop to allow for the 3D printing staircase effect
|
||||||
|
teardrop(h, r + layer_height / 4, center, truncate, chamfer);
|
||||||
|
|
||||||
|
module tearslot(h, r, w, center = true, chamfer = 0) { //! A horizontal slot that doesn't need support material
|
||||||
|
module tearslot_2d(r, w) {
|
||||||
|
hull() {
|
||||||
|
translate([-w / 2, 0]) teardrop(r = r, h = 0);
|
||||||
|
translate([w / 2, 0]) teardrop(r = r, h = 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module vertical_tearslot(h, r, l, center = true) //! A vertical slot that doesn't need support material
|
|
||||||
extrude_if(h, center)
|
extrude_if(h, center)
|
||||||
|
tearslot_2d(r, w);
|
||||||
|
|
||||||
|
teardrop_chamfer(h, center, chamfer) {
|
||||||
|
linear_extrude(eps, center = true)
|
||||||
|
tearslot_2d(r + chamfer / 2, w);
|
||||||
|
translate_z(-chamfer / 2)
|
||||||
|
linear_extrude(eps, center = true)
|
||||||
|
tearslot_2d(r, w);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module vertical_tearslot(h, r, l, center = true, chamfer = 0) { //! A vertical slot that doesn't need support material
|
||||||
|
module vertical_tearslot_2d(r, l) {
|
||||||
hull() {
|
hull() {
|
||||||
translate([0, l / 2]) teardrop(0, r, true);
|
translate([0, l / 2]) teardrop(0, r, true);
|
||||||
translate([0, -l / 2])
|
translate([0, -l / 2]) circle4n(r);
|
||||||
circle4n(r);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extrude_if(h, center)
|
||||||
|
vertical_tearslot_2d(r, l);
|
||||||
|
|
||||||
|
teardrop_chamfer(h, center, chamfer) {
|
||||||
|
linear_extrude(eps, center = true)
|
||||||
|
vertical_tearslot_2d(r + chamfer / 2, l);
|
||||||
|
translate_z(-chamfer / 2)
|
||||||
|
linear_extrude(eps, center = true)
|
||||||
|
vertical_tearslot_2d(r, l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module teardrop_chamfer(h, center, chamfer) { //! Helper module for adding chamfer to a teardrop
|
||||||
|
if(h && chamfer)
|
||||||
|
translate_z(center ? 0 : h / 2)
|
||||||
|
for(m = [0, 1])
|
||||||
|
mirror([0, 0, m])
|
||||||
|
translate_z((h - eps ) / 2)
|
||||||
|
hull()
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -18,7 +18,9 @@
|
|||||||
//
|
//
|
||||||
BB624 = ["624", 4, 13, 5, "blue"]; // 624 ball bearing for idlers
|
BB624 = ["624", 4, 13, 5, "blue"]; // 624 ball bearing for idlers
|
||||||
BB608 = ["608", 8, 22, 7, "OrangeRed"]; // 608 bearings for wades
|
BB608 = ["608", 8, 22, 7, "OrangeRed"]; // 608 bearings for wades
|
||||||
|
BB6200 = ["6200", 10, 30, 9, "black"]; // 6200 bearings for KP pillow blocks
|
||||||
|
BB6201 = ["6201", 12, 32, 10, "black"]; // 6201 bearings for KP pillow blocks
|
||||||
|
|
||||||
ball_bearings = [BB624, BB608];
|
ball_bearings = [BB624, BB608, BB6200, BB6201];
|
||||||
|
|
||||||
use <ball_bearing.scad>
|
use <ball_bearing.scad>
|
||||||
|
117
vitamins/kp_pillow_block.scad
Normal file
117
vitamins/kp_pillow_block.scad
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
//
|
||||||
|
// NopSCADlib Copyright Chris Palmer 2018
|
||||||
|
// nop.head@gmail.com
|
||||||
|
// hydraraptor.blogspot.com
|
||||||
|
//
|
||||||
|
// This file is part of NopSCADlib.
|
||||||
|
//
|
||||||
|
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||||
|
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
// See the GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||||
|
// If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
//! KP pillow block bearings
|
||||||
|
//
|
||||||
|
include <../core.scad>
|
||||||
|
use <../utils/tube.scad>
|
||||||
|
|
||||||
|
include <screws.scad>
|
||||||
|
use <washer.scad>
|
||||||
|
use <ball_bearing.scad>
|
||||||
|
|
||||||
|
kp_pillow_block_color = grey70;
|
||||||
|
|
||||||
|
function kp_diameter(type) = type[1]; //! Rod hole diameter
|
||||||
|
function kp_hole_offset(type) = type[2]; //! Rod hole offset
|
||||||
|
function kp_size(type) = [type[3],type[8],type[5]]; //! Size of bracket
|
||||||
|
function kp_base_height(type) = type[7]; //! Height of base containing the bolts
|
||||||
|
function kp_screw_separation(type) = type[4]; //! Separation of bolts in the base
|
||||||
|
|
||||||
|
|
||||||
|
module kp_pillow_block(type) { //! Draw the KP pillow block
|
||||||
|
vitamin(str("kp_pillow_block(", type[0], "): ", type[0], " pillow block"));
|
||||||
|
|
||||||
|
d = kp_diameter(type);
|
||||||
|
H = kp_hole_offset(type);
|
||||||
|
L = kp_size(type)[0];
|
||||||
|
J = kp_screw_separation(type);
|
||||||
|
A = kp_size(type)[2];// sizeZ, includes protruding center
|
||||||
|
N = type[6];
|
||||||
|
H1 = kp_base_height(type);
|
||||||
|
H0 = kp_size(type)[1];
|
||||||
|
K = type[9];
|
||||||
|
S = type[10];
|
||||||
|
b = type[11];
|
||||||
|
bolthole_radius = type[12];
|
||||||
|
|
||||||
|
color(kp_pillow_block_color)
|
||||||
|
translate([0, -H, 0]) {
|
||||||
|
fillet = 1;
|
||||||
|
squareSizeX = (L - H0) / 2 + fillet;
|
||||||
|
rotate([-90, 0, 0])
|
||||||
|
linear_extrude(H1)
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
for(i = [-L / 2, L / 2 - squareSizeX])
|
||||||
|
translate([i, -A / 2])
|
||||||
|
rounded_square([squareSizeX, A], fillet, center = false);
|
||||||
|
}
|
||||||
|
for(i = [-J / 2, J / 2])
|
||||||
|
translate([i, 0])
|
||||||
|
circle(r = bolthole_radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate_z(-A / 2) {
|
||||||
|
for(x = [- L / 2 + squareSizeX - fillet, L / 2 - squareSizeX + fillet - 2])
|
||||||
|
translate([x, 0, 0])
|
||||||
|
cube([2, H, A]);
|
||||||
|
stripLength = J - 2 * bolthole_radius;
|
||||||
|
stripThickness = 4;
|
||||||
|
translate([-stripLength / 2, 0, (H1 + stripThickness) / 2])
|
||||||
|
cube([stripLength, H1, stripThickness]);
|
||||||
|
translate([0 , H, 0])
|
||||||
|
tube(H0 / 2, b / 2, A, center = false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
not_on_bom() no_explode()
|
||||||
|
ball_bearing(type[13]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module kp_pillow_block_hole_positions(type) { //! Place children at hole positions
|
||||||
|
for(x = [-kp_screw_separation(type), kp_screw_separation(type)])
|
||||||
|
translate([x / 2, kp_base_height(type) - kp_hole_offset(type), 0])
|
||||||
|
rotate([-90,0,0])
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
|
||||||
|
module kp_pillow_block_assembly(type, part_thickness = 2, screw_type = M5_cap_screw, nut_type = undef) { //! Assembly with fasteners in place
|
||||||
|
kp_pillow_block(type);
|
||||||
|
|
||||||
|
screw_washer_thickness = washer_thickness(screw_washer(screw_type));
|
||||||
|
nut_type = is_undef(nut_type) ? screw_nut(screw_type) : nut_type;
|
||||||
|
nut_washer_type = nut_washer(nut_type);
|
||||||
|
nut_washer_thickness = nut_washer_type ? washer_thickness(nut_washer_type) : 0;
|
||||||
|
|
||||||
|
nut_offset = kp_base_height(type) + part_thickness;
|
||||||
|
screw_length = screw_shorter_than(nut_offset + screw_washer_thickness + nut_thickness(nut_type) + nut_washer_thickness);
|
||||||
|
|
||||||
|
kp_pillow_block_hole_positions(type) {
|
||||||
|
screw_and_washer(screw_type, screw_length);
|
||||||
|
|
||||||
|
translate_z(-nut_offset)
|
||||||
|
vflip()
|
||||||
|
if(nut_washer_type)
|
||||||
|
nut_and_washer(nut_type);
|
||||||
|
else
|
||||||
|
sliding_t_nut(nut_type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
35
vitamins/kp_pillow_blocks.scad
Normal file
35
vitamins/kp_pillow_blocks.scad
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
//
|
||||||
|
// NopSCADlib Copyright Chris Palmer 2018
|
||||||
|
// nop.head@gmail.com
|
||||||
|
// hydraraptor.blogspot.com
|
||||||
|
//
|
||||||
|
// This file is part of NopSCADlib.
|
||||||
|
//
|
||||||
|
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||||
|
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
// See the GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||||
|
// If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
//! KP pillow block bearings
|
||||||
|
//
|
||||||
|
|
||||||
|
include <../core.scad>
|
||||||
|
include <screws.scad>
|
||||||
|
include <ball_bearings.scad>
|
||||||
|
|
||||||
|
// d H L J A N H1 H0 K S b bolthole bearing
|
||||||
|
KP08 = ["KP08", 8, 18, 55, 42, 13, 4.5, 5, 29, 0.0, 0, 22, M4_clearance_radius, BB608];
|
||||||
|
KP000 = ["KP000", 10, 18, 67, 53, 16, 7.0, 6, 35, 14.0, 4, 30, M6_clearance_radius, BB6200];
|
||||||
|
KP001 = ["KP001", 12, 19, 71, 56, 16, 7.0, 6, 38, 14.5, 4, 32, M6_clearance_radius, BB6201];
|
||||||
|
|
||||||
|
kp_pillow_blocks = [KP08, KP000, KP001];
|
||||||
|
|
||||||
|
use <kp_pillow_block.scad>
|
Reference in New Issue
Block a user