diff --git a/readme.md b/readme.md
index 642d017..789cffa 100644
--- a/readme.md
+++ b/readme.md
@@ -38,16 +38,17 @@ See [usage](docs/usage.md) for requirements, installation instructions and a usa
Iecs | Spades | Ssr_shroud | | |
Inserts | Spools | Strap_handle | | |
Jack | Springs | | | |
- Ldrs | Ssrs | | | |
- Leadnuts | Stepper_motors | | | |
- Leds | Toggles | | | |
- Light_strips | Transformers | | | |
- Linear_bearings | Tubings | | | |
- Mains_sockets | Variacs | | | |
- Meter | Veroboard | | | |
- Microswitches | Washers | | | |
- Microview | Wire | | | |
- Modules | Zipties | | | |
+ Kp_pillow_blocks | Ssrs | | | |
+ Ldrs | Stepper_motors | | | |
+ Leadnuts | Toggles | | | |
+ Leds | Transformers | | | |
+ Light_strips | Tubings | | | |
+ Linear_bearings | Variacs | | | |
+ Mains_sockets | Veroboard | | | |
+ Meter | Washers | | | |
+ Microswitches | Wire | | | |
+ Microview | Zipties | | | |
+ Modules | | | | |
---
@@ -93,8 +94,10 @@ Also single bearing balls are modelled as just a silver sphere and a BOM entry.
| Qty | Module call | BOM entry |
| ---:|:--- |:---|
| 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 |
-| 2 | ``` bearing_ball(3)``` | Steel ball 3mm |
+| 4 | ``` bearing_ball(3)``` | Steel ball 3mm |
Top
@@ -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 |
+Top
+
+---
+
+## 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 |
+
+
Top
---
diff --git a/tests/kp_pillow_blocks.scad b/tests/kp_pillow_blocks.scad
new file mode 100644
index 0000000..0a127df
--- /dev/null
+++ b/tests/kp_pillow_blocks.scad
@@ -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 .
+//
+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();
+
diff --git a/tests/png/ball_bearings.png b/tests/png/ball_bearings.png
index d9fa3d7..fa84bc3 100644
Binary files a/tests/png/ball_bearings.png and b/tests/png/ball_bearings.png differ
diff --git a/tests/png/kp_pillow_blocks.png b/tests/png/kp_pillow_blocks.png
new file mode 100644
index 0000000..ed1a826
Binary files /dev/null and b/tests/png/kp_pillow_blocks.png differ
diff --git a/vitamins/ball_bearings.scad b/vitamins/ball_bearings.scad
index 23fb42d..49ba38b 100644
--- a/vitamins/ball_bearings.scad
+++ b/vitamins/ball_bearings.scad
@@ -18,7 +18,9 @@
//
BB624 = ["624", 4, 13, 5, "blue"]; // 624 ball bearing for idlers
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
diff --git a/vitamins/kp_pillow_block.scad b/vitamins/kp_pillow_block.scad
new file mode 100644
index 0000000..ec94084
--- /dev/null
+++ b/vitamins/kp_pillow_block.scad
@@ -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 .
+
+//
+//! KP pillow block bearings
+//
+include <../core.scad>
+use <../utils/tube.scad>
+
+include
+use
+use
+
+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);
+ }
+}
+
diff --git a/vitamins/kp_pillow_blocks.scad b/vitamins/kp_pillow_blocks.scad
new file mode 100644
index 0000000..db7773b
--- /dev/null
+++ b/vitamins/kp_pillow_blocks.scad
@@ -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 .
+//
+
+//
+//! KP pillow block bearings
+//
+
+include <../core.scad>
+include
+include
+
+// 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