From d1661731ae92fcc9583802d5e7042d1a9293a23f Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Sat, 4 Jan 2025 17:16:21 +1030 Subject: [PATCH] Multicolor test --- CFTubes.scad | 42 +++++++++++++++++++++++++++++------------- CFTubesNylon.scad | 4 ++++ compile_nylon.py | 25 +++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 13 deletions(-) create mode 100644 CFTubesNylon.scad create mode 100644 compile_nylon.py diff --git a/CFTubes.scad b/CFTubes.scad index d9e0e75..3987933 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -379,7 +379,7 @@ module bridge(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_t } } -module Nylon6String() { +module Nylon6String(render_first_colour=true, render_second_colour=true, from_fret=0, to_fret=1) { colour_1 = "blue"; id_line_0 = "PLA"; id_line_1 = "1β"; @@ -416,10 +416,10 @@ module Nylon6String() { render() neck(num_frets=num_frets, num_strings=num_strings, string_margin=string_margin, string_spacing=string_spacing, scallop_depth=scallop_depth, target_neck_thickness=target_neck_thickness, target_neck_thickness_additional_points=target_neck_thickness_additional_points, inlays_only=inlays_only, side_markers_only=side_markers_only, fret_layers_only=fret_layers_only, engrave_markers=engrave_markers, remove_fret_layers=remove_fret_layers); } module MultiColourNeck() { - color(colour_1) MyNeck(engrave_markers=true, remove_fret_layers=true); - color("white") MyNeck(fret_layers_only=true); - color("green") MyNeck(side_markers_only=true); - color("yellow") MyNeck(inlays_only=true); + if (render_first_colour) color(colour_1) MyNeck(engrave_markers=true, remove_fret_layers=true); + if (render_second_colour) color("white") MyNeck(fret_layers_only=true); + if (render_second_colour) color("green") MyNeck(side_markers_only=true); + if (render_second_colour) color("yellow") MyNeck(inlays_only=true); } reinforcing_tube_positions = flatten([ @@ -429,7 +429,7 @@ module Nylon6String() { [i*21.5, -40+280, -4], [i*17, -40+280, -12], // Bridgeside reinforcement - [i*16, -40, -7], + [i*16, -40, -8], ] ], [ @@ -486,17 +486,32 @@ module Nylon6String() { module RealPiece(from_fret, to_fret, include_from_fret=false) { midpoint = (fret_scale_length(from_fret) - fret_scale_length(to_fret) + (include_from_fret ? fret_width : 0))/2; - module IDText(thickness = 0.2, inset = 0) { - for (ra = [[0,0,0], [0,0,180]]) rotate_around(ra, [0,midpoint,0]) - translate([0,0,-9]) rotate([-90,180,180]) translate([0,0,-thickness-inset]) linear_extrude(thickness) text(str(id_line_0, id_line_1), size=2.5, halign="center", valign="center", $fn=100); + module IDText(thickness = 0.2, inset = 0, extra_line=str("F", to_fret)) { + translate([0,0,-9]) rotate([-90,180,180]) translate([0,0,-thickness-inset]) linear_extrude(thickness) { + text(str(id_line_0, id_line_1), size=2.5, halign="center", valign="center", $fn=100); + translate([0,-3]) text(extra_line, size=2.5, halign="center", valign="center", $fn=100); + } + } + module BackIDText(thickness = 0.2, inset = 0) { + rotate_around([0,0,180], [0,midpoint,0]) + IDText(thickness, inset, str("F", from_fret)); } render() difference(){ NeckFragment(from_fret, to_fret, include_from_fret=include_from_fret); - color("red") IDText(); + // Subtract from frets + if (render_second_colour) color("red") { + IDText(); + if (include_from_fret) BackIDText(); + } + if (render_first_colour && !include_from_fret) color("red") BackIDText(); } - color("red") IDText(inset=0.0001); + // color("red") IDText(inset=0.0001); + if (render_first_colour) color(colour_1) IDText(); + if (render_first_colour && include_from_fret) color(colour_1) BackIDText(); + if (render_second_colour && !include_from_fret) color("red") BackIDText(); } - RealPiece(0, 8, include_from_fret=true); + RealPiece(from_fret, to_fret, include_from_fret = (from_fret==0)); + // RealPiece(0, 8, include_from_fret=true); // RealPiece(8, 21); %translate([100, 0, 0]) RealPiece(8, 21); @@ -538,7 +553,8 @@ module Nylon6String() { // bridge(); Guitar_Scale_Length_mm = Classical_Short_Scale_mm; -Nylon6String(); +// Nylon6String(render_second_colour=false); +// Nylon6String(render_first_colour=false); // difference() { // translate([-15, -60, 0]) cube([50, 120, 8]); diff --git a/CFTubesNylon.scad b/CFTubesNylon.scad new file mode 100644 index 0000000..8fb1b23 --- /dev/null +++ b/CFTubesNylon.scad @@ -0,0 +1,4 @@ +include +Guitar_Scale_Length_mm = Classical_Short_Scale_mm; +Nylon6String(from_fret=F0, to_fret=F1, render_second_colour=false); +Nylon6String(from_fret=F0, to_fret=F1, render_first_colour=false); diff --git a/compile_nylon.py b/compile_nylon.py new file mode 100644 index 0000000..215fcde --- /dev/null +++ b/compile_nylon.py @@ -0,0 +1,25 @@ +from subprocess import Popen +import multiprocessing +# import subprocess + +frets = list(range(22)) +fret_pairs = list(zip(frets, frets[1:])) + list(zip(frets, frets[2:])) #+ list(zip(frets, frets[3:])) + +def run_openscad(frets): + i, j = frets + p = Popen(["openscad", "--backend=manifold", "--enable=all", "-o", f"output/nylon6_{i}_{j}.3mf", "-D", f"F0={i}", "-D", f"F1={j}", "CFTubesNylon.scad"]) + p.wait() + +def main(): + print("Compiling .3mf files for fret pairs: ", fret_pairs) + # processes = [Popen(["openscad", "--backend=manifold", "--enable=all", "-o", f"output/nylon6_{i}_{j}.3mf", "-D", f"F0={i}", "-D", f"F1={j}", "CFTubesNylon.scad"]) for (i,j) in fret_pairs] + # for p in processes: + # p.wait() + with multiprocessing.Pool(2) as p: + for result in p.imap_unordered(run_openscad, fret_pairs): + pass + + print("Finished compiling!") + +if __name__ == '__main__': + main()