1
0
mirror of https://github.com/nophead/NopSCADlib.git synced 2025-09-09 22:51:16 +02:00

Compare commits

..

10 Commits

Author SHA1 Message Date
Chris Palmer
cb30f0c63d Times for parts that no longer exist pruned from build times.
Now shows changes to the total time.
2021-02-06 10:39:39 +00:00
Chris Palmer
4cb324ed37 Merge branch 'martinbudden-rails_rename' 2021-02-03 07:10:27 +00:00
Chris Palmer
eb997aa18c Updated readme for rails. Note interface change. 2021-02-03 07:10:07 +00:00
Chris Palmer
f09343a285 Merge branch 'rails_rename' of https://github.com/martinbudden/NopSCADlib into martinbudden-rails_rename 2021-02-03 06:38:07 +00:00
Chris Palmer
54aab027bd Merge branch 'martinbudden-skr_mini_e3_update' 2021-02-03 06:35:54 +00:00
Chris Palmer
cc61a11602 Updated PCB images. 2021-02-03 06:35:42 +00:00
Chris Palmer
9cf2e9d7c3 Merge branch 'skr_mini_e3_update' of https://github.com/martinbudden/NopSCADlib into martinbudden-skr_mini_e3_update 2021-02-03 06:26:36 +00:00
Martin Budden
f760aaa20a Changed carriage to specify its rail type. 2021-02-02 12:23:03 +00:00
Martin Budden
1c445385b4 Made C version of linear rails and carriages explicit. 2021-02-01 19:21:50 +00:00
Martin Budden
45f3fc275f BTT_SKR_MINI_E3_V2_0 tidy and correction. 2021-02-01 19:19:20 +00:00
10 changed files with 109 additions and 94 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 875 KiB

After

Width:  |  Height:  |  Size: 875 KiB

View File

@@ -2666,11 +2666,11 @@ Linear rails with carriages.
| `carriage_length(type)` | Overall length |
| `carriage_pitch_x(type)` | Screw hole x pitch |
| `carriage_pitch_y(type)` | Screw hole y pitch |
| `carriage_rail(type)` | Rail type |
| `carriage_screw(type)` | Carriage screw type |
| `carriage_width(type)` | Width of carriage |
| `rail_bore(type)` | Counter bore diameter for screw head |
| `rail_bore_depth(type)` | Counter bore depth |
| `rail_carriage(type)` | Carriage type |
| `rail_end(type)` | Minimum distance screw can be from the end |
| `rail_end_screw(type)` | Screw used for ends only (Countersink used for better location) |
| `rail_groove_offset(type)` | Offset of centre of groove from top of rail |
@@ -2686,17 +2686,17 @@ Linear rails with carriages.
|:--- |:--- |
| `carriage_screw_depth(type)` | Carriage thread depth |
| `carriage_size(type)` | Size of carriage |
| `carriage_travel(type, rail_length)` | How far the carriage can travel on a given length rail |
| `rail_holes(type, length)` | Number of holes in a rail given its `length` |
| `rail_screw_height(type, screw)` | Position screw taking into account countersink into counterbored hole |
| `rail_travel(type, length)` | How far the carriage can travel |
### Modules
| Module | Description |
|:--- |:--- |
| `carriage(type, rail, end_colour = grey(20)` | Draw the specified carriage |
| `carriage(type, end_colour = grey(20)` | Draw the specified carriage |
| `carriage_hole_positions(type)` | Position children over screw holes |
| `rail(type, length, colour = grey(90)` | Draw the specified rail |
| `rail_assembly(type, length, pos, carriage_end_colour = grey(20)` | Rail and carriage assembly |
| `rail_assembly(carriage, length, pos, carriage_end_colour = grey(20)` | Rail and carriage assembly |
| `rail_hole_positions(type, length, first = 0, screws = 100, both_ends = true)` | Position children over screw holes |
| `rail_screws(type, length, thickness, screws = 100, index_screws = undef)` | Place screws in the rail |
@@ -2705,8 +2705,7 @@ Linear rails with carriages.
### Vitamins
| Qty | Module call | BOM entry |
| ---:|:--- |:---|
| 1 | `rail(MGN12, 200)` | Linear rail MGN12 x 200mm |
| 1 | `rail(MGN12H, 200)` | Linear rail MGN12H x 200mm |
| 2 | `rail(MGN12, 200)` | Linear rail MGN12 x 200mm |
| 1 | `rail(MGN15, 200)` | Linear rail MGN15 x 200mm |
| 1 | `rail(MGN5, 200)` | Linear rail MGN5 x 200mm |
| 1 | `rail(MGN7, 200)` | Linear rail MGN7 x 200mm |

