Initial import

This commit is contained in:
Ian Gulliver
2026-07-12 11:42:42 -07:00
commit ff7040a440
77 changed files with 760 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+136
View File
@@ -0,0 +1,136 @@
only = "*";
color = "Black";
sku = "FibreX";
type = "ABS+GF";
manuf = "3DXTECH";
layer_height = 0.1;
swatches = 8;
swatch_width = 10;
card_width = swatches * swatch_width;
if (only == "*" || only == "c") {
difference() {
color("blue")
card();
label();
}
}
if (only == "*" || only == "l") {
color("magenta")
label();
}
if (only == "*" || only == "b") {
difference() {
translate([0, 0, 0])
cube([card_width, 15, 3]);
black();
}
}
if (only == "*" || only == "w") {
difference() {
translate([0, 15, 0])
cube([card_width, 15, 3]);
white();
}
}
if (only == "b2") {
black();
}
if (only == "w2") {
white();
}
module label() {
translate([0, 0, 2])
_label();
translate([card_width, 0, 1])
rotate([0, 180, 0])
_label();
}
module _label() {
translate([card_width / 2, 48, 0])
linear_extrude(1.01)
text(text=color, size=5, font="JetBrains Mono:style=Medium", halign="center");
translate([card_width * 12 / 64, 41, 0])
linear_extrude(1.01)
text(text=manuf, size=3.5, font="JetBrains Mono:style=Medium", halign="center");
translate([card_width * 52 / 64, 41, 0])
linear_extrude(1.01)
text(text=sku, size=3.5, font="JetBrains Mono:style=Medium", halign="center");
translate([card_width / 2, 40.75, 0])
linear_extrude(1.01)
text(text=type, size=4, font="JetBrains Mono:style=Medium", halign="center");
for (i = [0:swatches-1]) {
t = str(layer_height * (i+1));
translate([5 + (i * swatch_width), 33, 0])
linear_extrude(1.01)
text(text=str(t[1], t[2]), size=2.5, font="JetBrains Mono:style=Medium", halign="center");
}
}
module card() {
difference() {
hull() {
cube([card_width, 55, 3]);
for (x = [0, card_width]) {
for (y = [0, 55]) {
translate([x, y, 0])
cylinder(h=3, d=4, $fn=100);
}
}
}
translate([0, 0, -0.01])
cube([card_width, 15, 3.02]);
translate([0, 15, -0.01])
cube([card_width, 15, 3.01]);
}
black();
white();
}
module black() {
translate([0, 0, 3.0])
stack();
translate([card_width, 0, 0])
rotate([0, 180, 0])
stack();
}
module white() {
translate([0, 15, 3])
stack();
translate([card_width, 15, 0])
rotate([0, 180, 0])
stack();
}
module stack() {
for (i = [0:swatches]) {
color("teal", alpha=0.3)
translate([swatch_width * i, 0, 0 - ((i+1) * layer_height)])
cube([swatch_width * (swatches - i), 15, layer_height]);
}
}
+135
View File
@@ -0,0 +1,135 @@
// * c l b w
only = "w";
color = "Red";
sku = "40200";
type = "ABS";
manuf = "Bambu";
top = "Ironed";
bottom = "Engineering";
layer_height = 0.12;
nozzle = 0.2;
card_height = 3;
swatches = 10;
swatch_width = 10;
swatch_height = 10;
e = 0.02;
card_width = swatches * swatch_width;
if (only == "*" || only == "c") {
difference() {
color("blue", alpha=0.3)
card();
label();
}
}
if (only == "*" || only == "l") {
color("magenta")
label();
}
if (only == "*" || only == "b") {
black();
}
if (only == "*" || only == "w") {
white();
}
module label() {
translate([0, 0, 2])
_label(top);
translate([card_width, 0, 1])
rotate([0, 180, 0])
_label(bottom);
}
module _label(surface) {
l1 = 48;
l2 = 41;
l3 = 34;
l = card_width * 12 / 64;
c = card_width / 2;
r = card_width * 52 / 64;
translate([c, l1, 0])
linear_extrude(1.01)
text(text=color, size=5, font="JetBrains Mono:style=Medium", halign="center");
translate([l, l2, 0])
linear_extrude(1.01)
text(text=manuf, size=4, font="JetBrains Mono:style=Medium", halign="center");
translate([c, l2 - 0.25, 0])
linear_extrude(1.01)
text(text=type, size=4, font="JetBrains Mono:style=Medium", halign="center");
translate([r, l2, 0])
linear_extrude(1.01)
text(text=sku, size=4, font="JetBrains Mono:style=Medium", halign="center");
translate([l, l3, 0])
linear_extrude(1.01)
text(text=str("L ", layer_height), size=4, font="JetBrains Mono:style=Medium", halign="center");
translate([c, l3, 0])
linear_extrude(1.01)
text(text=surface, size=4, font="JetBrains Mono:style=Medium", halign="center");
translate([r, l3, 0])
linear_extrude(1.01)
text(text=str("N ", nozzle), size=4, font="JetBrains Mono:style=Medium", halign="center");
}
module card() {
difference() {
hull() {
for (x = [0, card_width]) {
for (y = [0, 55]) {
translate([x, y, 0])
cylinder(h=card_height, d=4, $fn=100);
}
}
}
translucent();
white();
black();
}
}
module black() {
color("black")
stack();
}
module white() {
translate([0, swatch_height, 0])
color("white")
stack();
}
module translucent() {
translate([0, swatch_height * 2 + (nozzle * 2), 0])
for (i = [0:swatches-1]) {
translate([swatch_width * i, 0, 0])
translate([0, 0, (i + 1) * layer_height])
cube([swatch_width, swatch_height, card_height - (i * layer_height)]);
}
}
module stack() {
for (i = [0:swatches-1]) {
translate([swatch_width * i, 0, 0])
color("black")
translate([0, 0, e + (swatches - i) * layer_height])
cube([swatch_width, swatch_height, card_height - e - ((swatches + 1) * layer_height)]);
}
}