Multicolor test

This commit is contained in:
Luke Hubmayer-Werner 2025-01-04 17:16:21 +10:30
parent e7f4df9099
commit d1661731ae
3 changed files with 58 additions and 13 deletions

View File

@ -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"; colour_1 = "blue";
id_line_0 = "PLA"; id_line_0 = "PLA";
id_line_1 = "1β"; 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); 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() { module MultiColourNeck() {
color(colour_1) MyNeck(engrave_markers=true, remove_fret_layers=true); if (render_first_colour) color(colour_1) MyNeck(engrave_markers=true, remove_fret_layers=true);
color("white") MyNeck(fret_layers_only=true); if (render_second_colour) color("white") MyNeck(fret_layers_only=true);
color("green") MyNeck(side_markers_only=true); if (render_second_colour) color("green") MyNeck(side_markers_only=true);
color("yellow") MyNeck(inlays_only=true); if (render_second_colour) color("yellow") MyNeck(inlays_only=true);
} }
reinforcing_tube_positions = flatten([ reinforcing_tube_positions = flatten([
@ -429,7 +429,7 @@ module Nylon6String() {
[i*21.5, -40+280, -4], [i*21.5, -40+280, -4],
[i*17, -40+280, -12], [i*17, -40+280, -12],
// Bridgeside reinforcement // 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) { 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; 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) { module IDText(thickness = 0.2, inset = 0, extra_line=str("F", to_fret)) {
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) {
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); 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(){ render() difference(){
NeckFragment(from_fret, to_fret, include_from_fret=include_from_fret); 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();
} }
color("red") IDText(inset=0.0001); if (render_first_colour && !include_from_fret) color("red") BackIDText();
} }
RealPiece(0, 8, include_from_fret=true); // 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(from_fret, to_fret, include_from_fret = (from_fret==0));
// RealPiece(0, 8, include_from_fret=true);
// RealPiece(8, 21); // RealPiece(8, 21);
%translate([100, 0, 0]) RealPiece(8, 21); %translate([100, 0, 0]) RealPiece(8, 21);
@ -538,7 +553,8 @@ module Nylon6String() {
// bridge(); // bridge();
Guitar_Scale_Length_mm = Classical_Short_Scale_mm; Guitar_Scale_Length_mm = Classical_Short_Scale_mm;
Nylon6String(); // Nylon6String(render_second_colour=false);
// Nylon6String(render_first_colour=false);
// difference() { // difference() {
// translate([-15, -60, 0]) cube([50, 120, 8]); // translate([-15, -60, 0]) cube([50, 120, 8]);

4
CFTubesNylon.scad Normal file
View File

@ -0,0 +1,4 @@
include <CFTubes.scad>
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);

25
compile_nylon.py Normal file
View File

@ -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()