View File

@@ -72,10 +72,11 @@ def make_parts(target, part_type, parts = None):
#
# Decide which files to make
#
all_parts = bom_to_parts(bom_dir, part_type)
if parts:
targets = list(parts) #copy the list so we dont modify the list passed in
else:
targets = bom_to_parts(bom_dir, part_type)
targets = list(all_parts)
for file in os.listdir(target_dir):
if file.endswith('.' + part_type):
if not file in targets:
@@ -150,4 +151,4 @@ def make_parts(target, part_type, parts = None):
for part in targets:
print("Could not find a module called", part[:-4] + module_suffix, "to make", part)
usage(part_type)
times.print_times()
times.print_times(all_parts)

View File

@@ -52,23 +52,34 @@ def add_time(name, start):
del times[name.lower()]
times[name] = round(time.time() - start, 3)
def print_times():
write_times()
def print_times(files = None):
sorted_times = sorted(times.items(), key=lambda kv: kv[1])
total = 0
old_total = 0
for entry in sorted_times:
colour = Fore.WHITE
key = entry[0]
new = entry[1]
delta = 0
if key in last_times:
old = last_times[key]
delta = new - old
if delta > 0.3:
colour = Fore.RED
if delta < -0.3:
colour = Fore.GREEN
print(colour + "%5.1f %5.1f %s" % (new, delta, key))
total += new
if files and not key in files:
del times[key]
else:
new = entry[1]
delta = 0
colour = Fore.WHITE
if key in last_times:
old = last_times[key]
old_total += old
delta = new - old
if delta > 0.3:
colour = Fore.RED
if delta < -0.3:
colour = Fore.GREEN
print(colour + "%6.1f %5.1f %s" % (new, delta, key))
total += new
write_times()
if sorted_times:
print(Fore.WHITE + "%5.1f" % total)
colour = Fore.WHITE
delta = total - old_total
if delta > 1:
colour = Fore.RED
if delta < -1:
colour = Fore.GREEN
print(colour + "%6.1f %5.1f TOTAL%s" % (total, delta, Fore.WHITE))

View File

@@ -159,6 +159,7 @@ def views(target, do_assemblies = None):
# Find all the scad files
#
main_blurb = None
pngs = []
for dir in source_dirs(bom_dir):
if os.path.isdir(dir):
for filename in os.listdir(dir):
@@ -185,15 +186,21 @@ def views(target, do_assemblies = None):
if not "blurb" in ass:
ass["blurb"] = blurb.scrape_module_blurb(lines[:line_no])
break
if not do_assemblies or real_name in do_assemblies:
#
# Run openscad on the created file
#
dname = deps_name(deps_dir, filename)
for explode in [0, 1]:
#
# Run openscad on the created file
# Generate png name
#
dname = deps_name(deps_dir, filename)
for explode in [0, 1]:
png_name = target_dir + '/' + real_name + '.png'
if not explode:
png_name = png_name.replace('_assembly', '_assembled')
png_name = target_dir + '/' + real_name + '.png'
if not explode:
png_name = png_name.replace('_assembly', '_assembled')
pngs.append(png_name)
if not do_assemblies or real_name in do_assemblies:
changed = check_deps(png_name, dname)
changed = times.check_have_time(changed, png_name)
changed = options.have_changed(changed, png_name)
@@ -403,16 +410,16 @@ def views(target, do_assemblies = None):
#
# Convert to HTML
#
html_name = 'readme.html'
html_name = top_dir + 'readme.html'
t = time.time()
with open(top_dir + html_name, "wt") as html_file:
with open(html_name, "wt") as html_file:
do_cmd(("python -m markdown -x tables -x sane_lists " + doc_name).split(), html_file)
times.add_time(top_dir + html_name, t)
times.print_times()
times.add_time(html_name, t)
times.print_times(pngs + [html_name])
#
# Make the printme.html by replacing empty spans that invisbly mark the page breaks by page break divs.
#
with open(top_dir + 'readme.html', 'rt') as src:
with open(html_name, 'rt') as src:
lines = src.readlines()
i = 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 153 KiB

View File

