1
0
mirror of https://github.com/nophead/NopSCADlib.git synced 2025-09-20 04:01:31 +02:00

Compare commits

..

14 Commits

Author SHA1 Message Date
Chris Palmer
26b2b63b6e Merge branch 'martinbudden-rocker' 2021-01-02 10:13:23 +00:00
Chris Palmer
611772d960 Updated readme for rocker. 2021-01-02 10:12:54 +00:00
Chris Palmer
b6e648b485 Merge branch 'rocker' of https://github.com/martinbudden/NopSCADlib into martinbudden-rocker 2021-01-02 10:10:03 +00:00
Chris Palmer
e224ee0ad2 Removed z fight in printed box test. 2021-01-02 10:04:24 +00:00
Chris Palmer
10c3df466b screw_polysink can now have h = 0 to get just the cone. 2021-01-02 10:04:03 +00:00
Chris Palmer
029265e1b9 Add rr_green to global_defs. 2020-12-31 12:27:46 +00:00
Martin Budden
49f6da767a Added size and slot convenience functions. Added non-rounded hole. 2020-12-31 11:59:41 +00:00
Chris Palmer
171dff723f Updated gallery pictures 2020-12-30 19:05:14 +00:00
Chris Palmer
85a7494813 Updated gallery images 2020-12-30 09:49:17 +00:00
Chris Palmer
46937e403e Better use of Python regex facilities. 2020-12-30 09:48:46 +00:00
Chris Palmer
8f2532d61b Merge branch 'martinbudden-gt2x16_pulley' 2020-12-29 22:29:57 +00:00
Chris Palmer
84fa528ff7 Updated images and readme for new pulley. 2020-12-29 22:29:11 +00:00
Chris Palmer
807850aac5 Merge branch 'gt2x16_pulley' of https://github.com/martinbudden/NopSCADlib into martinbudden-gt2x16_pulley 2020-12-29 21:45:47 +00:00
Martin Budden
103ad1827e Added GT2x16_pulley. 2020-12-29 17:25:18 +00:00
22 changed files with 36 additions and 24 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 202 KiB

View File