@@ -26,15 +26,16 @@ sheet = 3;
pos = 1; //[-1 : 0.1 : 1]
module rails()
layout([for(l = rails) carriage_width(rail_carriage(l))], 20)
layout([for(l = carriages) carriage_width(l)], 20)
rotate(-90) {
rail = rails[$i];
carriage = carriages[$i];
rail = carriage_rail(carriage);
length = 200;
screw = rail_screw(rail);
nut = screw_nut(screw);
washer = screw_washer(screw);
rail_assembly(rail, length, pos * rail_travel(rail, length) / 2, $i<2 ? grey(20) : "green", $i<2 ? grey(20) : "red");
rail_assembly(carriage, length, pos * carriage_travel(carriage, length) / 2, $i<2 ? grey(20) : "green", $i<2 ? grey(20) : "red");
rail_screws(rail, length, sheet + nut_thickness(nut, true) + washer_thickness(washer));

View File

@@ -205,37 +205,34 @@ BTT_SKR_MINI_E3_V2_0 = [
grey(30), // color
false, // true if parts should be separate BOM items
[ // hole positions
[ 19.3, -2.89 ],
[ 19.3 + 62.15, -2.89 ],
[ 2.535, -2.89 - 34.98 ],
[ 2.535 + 31.80, -2.89 - 37.63 ],
[ 2.535 + 95.68, -2.89 - 64.47 ]
for (i = [ [0, 0], [62.15, 0] ])
(i + [20.3, -2.89]),
for (i = [ [0, -34.98], [31.80, -37.63], [95.68, -64.47] ])
(i + [2.535, -2.89])
],
[ // components
// cpu
[ 55, 33, 0, "chip", 10, 10, 1, grey(15) ],
// hotend and heated bed
[ 26, 16, 0, "chip", 9.5, 8.5, 4, grey(15) ],
[ 37, 14, 0, "chip", 6, 6, 2.5, grey(15) ],
// driver chips
[ 10.5,-17.5, 0, "chip", 5, 5, 1, grey(15) ],
[ 30.5,-17.5, 0, "chip", 5, 5, 1, grey(15) ],
[ 50.5,-17.5, 0, "chip", 5, 5, 1, grey(15) ],
[ 70.5,-17.5, 0, "chip", 5, 5, 1, grey(15) ],
// heat dissipation under board
[ 43, -17.5, 0, "-block", 85, 8, 0.1, gold ],
[ 40, 16, 0, "-block", 10, 8, 0.1, gold ],
[ 27, 19, 0, "-block", 13,14, 0.1, gold ],
[ 12, 28.5, 0, "-block", 11, 7, 0.1, gold ],
for (x = [10.5, 30.5, 50.5, 70.5])
[ x, -17.5, 0, "chip", 5, 5, 1, grey(15) ],
// mock up heat sinks over the chips
[ 10.5, -17.5, 0, "chip", 9, 8.5, 2, "DeepSkyBlue" ],
for(x = [10.5], y = [-4,-2,0,2,4]) [ x, -17.5 + y, 0, "chip", 9, 0.75, 11, "DeepSkyBlue" ],
[ 30.5, -17.5, 0, "chip", 9, 8.5, 2, "DeepSkyBlue" ],
for(x = [30.5], y = [-4,-2,0,2,4]) [ x, -17.5 + y, 0, "chip", 9, 0.75, 11, "DeepSkyBlue" ],
[ 50.5, -17.5, 0, "chip", 9, 8.5, 2, "DeepSkyBlue" ],
for(x = [50.5], y = [-4,-2,0,2,4]) [ x, -17.5 + y, 0, "chip", 9, 0.75, 11, "DeepSkyBlue" ],
[ 70.5, -17.5, 0, "chip", 9, 8.5, 2, "DeepSkyBlue" ],
for(x = [70.5], y = [-4,-2,0,2,4]) [ x, -17.5 + y, 0, "chip", 9, 0.75, 11, "DeepSkyBlue" ],
for (x = [10.5, 30.5, 50.5, 70.5])
[ x, -17.5, 0, "block", 9, 8.5, 2, "DeepSkyBlue" ],
for(x = [10.5, 30.5, 50.5, 70.5], y = [-4,-2,0,2,4])
[ x, -17.5 + y, 0, "block", 9, 0.75, 11, "DeepSkyBlue" ],
// heat dissipation for drivers under board
[ 43, -17.5, 0, "-block", 85, 8, 0.1, gold ],
// heated bed
[ 26, 16, 0, "chip", 9.5, 8.5, 4, grey(15) ],
[ 27, 19, 0, "-block", 13, 14, 0.1, gold ],
// hotend
[ 37, 14, 0, "chip", 6, 6, 2.5, grey(15) ],
[ 40, 16, 0, "-block", 10, 8, 0.1, gold ],
// voltage regulator heat dissipation
[ 12, 28.5, 0, "-block", 11, 7, 0.1, gold ],
// terminals
[ 5.25, 5.3, 180, "gterm", gt_5x17, 2, undef, grey(20) ],

View File

@@ -31,13 +31,11 @@ function rail_bore(type) = type[5]; //! Counter bore diameter for screw
function rail_hole(type) = type[6]; //! Screw hole diameter
function rail_bore_depth(type) = type[7]; //! Counter bore depth
function rail_screw(type) = type[8]; //! Screw type
function rail_carriage(type) = type[9]; //! Carriage type
function rail_end_screw(type) = type[10]; //! Screw used for ends only (Countersink used for better location)
function rail_groove_offset(type)=type[11]; //! Offset of centre of groove from top of rail
function rail_groove_width(type)=type[12]; //! Groove width
function rail_end_screw(type) = type[9]; //! Screw used for ends only (Countersink used for better location)
function rail_groove_offset(type)=type[10]; //! Offset of centre of groove from top of rail
function rail_groove_width(type)=type[11]; //! Groove width
function rail_screw_height(type, screw) = rail_height(type) - rail_bore_depth(type) + screw_head_depth(screw, rail_hole(type)); //! Position screw taking into account countersink into counterbored hole
function rail_travel(type, length) = length - carriage_length(rail_carriage(type)); //! How far the carriage can travel
function carriage_length(type) = type[0]; //! Overall length
function carriage_block_length(type) = type[1]; //! Length of the metal part
@@ -48,7 +46,9 @@ function carriage_clearance(type) = type[4]; //! Gap under the carriage
function carriage_pitch_x(type) = type[5]; //! Screw hole x pitch
function carriage_pitch_y(type) = type[6]; //! Screw hole y pitch
function carriage_screw(type) = type[7]; //! Carriage screw type
function carriage_rail(type) = type[8]; //! Rail type
function carriage_screw_depth(type) = 2 * screw_radius(carriage_screw(type)); //! Carriage thread depth
function carriage_travel(type, rail_length) = rail_length - carriage_length(type); //! How far the carriage can travel on a given length rail
function rail_holes(type, length) = //! Number of holes in a rail given its `length`
floor((length - 2 * rail_end(type)) / rail_pitch(type)) + 1;
@@ -73,7 +73,7 @@ module carriage_hole_positions(type) { //! Position children over screw holes
children();
}
module carriage(type, rail, end_colour = grey(20), wiper_colour = grey(20)) { //! Draw the specified carriage
module carriage(type, end_colour = grey(20), wiper_colour = grey(20)) { //! Draw the specified carriage
total_l = carriage_length(type);
block_l = carriage_block_length(type);
block_w = carriage_width(type);
@@ -85,9 +85,9 @@ module carriage(type, rail, end_colour = grey(20), wiper_colour = grey(20)) { //
screw_depth = carriage_screw_depth(type);
module cutout() {
w = rail_width(rail) + 0.4;
w = rail_width(carriage_rail(type)) + 0.4;
translate([-w / 2, 0])
square([w , rail_height(rail) + 0.2]);
square([w , rail_height(carriage_rail(type)) + 0.2]);
}
color(grey(90)) {
@@ -179,11 +179,11 @@ module rail(type, length, colour = grey(90), use_polycircles = false) { //! Draw
}
}
module rail_assembly(type, length, pos, carriage_end_colour = grey(20), carriage_wiper_colour = grey(20)) { //! Rail and carriage assembly
rail(type, length);
module rail_assembly(carriage, length, pos, carriage_end_colour = grey(20), carriage_wiper_colour = grey(20)) { //! Rail and carriage assembly
rail(carriage_rail(carriage), length);
translate([pos, 0])
carriage(rail_carriage(type), type, carriage_end_colour, carriage_wiper_colour);
carriage(carriage, carriage_end_colour, carriage_wiper_colour);
}
module rail_screws(type, length, thickness, screws = 100, index_screws = undef) { //! Place screws in the rail

View File

@@ -17,30 +17,29 @@
// If not, see <https://www.gnu.org/licenses/>.
//
//
// Carriages
//
// L L1 W H H1 C B
MGN5_carriage = [ 16, 9.6, 12, 6, 1.5, 0, 8 , M2_cap_screw ];
MGN7_carriage = [ 23, 14.3, 17, 8, 1.5, 8, 12, M2_cap_screw ];
MGN9_carriage = [ 29.7, 20.8, 20, 10, 2, 10, 15, M3_cap_screw ];
MGN12_carriage = [ 34.7, 21.7, 27, 13, 3, 15, 20, M3_cap_screw ];
MGN12H_carriage= [ 45.4, 32.4, 27, 13, 3, 20, 20, M3_cap_screw ];
MGN15_carriage = [ 43.3, 27.7, 32, 16, 4, 20, 25, M3_cap_screw ];
SSR15_carriage = [ 40.3, 23.3, 34, 24, 4.5, 0, 26, M4_cap_screw ];
//
// Rails
//
// Wr Hr E P D d h go gw
MGN5 = [ "MGN5", 5, 3.6, 5, 15, 3.6, 2.4, 0.8, M2_cs_cap_screw, M2_cs_cap_screw, 1, 1 ]; // Screw holes too small for M2 heads
MGN7 = [ "MGN7", 7, 5, 5, 15, 4.3, 2.4, 2.6, M2_cap_screw, M2_cs_cap_screw, 1.5, 1.5 ];
MGN9 = [ "MGN9", 9, 6, 7.5, 20, 6.0, 3.5, 3.5, M3_cap_screw, M3_cs_cap_screw, 1.5, 1.5 ];
MGN12 =[ "MGN12", 12, 8, 10, 25, 6.0, 3.5, 4.5, M3_cap_screw, M3_cs_cap_screw, 2.25, 2.75];
MGN15 =[ "MGN15", 15, 10, 10, 40, 6.0, 3.5, 5.0, M3_cap_screw, M3_cs_cap_screw, 2.5, 2.75 ];
SSR15= [ "SSR15", 15, 12.5, 10, 60, 7.5, 4.5, 5.3, M4_cap_screw, M4_cs_cap_screw, 2.5, 2.75 ];
//
// Wr Hr E P D d h go gw
MGN5 = [ "MGN5", 5, 3.6, 5, 15, 3.6, 2.4, 0.8, M2_cs_cap_screw, MGN5_carriage, M2_cs_cap_screw, 1, 1 ]; // Screw holes too small for M2 heads
MGN7 = [ "MGN7", 7, 5, 5, 15, 4.3, 2.4, 2.6, M2_cap_screw, MGN7_carriage, M2_cs_cap_screw, 1.5, 1.5 ];
MGN9 = [ "MGN9", 9, 6, 7.5, 20, 6.0, 3.5, 3.5, M3_cap_screw, MGN9_carriage, M3_cs_cap_screw, 1.5, 1.5 ];
MGN12= [ "MGN12", 12, 8, 10, 25, 6.0, 3.5, 4.5, M3_cap_screw, MGN12_carriage, M3_cs_cap_screw, 2.25, 2.75 ];
MGN12H=[ "MGN12H",12, 8, 10, 25, 6.0, 3.5, 4.5, M3_cap_screw, MGN12H_carriage,M3_cs_cap_screw, 2.25, 2.75];
MGN15= [ "MGN15", 15, 10, 10, 40, 6.0, 3.5, 5.0, M3_cap_screw, MGN15_carriage, M3_cs_cap_screw, 2.5, 2.75 ];
SSR15= [ "SSR15", 15, 12.5,10, 60, 7.5, 4.5, 5.3, M4_cap_screw, SSR15_carriage, M4_cs_cap_screw, 2.5, 2.75 ];
// Carriages
//
// L L1 W H H1 C B
MGN5_carriage = [ 16, 9.6, 12, 6, 1.5, 0, 8, M2_cap_screw, MGN5 ];
MGN7C_carriage = [ 23, 14.3, 17, 8, 1.5, 8, 12, M2_cap_screw, MGN7 ];
MGN9C_carriage = [ 29.7, 20.8, 20, 10, 2, 10, 15, M3_cap_screw, MGN9 ];
MGN12C_carriage = [ 34.7, 21.7, 27, 13, 3, 15, 20, M3_cap_screw, MGN12 ];
MGN12H_carriage = [ 45.4, 32.4, 27, 13, 3, 20, 20, M3_cap_screw, MGN12 ];
MGN15C_carriage = [ 43.3, 27.7, 32, 16, 4, 20, 25, M3_cap_screw, MGN15 ];
SSR15_carriage = [ 40.3, 23.3, 34, 24, 4.5, 0, 26, M4_cap_screw, SSR15 ];
rails = [MGN5, MGN7, MGN9, MGN12, MGN12H, MGN15, SSR15];
carriages = [MGN5_carriage, MGN7C_carriage, MGN9C_carriage, MGN12C_carriage, MGN12H_carriage, MGN15C_carriage, SSR15_carriage];
use <rail.scad>