@@ -43,11 +43,11 @@ Bench power supply built around an ATX PSU.
* The green LED shows the power good signal. * The green LED shows the power good signal.
* Dummy loads keep the outputs in range. * Dummy loads keep the outputs in range.
![](Lab_ATX_PSU.png) ![](Lab_ATX_PSU.png)
<a name="TOP"></a> <a name="TOP"></a>
## Laser Load ## Laser Load
15kV dummy load for testing CO2 laser PSUs 15kV dummy load for testing CO2 laser PSUs
@@ -77,11 +77,11 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
## Mains Box ## Mains Box
Mains isolated and variable supply with metering. Mains isolated and variable supply with metering.
![](Mains_Box.png) ![](Mains_Box.png)
<a name="TOP"></a> <a name="TOP"></a>
## SunBot ## SunBot
A solar tracker to keep a solar panel pointing at the sun. A solar tracker to keep a solar panel pointing at the sun.
@@ -95,13 +95,15 @@ WiFi enabled remote control turntable for photography
![](Turntable.png) ![](Turntable.png)
Was actually made from DiBond but shown made with carbon fibre here.
<a name="TOP"></a> <a name="TOP"></a>
## Variac ## Variac
Motorised variac with WiFi control, see [hydraraptor.blogspot.com/2018/04/esp8266-spi-spy](https://hydraraptor.blogspot.com/2018/04/esp8266-spi-spy.html) Motorised variac with WiFi control, see [hydraraptor.blogspot.com/2018/04/esp8266-spi-spy](https://hydraraptor.blogspot.com/2018/04/esp8266-spi-spy.html)
![](Variac.png) ![](Variac.png)

View File

@@ -26,7 +26,7 @@
// Setting $bom after including lib overrides bom in the libs but not in the local file. // Setting $bom after including lib overrides bom in the libs but not in the local file.
// Setting $_bom in the local file overrides it in the local file but not in the libs. // Setting $_bom in the local file overrides it in the local file but not in the libs.
// //
//function is_undef(x) = x == undef; rr_green = [0, 146/255, 0]; // RepRap logo colour
$_bom = is_undef($bom) ? 0 : $bom; // 0 no bom, 1 assemblies and stls, 2 vitamins as well $_bom = is_undef($bom) ? 0 : $bom; // 0 no bom, 1 assemblies and stls, 2 vitamins as well
$exploded = is_undef($explode) ? 0 : $explode; // 1 for exploded view $exploded = is_undef($explode) ? 0 : $explode; // 1 for exploded view
@@ -34,7 +34,7 @@ layer_height = is_undef($layer_height) ? 0.25 : $layer_height; // lay
extrusion_width = is_undef($extrusion_width) ? 0.5 : $extrusion_width; // filament width when printing extrusion_width = is_undef($extrusion_width) ? 0.5 : $extrusion_width; // filament width when printing
nozzle = is_undef($nozzle) ? 0.45 : $nozzle; // 3D printer nozzle nozzle = is_undef($nozzle) ? 0.45 : $nozzle; // 3D printer nozzle
cnc_bit_r = is_undef($cnc_bit_r) ? 1.2 : $cnc_bit_r; // minimum tool radius when milling 2D objects cnc_bit_r = is_undef($cnc_bit_r) ? 1.2 : $cnc_bit_r; // minimum tool radius when milling 2D objects
pp1_colour = is_undef($pp1_colour) ? [0, 146/255, 0] : $pp1_colour; // printed part colour 1, RepRap logo colour pp1_colour = is_undef($pp1_colour) ? rr_green : $pp1_colour; // printed part colour 1, RepRap logo colour
pp2_colour = is_undef($pp2_colour) ? "Crimson" : $pp2_colour; // printed part colour 2 pp2_colour = is_undef($pp2_colour) ? "Crimson" : $pp2_colour; // printed part colour 2
pp3_colour = is_undef($pp3_colour) ? "SteelBlue" : $pp3_colour; // printed part colour 3 pp3_colour = is_undef($pp3_colour) ? "SteelBlue" : $pp3_colour; // printed part colour 3
pp4_colour = is_undef($pp4_colour) ? "darkorange" : $pp4_colour;// printed part colour 4 pp4_colour = is_undef($pp4_colour) ? "darkorange" : $pp4_colour;// printed part colour 4

Binary file not shown.

Before

Width:  |  Height:  |  Size: 859 KiB

After

Width:  |  Height:  |  Size: 860 KiB

View File

@@ -2603,6 +2603,7 @@ Timing belt pulleys, both toothed and plain with internal bearings for idlers.
### Vitamins ### Vitamins
| Qty | Module call | BOM entry | | Qty | Module call | BOM entry |
| ---:|:--- |:---| | ---:|:--- |:---|
| 1 | `pulley(GT2x16_pulley)` | Pulley GT2 16 teeth |
| 1 | `pulley(GT2x16_toothed_idler)` | Pulley GT2 idler 16 teeth | | 1 | `pulley(GT2x16_toothed_idler)` | Pulley GT2 idler 16 teeth |
| 1 | `pulley(GT2x20_toothed_idler)` | Pulley GT2 idler 20 teeth | | 1 | `pulley(GT2x20_toothed_idler)` | Pulley GT2 idler 20 teeth |
| 1 | `pulley(GT2x20_plain_idler)` | Pulley GT2 idler smooth 12mm | | 1 | `pulley(GT2x20_plain_idler)` | Pulley GT2 idler smooth 12mm |
@@ -2614,6 +2615,7 @@ Timing belt pulleys, both toothed and plain with internal bearings for idlers.
| 1 | `pulley(T2p5x16_pulley)` | Pulley T2.5 16 teeth | | 1 | `pulley(T2p5x16_pulley)` | Pulley T2.5 16 teeth |
| 1 | `pulley(T5x10_pulley)` | Pulley T5 10 teeth | | 1 | `pulley(T5x10_pulley)` | Pulley T5 10 teeth |
| 1 | `screw(M3_grub_screw, 3)` | Screw M3 grub x 3mm | | 1 | `screw(M3_grub_screw, 3)` | Screw M3 grub x 3mm |
| 2 | `screw(M3_grub_screw, 4.5)` | Screw M3 grub x 4.5mm |
| 2 | `screw(M3_grub_screw, 4)` | Screw M3 grub x 4mm | | 2 | `screw(M3_grub_screw, 4)` | Screw M3 grub x 4mm |
| 4 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm | | 4 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
| 1 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm | | 1 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
@@ -2783,11 +2785,17 @@ Rocker switch. Also used for neon indicator in the same form factor.
| `rocker_spades(type)` | Spade types and positions | | `rocker_spades(type)` | Spade types and positions |
| `rocker_width(type)` | Body width | | `rocker_width(type)` | Body width |
### Functions
| Function | Description |
|:--- |:--- |
| `rocker_size(type)` | Width, height, and depth in a vector |
| `rocker_slot(type)` | Rocker slot in a vector |
### Modules ### Modules
| Module | Description | | Module | Description |
|:--- |:--- | |:--- |:--- |
| `rocker(type, colour)` | Draw the specified rocker switch | | `rocker(type, colour)` | Draw the specified rocker switch |
| `rocker_hole(type, h = 0)` | Make a hole to accept a rocker switch, by default 2D, set h for 3D | | `rocker_hole(type, h = 0, rounded = true)` | Make a hole to accept a rocker switch, by default 2D, set h for 3D |
![rockers](tests/png/rockers.png) ![rockers](tests/png/rockers.png)

View File

@@ -51,7 +51,7 @@ def split_blurb(lines):
""" Split blurb on horizontal rules.""" """ Split blurb on horizontal rules."""
blurbs = [""] blurbs = [""]
for line in lines.split('\n')[:-1]: for line in lines.split('\n')[:-1]:
if re.match(r'\*\*\*\**',line): if re.match(r'\*{3,}',line):
blurbs.append("") blurbs.append("")
else: else:
blurbs[-1] += line + '\n' blurbs[-1] += line + '\n'

View File

@@ -52,7 +52,7 @@ def gallery(force):
if os.path.isfile(document): if os.path.isfile(document):
with open(document, 'rt') as readme: with open(document, 'rt') as readme:
for line in readme.readlines(): for line in readme.readlines():
match = re.match(r"^.*!(\[.*\]\(.*\)).*$", line) match = re.search(r"!(\[.*\]\(.*\))", line)
if match: if match:
image = match.group(0) image = match.group(0)
if image.startswith('![Main Assembly](assemblies/'): if image.startswith('![Main Assembly](assemblies/'):

View File

@@ -227,11 +227,7 @@ def views(target, do_assemblies = None):
# #
# Only add the image if the first blurb section doesn't contain one. # Only add the image if the first blurb section doesn't contain one.
# #
got_image = False if not re.search(r'\!\[.*\]\(.*\)', blurbs[0], re.MULTILINE):
for line in blurbs[0].split('\n'):
if re.match(r'.*\!\[.*\]\(.*\).*', line):
got_image = True
if not got_image:
print('![Main Assembly](assemblies/%s.png)\n' % flat_bom[-1]["name"].replace('_assembly', '_assembled'), file = doc_file) print('![Main Assembly](assemblies/%s.png)\n' % flat_bom[-1]["name"].replace('_assembly', '_assembled'), file = doc_file)
eop(print_mode, doc_file, first = True) eop(print_mode, doc_file, first = True)
# #

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -107,7 +107,7 @@ assembly("box1") {
screw_and_washer(foot_screw(foot), 6); screw_and_washer(foot_screw(foot), 6);
} }
translate_z(height + top_thickness + base_thickness + eps) vflip() translate_z(height + top_thickness + base_thickness + 2 * eps) vflip()
%render() box1_base_stl(); %render() box1_base_stl();
} }

View File

@@ -29,9 +29,10 @@ include <belts.scad>
// //
T5x10_pulley = ["T5x10_pulley", "T5", 10, 15, T5x6, 11.6, 7.9, 7, 5, 19.3, 1.7, 3, 10.7, M3_grub_screw, 1]; T5x10_pulley = ["T5x10_pulley", "T5", 10, 15, T5x6, 11.6, 7.9, 7, 5, 19.3, 1.7, 3, 10.7, M3_grub_screw, 1];
T2p5x16_pulley = ["T2p5x16_pulley", "T2.5", 16, 12.16, T2p5x6, 8, 16, 5.7, 5, 16.0, 1.0, 6, 3.75, M4_grub_screw, 1]; T2p5x16_pulley = ["T2p5x16_pulley", "T2.5", 16, 12.16, T2p5x6, 8, 16, 5.7, 5, 16.0, 1.0, 6, 3.75, M4_grub_screw, 1];
GT2x20um_pulley = ["GT2x20um_pulley", "GT2UM", 20, 12.22, GT2x6, 7.5, 18, 6.5, 5, 18.0, 1.0, 6, 3.75, M3_grub_screw, 2]; GT2x20um_pulley = ["GT2x20um_pulley", "GT2UM", 20, 12.22, GT2x6, 7.5, 18, 6.5, 5, 18.0, 1.0, 6, 3.75, M3_grub_screw, 2]; //Ultimaker
GT2x20ob_pulley = ["GT2x20ob_pulley", "GT2OB", 20, 12.22, GT2x6, 7.5, 16, 5.5, 5, 16.0, 1.0, 6, 3.25, M3_grub_screw, 2]; GT2x20ob_pulley = ["GT2x20ob_pulley", "GT2OB", 20, 12.22, GT2x6, 7.5, 16, 5.5, 5, 16.0, 1.0, 6, 3.25, M3_grub_screw, 2]; //Openbuilds
GT2x12_pulley = ["GT2x12_pulley", "GT2RD", 12, 7.15, GT2x6, 6.5, 12, 5.5, 4, 12.0, 1.0, 4, 3.0, M3_grub_screw, 2]; GT2x16_pulley = ["GT2x16_pulley", "GT2", 16, 9.75, GT2x6, 7.0, 13, 5, 5, 13.0, 1.0,4.5,3.0, M3_grub_screw, 2];
GT2x12_pulley = ["GT2x12_pulley", "GT2RD", 12, 7.15, GT2x6, 6.5, 12, 5.5, 4, 12.0, 1.0, 4, 3.0, M3_grub_screw, 2]; //Robotdigg
GT2x20_toothed_idler = ["GT2x20_toothed_idler", "GT2", 20, 12.22, GT2x6, 6.5, 18, 0, 4, 18.0, 1.0, 0, 0, false, 0]; GT2x20_toothed_idler = ["GT2x20_toothed_idler", "GT2", 20, 12.22, GT2x6, 6.5, 18, 0, 4, 18.0, 1.0, 0, 0, false, 0];
GT2x20_plain_idler = ["GT2x20_plain_idler", "GT2", 0, 12.0, GT2x6, 6.5, 18, 0, 4, 18.0, 1.0, 0, 0, false, 0]; GT2x20_plain_idler = ["GT2x20_plain_idler", "GT2", 0, 12.0, GT2x6, 6.5, 18, 0, 4, 18.0, 1.0, 0, 0, false, 0];
GT2x16_toothed_idler = ["GT2x16_toothed_idler", "GT2", 16, 9.75, GT2x6, 6.5, 14, 0, 3, 14.0, 1.0, 0, 0, false, 0]; GT2x16_toothed_idler = ["GT2x16_toothed_idler", "GT2", 16, 9.75, GT2x6, 6.5, 14, 0, 3, 14.0, 1.0, 0, 0, false, 0];
@@ -42,6 +43,7 @@ pulleys = [T5x10_pulley,
T2p5x16_pulley, T2p5x16_pulley,
GT2x20um_pulley, GT2x20um_pulley,
GT2x20ob_pulley, GT2x20ob_pulley,
GT2x16_pulley,
GT2x12_pulley, GT2x12_pulley,
GT2x20_toothed_idler, GT2x20_toothed_idler,
GT2x20_plain_idler, GT2x20_plain_idler,

View File

@@ -36,6 +36,8 @@ function rocker_bezel(type) = type[10]; //! Bezel width
function rocker_pivot(type) = type[11]; //! Pivot distance from the back of the flange function rocker_pivot(type) = type[11]; //! Pivot distance from the back of the flange
function rocker_button(type) = type[12]; //! How far the button extends from the bezel function rocker_button(type) = type[12]; //! How far the button extends from the bezel
function rocker_spades(type) = type[13]; //! Spade types and positions function rocker_spades(type) = type[13]; //! Spade types and positions
function rocker_size(type) = [rocker_width(type), rocker_height(type), rocker_depth(type)]; //! Width, height, and depth in a vector
function rocker_slot(type) = [rocker_slot_w(type), rocker_slot_h(type)]; //! Rocker slot in a vector
module rocker(type, colour) { //! Draw the specified rocker switch module rocker(type, colour) { //! Draw the specified rocker switch
vitamin(str("rocker(", type[0], "): ", rocker_part(type))); vitamin(str("rocker(", type[0], "): ", rocker_part(type)));
@@ -87,6 +89,6 @@ module rocker(type, colour) { //! Draw the specified rocker switch
} }
} }
module rocker_hole(type, h = 0) //! Make a hole to accept a rocker switch, by default 2D, set h for 3D module rocker_hole(type, h = 0, rounded = true) //! Make a hole to accept a rocker switch, by default 2D, set h for 3D
extrude_if(h) extrude_if(h)
rounded_square([rocker_slot_w(type), rocker_slot_h(type)], 1, center = true); rounded_square([rocker_slot_w(type), rocker_slot_h(type)], rounded ? 1 : 0, center = true);

View File

@@ -295,8 +295,10 @@ module screw_polysink(type, h = 100, alt = false) { //! A countersink hole made
poly_cylinder(r = r, h = lh, center = false); poly_cylinder(r = r, h = lh, center = false);
} }
remainder = h / 2 - layers * layer_height;
if(remainder > 0)
translate_z(layers * layer_height) translate_z(layers * layer_height)
poly_cylinder(r = rmin, h = h / 2 - layers * layer_height, center = false); poly_cylinder(r = rmin, h = remainder, center = false);
} }
} }