Compare commits
2 Commits
928065c2ef
...
bf90a512ef
| Author | SHA1 | Date | |
|---|---|---|---|
| bf90a512ef | |||
| 1136d03ffb |
29
.gitea/workflows/build.yaml
Normal file
29
.gitea/workflows/build.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
name: deploy demo to Hetzner
|
||||
on:
|
||||
push:
|
||||
permissions:
|
||||
contents: read
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: install tools
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y openscad prusa-slicer build-essential
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs >rustup.sh
|
||||
sh rustup.sh -y
|
||||
- name: render models
|
||||
run: |
|
||||
cd renderer && cargo run
|
||||
./render.sh
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: bakjes
|
||||
path: |
|
||||
stl/**
|
||||
bakje/**
|
||||
grid/**
|
||||
overwrite: true
|
||||
20845
bakje/1x1/1-1h0m.gcode
20845
bakje/1x1/1-1h0m.gcode
File diff suppressed because it is too large
Load Diff
235765
bakje/1x1/12-5h56m.gcode
235765
bakje/1x1/12-5h56m.gcode
File diff suppressed because it is too large
Load Diff
313303
bakje/1x1/16-7h55m.gcode
313303
bakje/1x1/16-7h55m.gcode
File diff suppressed because it is too large
Load Diff
40706
bakje/1x1/2-1h13m.gcode
40706
bakje/1x1/2-1h13m.gcode
File diff suppressed because it is too large
Load Diff
79588
bakje/1x1/4-1h58m.gcode
79588
bakje/1x1/4-1h58m.gcode
File diff suppressed because it is too large
Load Diff
118699
bakje/1x1/6-2h57m.gcode
118699
bakje/1x1/6-2h57m.gcode
File diff suppressed because it is too large
Load Diff
176962
bakje/1x1/9-4h27m.gcode
176962
bakje/1x1/9-4h27m.gcode
File diff suppressed because it is too large
Load Diff
25195
bakje/1x2/1-1h9m.gcode
25195
bakje/1x2/1-1h9m.gcode
File diff suppressed because it is too large
Load Diff
49546
bakje/1x2/2-1h37m.gcode
49546
bakje/1x2/2-1h37m.gcode
File diff suppressed because it is too large
Load Diff
97301
bakje/1x2/4-3h8m.gcode
97301
bakje/1x2/4-3h8m.gcode
File diff suppressed because it is too large
Load Diff
144849
bakje/1x2/6-4h41m.gcode
144849
bakje/1x2/6-4h41m.gcode
File diff suppressed because it is too large
Load Diff
192465
bakje/1x2/8-6h14m.gcode
192465
bakje/1x2/8-6h14m.gcode
File diff suppressed because it is too large
Load Diff
29180
bakje/1x3/1-1h20m.gcode
29180
bakje/1x3/1-1h20m.gcode
File diff suppressed because it is too large
Load Diff
57533
bakje/1x3/2-2h8m.gcode
57533
bakje/1x3/2-2h8m.gcode
File diff suppressed because it is too large
Load Diff
85401
bakje/1x3/3-3h13m.gcode
85401
bakje/1x3/3-3h13m.gcode
File diff suppressed because it is too large
Load Diff
113817
bakje/1x3/4-4h18m.gcode
113817
bakje/1x3/4-4h18m.gcode
File diff suppressed because it is too large
Load Diff
33672
bakje/1x4/1-1h31m.gcode
33672
bakje/1x4/1-1h31m.gcode
File diff suppressed because it is too large
Load Diff
66087
bakje/1x4/2-2h43m.gcode
66087
bakje/1x4/2-2h43m.gcode
File diff suppressed because it is too large
Load Diff
130399
bakje/1x4/4-5h28m.gcode
130399
bakje/1x4/4-5h28m.gcode
File diff suppressed because it is too large
Load Diff
25848
bakje/2x1/1-1h10m.gcode
25848
bakje/2x1/1-1h10m.gcode
File diff suppressed because it is too large
Load Diff
50597
bakje/2x1/2-1h40m.gcode
50597
bakje/2x1/2-1h40m.gcode
File diff suppressed because it is too large
Load Diff
99198
bakje/2x1/4-3h15m.gcode
99198
bakje/2x1/4-3h15m.gcode
File diff suppressed because it is too large
Load Diff
148570
bakje/2x1/6-4h51m.gcode
148570
bakje/2x1/6-4h51m.gcode
File diff suppressed because it is too large
Load Diff
197515
bakje/2x1/8-6h27m.gcode
197515
bakje/2x1/8-6h27m.gcode
File diff suppressed because it is too large
Load Diff
34078
bakje/2x2/1-1h31m.gcode
34078
bakje/2x2/1-1h31m.gcode
File diff suppressed because it is too large
Load Diff
67202
bakje/2x2/2-2h32m.gcode
67202
bakje/2x2/2-2h32m.gcode
File diff suppressed because it is too large
Load Diff
132622
bakje/2x2/4-5h3m.gcode
132622
bakje/2x2/4-5h3m.gcode
File diff suppressed because it is too large
Load Diff
42363
bakje/2x3/1-1h52m.gcode
42363
bakje/2x3/1-1h52m.gcode
File diff suppressed because it is too large
Load Diff
83843
bakje/2x3/2-3h27m.gcode
83843
bakje/2x3/2-3h27m.gcode
File diff suppressed because it is too large
Load Diff
50616
bakje/2x4/1-2h14m.gcode
50616
bakje/2x4/1-2h14m.gcode
File diff suppressed because it is too large
Load Diff
100165
bakje/2x4/2-4h22m.gcode
100165
bakje/2x4/2-4h22m.gcode
File diff suppressed because it is too large
Load Diff
30405
bakje/3x1/1-1h21m.gcode
30405
bakje/3x1/1-1h21m.gcode
File diff suppressed because it is too large
Load Diff
59444
bakje/3x1/2-2h13m.gcode
59444
bakje/3x1/2-2h13m.gcode
File diff suppressed because it is too large
Load Diff
88397
bakje/3x1/3-3h21m.gcode
88397
bakje/3x1/3-3h21m.gcode
File diff suppressed because it is too large
Load Diff
117236
bakje/3x1/4-4h29m.gcode
117236
bakje/3x1/4-4h29m.gcode
File diff suppressed because it is too large
Load Diff
42976
bakje/3x2/1-1h53m.gcode
42976
bakje/3x2/1-1h53m.gcode
File diff suppressed because it is too large
Load Diff
84892
bakje/3x2/2-3h30m.gcode
84892
bakje/3x2/2-3h30m.gcode
File diff suppressed because it is too large
Load Diff
55258
bakje/3x3/1-2h26m.gcode
55258
bakje/3x3/1-2h26m.gcode
File diff suppressed because it is too large
Load Diff
68083
bakje/3x4/1-3h0m.gcode
68083
bakje/3x4/1-3h0m.gcode
File diff suppressed because it is too large
Load Diff
34776
bakje/4x1/1-1h33m.gcode
34776
bakje/4x1/1-1h33m.gcode
File diff suppressed because it is too large
Load Diff
68183
bakje/4x1/2-2h49m.gcode
68183
bakje/4x1/2-2h49m.gcode
File diff suppressed because it is too large
Load Diff
134706
bakje/4x1/4-5h41m.gcode
134706
bakje/4x1/4-5h41m.gcode
File diff suppressed because it is too large
Load Diff
51513
bakje/4x2/1-2h16m.gcode
51513
bakje/4x2/1-2h16m.gcode
File diff suppressed because it is too large
Load Diff
102076
bakje/4x2/2-4h26m.gcode
102076
bakje/4x2/2-4h26m.gcode
File diff suppressed because it is too large
Load Diff
68223
bakje/4x3/1-3h1m.gcode
68223
bakje/4x3/1-3h1m.gcode
File diff suppressed because it is too large
Load Diff
84793
bakje/4x4/1-3h50m.gcode
84793
bakje/4x4/1-3h50m.gcode
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
30
gf_sewing_spools.scad
Normal file
30
gf_sewing_spools.scad
Normal file
@ -0,0 +1,30 @@
|
||||
include <gridfinity.scad>
|
||||
|
||||
module gf_sewing_spools() {
|
||||
difference() {
|
||||
gf_bakje([2, 2, 4], mode=GF_BAKJE_MODE_PARFILL, fill_dis=6);
|
||||
for(i = [-1,0,+1])
|
||||
translate([-(62+2+12)/2, i*24, 11+6])
|
||||
rotate([0, 90]) {
|
||||
cylinder(h = 62, d = 24);
|
||||
translate([0, 0, 62+2])
|
||||
cylinder(h = 12, d = 24);
|
||||
}
|
||||
for(i = [-1,+1])
|
||||
translate([0, i*12, 19])
|
||||
scale([1, 9, 12])
|
||||
rotate([45, 0]) {
|
||||
cube([100, 1, 1], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
%for(i = [-1,0,+1])
|
||||
translate([-(62+2+12)/2+1, i*24, 11+6])
|
||||
rotate([0, 90]) {
|
||||
cylinder(h = 60, d = 20);
|
||||
translate([0, 0, 62+2])
|
||||
cylinder(h = 11, d = 20);
|
||||
}
|
||||
}
|
||||
|
||||
gf_sewing_spools();
|
||||
4138
grid/1x1/1-8m.gcode
4138
grid/1x1/1-8m.gcode
File diff suppressed because it is too large
Load Diff
45746
grid/1x1/12-1h9m.gcode
45746
grid/1x1/12-1h9m.gcode
File diff suppressed because it is too large
Load Diff
60812
grid/1x1/16-1h32m.gcode
60812
grid/1x1/16-1h32m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/1x1/2-13m.gcode
8058
grid/1x1/2-13m.gcode
File diff suppressed because it is too large
Load Diff
15622
grid/1x1/4-24m.gcode
15622
grid/1x1/4-24m.gcode
File diff suppressed because it is too large
Load Diff
23164
grid/1x1/6-35m.gcode
23164
grid/1x1/6-35m.gcode
File diff suppressed because it is too large
Load Diff
34439
grid/1x1/9-52m.gcode
34439
grid/1x1/9-52m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/1x2/1-8m.gcode
4138
grid/1x2/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/1x2/2-13m.gcode
8058
grid/1x2/2-13m.gcode
File diff suppressed because it is too large
Load Diff
15622
grid/1x2/4-24m.gcode
15622
grid/1x2/4-24m.gcode
File diff suppressed because it is too large
Load Diff
23164
grid/1x2/6-35m.gcode
23164
grid/1x2/6-35m.gcode
File diff suppressed because it is too large
Load Diff
30679
grid/1x2/8-46m.gcode
30679
grid/1x2/8-46m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/1x3/1-8m.gcode
4138
grid/1x3/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/1x3/2-13m.gcode
8058
grid/1x3/2-13m.gcode
File diff suppressed because it is too large
Load Diff
11878
grid/1x3/3-18m.gcode
11878
grid/1x3/3-18m.gcode
File diff suppressed because it is too large
Load Diff
15622
grid/1x3/4-24m.gcode
15622
grid/1x3/4-24m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/1x4/1-8m.gcode
4138
grid/1x4/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/1x4/2-13m.gcode
8058
grid/1x4/2-13m.gcode
File diff suppressed because it is too large
Load Diff
15622
grid/1x4/4-24m.gcode
15622
grid/1x4/4-24m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/2x1/1-8m.gcode
4138
grid/2x1/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/2x1/2-13m.gcode
8058
grid/2x1/2-13m.gcode
File diff suppressed because it is too large
Load Diff
15622
grid/2x1/4-24m.gcode
15622
grid/2x1/4-24m.gcode
File diff suppressed because it is too large
Load Diff
23164
grid/2x1/6-35m.gcode
23164
grid/2x1/6-35m.gcode
File diff suppressed because it is too large
Load Diff
30679
grid/2x1/8-46m.gcode
30679
grid/2x1/8-46m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/2x2/1-8m.gcode
4138
grid/2x2/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/2x2/2-13m.gcode
8058
grid/2x2/2-13m.gcode
File diff suppressed because it is too large
Load Diff
15622
grid/2x2/4-24m.gcode
15622
grid/2x2/4-24m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/2x3/1-8m.gcode
4138
grid/2x3/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/2x3/2-13m.gcode
8058
grid/2x3/2-13m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/2x4/1-8m.gcode
4138
grid/2x4/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/2x4/2-13m.gcode
8058
grid/2x4/2-13m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/3x1/1-8m.gcode
4138
grid/3x1/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/3x1/2-13m.gcode
8058
grid/3x1/2-13m.gcode
File diff suppressed because it is too large
Load Diff
11878
grid/3x1/3-18m.gcode
11878
grid/3x1/3-18m.gcode
File diff suppressed because it is too large
Load Diff
15622
grid/3x1/4-24m.gcode
15622
grid/3x1/4-24m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/3x2/1-8m.gcode
4138
grid/3x2/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/3x2/2-13m.gcode
8058
grid/3x2/2-13m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/3x3/1-8m.gcode
4138
grid/3x3/1-8m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/3x4/1-8m.gcode
4138
grid/3x4/1-8m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/4x1/1-8m.gcode
4138
grid/4x1/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/4x1/2-13m.gcode
8058
grid/4x1/2-13m.gcode
File diff suppressed because it is too large
Load Diff
15622
grid/4x1/4-24m.gcode
15622
grid/4x1/4-24m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/4x2/1-8m.gcode
4138
grid/4x2/1-8m.gcode
File diff suppressed because it is too large
Load Diff
8058
grid/4x2/2-13m.gcode
8058
grid/4x2/2-13m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/4x3/1-8m.gcode
4138
grid/4x3/1-8m.gcode
File diff suppressed because it is too large
Load Diff
4138
grid/4x4/1-8m.gcode
4138
grid/4x4/1-8m.gcode
File diff suppressed because it is too large
Load Diff
34
gridfinity.json
Normal file
34
gridfinity.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"fileFormatVersion": "1",
|
||||
"parameterSets": {
|
||||
"New set 1": {
|
||||
"$fn": "50",
|
||||
"CLEARANCE": "0.25",
|
||||
"CORNER_RADIUS": "4",
|
||||
"DEPTH": "2",
|
||||
"FILL_DEPTH": "10",
|
||||
"HIEGHT": "3",
|
||||
"MODE": "3",
|
||||
"NESTING_DEPTH": "0",
|
||||
"RENDER_GF_BASE": "true",
|
||||
"RESTING_RIM_WIDTH": "2.3999999999999999",
|
||||
"SLOT": "42",
|
||||
"WIDTH": "3"
|
||||
},
|
||||
"New set 2": {
|
||||
"$fn": "50",
|
||||
"CLEARANCE": "0.25",
|
||||
"CORNER_RADIUS": "4",
|
||||
"DEPTH": "1",
|
||||
"FILL_DEPTH": "12",
|
||||
"HIEGHT": "3",
|
||||
"MODE": "1",
|
||||
"NESTING_DEPTH": "5",
|
||||
"RENDER_GF_BASE": "true",
|
||||
"RESTING_RIM_WIDTH": "2.3999999999999999",
|
||||
"SLOT": "42",
|
||||
"WALL_THIKNESS": "1",
|
||||
"WIDTH": "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
267
gridfinity.scad
267
gridfinity.scad
@ -1,63 +1,266 @@
|
||||
|
||||
$fn=50;
|
||||
|
||||
HIEGHT = 1;
|
||||
RENDER_GF_BAKJE = false;
|
||||
RENDER_GF_GRID = false;
|
||||
MODE = 0; // [0:default,1:deep,2:filled,3:partial filled]
|
||||
WIDTH = 2;
|
||||
DEPTH = 2;
|
||||
HIEGHT = 3;
|
||||
FILL_DEPTH = 0.0;
|
||||
|
||||
SLOT = 42;
|
||||
NESTING_DEPTH = 5;
|
||||
RESTING_RIM_WIDTH = 2.4;
|
||||
CORNER_RADIUS = 4;
|
||||
CLEARANCE = 0.25;
|
||||
WALL_THIKNESS = 1;
|
||||
|
||||
|
||||
|
||||
module square_rounded(size1, size2, r1, r2, h) {
|
||||
if (is_num(size1)) {
|
||||
size1 = [size1, size1];
|
||||
size2 = [size2, size2];
|
||||
square_rounded(size1, size2, r1, r2, h);
|
||||
}
|
||||
else
|
||||
{
|
||||
union() {
|
||||
difference() {
|
||||
translate([0, 0, h/2]) {
|
||||
cube([size1-r1*2, size2, h], center=true);
|
||||
cube([size2, size1-r1*2, h], center=true);
|
||||
cube([size1[0]-r1*2, size2[1], h], center=true);
|
||||
cube([size2[0], size1[1]-r1*2, h], center=true);
|
||||
}
|
||||
for(r=[0, 90, 180, -90])
|
||||
rotate([0, 0, r])
|
||||
translate([-size2/2, size1/2, 0])
|
||||
for(r=[
|
||||
[ 0, size1[0], size1[1]],
|
||||
[ 90, size1[1], size1[0]],
|
||||
[180, size1[0], size1[1]],
|
||||
[-90, size1[1], size1[0]]
|
||||
])
|
||||
rotate([0, 0, r[0]])
|
||||
translate([-r[1]/2, r[2]/2, 0])
|
||||
rotate([-45, 0, 0])
|
||||
cube([size2, 100, 2*h]);
|
||||
cube([r[1], 2*h, 2*h]);
|
||||
}
|
||||
for(r=[0, 90, 180, -90])
|
||||
rotate([0, 0, r])
|
||||
translate([size1/2-r1, size1/2-r1])
|
||||
for(r=[
|
||||
[ 0, size1[0], size1[1]],
|
||||
[ 90, size1[1], size1[0]],
|
||||
[180, size1[0], size1[1]],
|
||||
[-90, size1[1], size1[0]]
|
||||
])
|
||||
rotate([0, 0, r[0]])
|
||||
translate([r[1]/2-r1, r[2]/2-r1])
|
||||
cylinder(h=h, r1=r1, r2=r2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module gf_bottom() {
|
||||
union() {
|
||||
square_rounded(size1=35.6, size2=37.2, r1=0.8, r2=1.6, h=0.8);
|
||||
l3_r = CORNER_RADIUS;
|
||||
l3_h = NESTING_DEPTH;
|
||||
l1_cut = RESTING_RIM_WIDTH;
|
||||
l1_r = l3_r-l1_cut;
|
||||
l0_cut = l1_cut+0.8;
|
||||
l0_r = l3_r-l0_cut;
|
||||
square_rounded(
|
||||
size1=SLOT-2*l0_cut, size2=SLOT-2*l1_cut,
|
||||
r1=l0_r, r2=l1_r,
|
||||
h=0.8+0.001);
|
||||
translate([0, 0, 0.8])
|
||||
square_rounded(size1=37.2, size2=37.2, r1=1.6, r2=1.6, h=1.8);
|
||||
translate([0, 0, 2.6])
|
||||
square_rounded(size1=37.2, size2=41.5, r1=1.6, r2=3.75, h=2.15);
|
||||
square_rounded(
|
||||
size1=SLOT-2*l1_cut, size2=SLOT-2*l1_cut,
|
||||
r1=l1_r, r2=l1_r,
|
||||
h=l3_h-l1_cut-0.8+0.001);
|
||||
translate([0, 0, l3_h-l1_cut])
|
||||
square_rounded(
|
||||
size1=SLOT-2*l1_cut, size2=SLOT,
|
||||
r1=l1_r, r2=l3_r,
|
||||
h=l1_cut+0.001);
|
||||
}
|
||||
}
|
||||
|
||||
module gf_socker_cut() {
|
||||
t = 0.25;
|
||||
a = sin(45)*t;
|
||||
b = a*tan(22.5);
|
||||
c = t/sin(45);
|
||||
echo(a+b);
|
||||
translate([0, 0, -a])
|
||||
module gf_grid_cut(size=[1,1]) {
|
||||
a = CLEARANCE*sin(45);
|
||||
b = CLEARANCE*tan(22.5);
|
||||
c = CLEARANCE/sin(45);
|
||||
union() {
|
||||
square_rounded(size1=35.6+a*2, size2=37.2+2*t, r1=0.8+a, r2=1.6+t, h=0.8+b);
|
||||
translate([0, 0, 0.8+b])
|
||||
square_rounded(size1=37.2+2*t, size2=37.2+2*t, r1=1.6+t, r2=1.6+t, h=1.8);
|
||||
translate([0, 0, 2.6+b])
|
||||
square_rounded(size1=37.2+2*t, size2=41.5+2*c, r1=1.6+t, r2=3.75+c, h=2.15+a-b-0.001);
|
||||
l3_r = CORNER_RADIUS;
|
||||
l3_h = NESTING_DEPTH-a;
|
||||
l1_cut = RESTING_RIM_WIDTH-CLEARANCE;
|
||||
l1_r = l3_r-l1_cut;
|
||||
square_rounded(
|
||||
size1=[size[0]*SLOT-2*l1_cut, size[1]*SLOT-2*l1_cut],
|
||||
size2=[size[0]*SLOT-2*l1_cut, size[1]*SLOT-2*l1_cut],
|
||||
r1=l1_r, r2=l1_r,
|
||||
h=l3_h-l1_cut+0.001);
|
||||
translate([0, 0, l3_h-l1_cut])
|
||||
square_rounded(
|
||||
size1=[size[0]*SLOT-2*l1_cut, size[1]*SLOT-2*l1_cut],
|
||||
size2=[size[0]*SLOT, size[1]*SLOT],
|
||||
r1=l1_r, r2=l3_r,
|
||||
h=l1_cut+0.001);
|
||||
translate([0, 0, l3_h+a/2])
|
||||
cube([size[0]*SLOT, size[1]*SLOT, a], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
// gf_bottom();
|
||||
// gf_socker_cut();
|
||||
module gf_bakje_inside_cut(size, fill=0) {
|
||||
connecting_fillet = RESTING_RIM_WIDTH-WALL_THIKNESS-2*CLEARANCE;
|
||||
inside_radius = CORNER_RADIUS-CLEARANCE-WALL_THIKNESS;
|
||||
union() {
|
||||
// bottom shapes
|
||||
translate([0, 0, size[2]*7])
|
||||
gf_grid_cut(size);
|
||||
// connecting fillet
|
||||
translate([0, 0, size[2]*7+0.001])
|
||||
rotate([180, 0, 0])
|
||||
square_rounded(
|
||||
size1=[
|
||||
SLOT*size[0]-2*RESTING_RIM_WIDTH+2*CLEARANCE,
|
||||
SLOT*size[1]-2*RESTING_RIM_WIDTH+2*CLEARANCE
|
||||
],
|
||||
size2=[
|
||||
SLOT*size[0]-2*WALL_THIKNESS-2*CLEARANCE,
|
||||
SLOT*size[1]-2*WALL_THIKNESS-2*CLEARANCE
|
||||
],
|
||||
r1=CORNER_RADIUS-RESTING_RIM_WIDTH+CLEARANCE, r2=inside_radius,
|
||||
h=connecting_fillet+0.002);
|
||||
// main fill
|
||||
translate([
|
||||
-SLOT*size[0]/2+CORNER_RADIUS,
|
||||
-SLOT*size[1]/2+CORNER_RADIUS,
|
||||
NESTING_DEPTH+WALL_THIKNESS+fill])
|
||||
linear_extrude(size[2]*7-NESTING_DEPTH-WALL_THIKNESS-fill-connecting_fillet+0.001)
|
||||
minkowski() {
|
||||
square([
|
||||
SLOT*size[0]-2*CLEARANCE-inside_radius*2-2*WALL_THIKNESS,
|
||||
SLOT*size[1]-2*CLEARANCE-inside_radius*2-2*WALL_THIKNESS]);
|
||||
circle(r=inside_radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module gf_bakje_deep_cut() {
|
||||
a = WALL_THIKNESS*sin(45);
|
||||
b = WALL_THIKNESS*tan(22.5);
|
||||
c = WALL_THIKNESS/sin(45);
|
||||
union() {
|
||||
l3_r = CORNER_RADIUS;
|
||||
l3_h = NESTING_DEPTH+c;
|
||||
l1_cut = RESTING_RIM_WIDTH+WALL_THIKNESS;
|
||||
l1_r = l3_r-l1_cut;
|
||||
l1_hd = l3_h-l1_cut-WALL_THIKNESS;
|
||||
translate([0, 0, l3_h-l1_cut+0.001])
|
||||
rotate([180,0,0])
|
||||
linear_extrude(height = l1_hd, scale = 1-(2*l1_hd/(SLOT-2*l1_cut)))
|
||||
translate(-[SLOT/2-l1_cut-l1_r, SLOT/2-l1_cut-l1_r])
|
||||
minkowski() {
|
||||
square([SLOT-2*l1_cut-2*l1_r, SLOT-2*l1_cut-2*l1_r]);
|
||||
circle(r=l1_r);
|
||||
}
|
||||
translate([0, 0, l3_h-l1_cut])
|
||||
square_rounded(
|
||||
size1=SLOT-2*l1_cut,
|
||||
size2=SLOT,
|
||||
r1=l1_r, r2=l3_r,
|
||||
h=l1_cut+0.001);
|
||||
translate([0, 0, l3_h+a/2])
|
||||
cube([SLOT, SLOT, a+0.001], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
GF_BAKJE_MODE_DEFALT=0;
|
||||
GF_BAKJE_MODE_DEEP=1;
|
||||
GF_BAKJE_MODE_FILLED=2;
|
||||
GF_BAKJE_MODE_PARFILL=3;
|
||||
|
||||
module gf_bakje(size=[1,1,4], mode=GF_BAKJE_MODE_DEFALT, fill_dis=0) {
|
||||
intersection() {
|
||||
difference() {
|
||||
union() {
|
||||
difference() {
|
||||
union() {
|
||||
// bottom shapes
|
||||
translate(-[size[0]-1,size[1]-1]*SLOT/2)
|
||||
for (x = [0:size[0]-1])
|
||||
for (y = [0:size[1]-1])
|
||||
translate([x*SLOT, y*SLOT])
|
||||
gf_bottom();
|
||||
translate([0, 0, 4.75])
|
||||
square_rounded(size1=41.5, size2=41.5, r1=3.75, r2=3.75, h=HIEGHT*7+4.4-4.75);
|
||||
// main fill
|
||||
translate([
|
||||
-SLOT*size[0]/2+CORNER_RADIUS,
|
||||
-SLOT*size[1]/2+CORNER_RADIUS,
|
||||
NESTING_DEPTH])
|
||||
linear_extrude(size[2]*7-CLEARANCE)
|
||||
minkowski() {
|
||||
radius = CORNER_RADIUS-CLEARANCE;
|
||||
square([SLOT*size[0]-2*CLEARANCE-radius*2, SLOT*size[1]-2*CLEARANCE-radius*2]);
|
||||
circle(r=radius);
|
||||
}
|
||||
translate([0, 0, HIEGHT*7+4.4])
|
||||
gf_socker_cut();
|
||||
}
|
||||
fill = (mode==GF_BAKJE_MODE_PARFILL)
|
||||
? fill_dis
|
||||
: ((mode==GF_BAKJE_MODE_FILLED)
|
||||
? 10
|
||||
: 0);
|
||||
gf_bakje_inside_cut(size, fill);
|
||||
if (mode == GF_BAKJE_MODE_DEEP) {
|
||||
intersection() {
|
||||
translate(-[size[0]-1,size[1]-1]*21)
|
||||
for (x = [0:size[0]-1])
|
||||
for (y = [0:size[1]-1])
|
||||
translate([x*42, y*42])
|
||||
gf_bakje_deep_cut();
|
||||
square_rounded(
|
||||
size1 = [SLOT*size[0]-2*CLEARANCE-2*WALL_THIKNESS, SLOT*size[1]-2*CLEARANCE-2*WALL_THIKNESS],
|
||||
size2 = [SLOT*size[0]-2*CLEARANCE-2*WALL_THIKNESS, SLOT*size[1]-2*CLEARANCE-2*WALL_THIKNESS],
|
||||
r1 = CORNER_RADIUS-CLEARANCE-WALL_THIKNESS, r2 = CORNER_RADIUS-CLEARANCE-WALL_THIKNESS,
|
||||
h = NESTING_DEPTH+WALL_THIKNESS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
square_rounded(
|
||||
size1 = [SLOT*size[0]-2*CLEARANCE, SLOT*size[1]-2*CLEARANCE],
|
||||
size2 = [SLOT*size[0]-2*CLEARANCE, SLOT*size[1]-2*CLEARANCE],
|
||||
r1 = CORNER_RADIUS-CLEARANCE, r2 = CORNER_RADIUS-CLEARANCE,
|
||||
h = size[2]*7+NESTING_DEPTH);
|
||||
}
|
||||
}
|
||||
|
||||
module gf_grid(size) {
|
||||
difference() {
|
||||
// block
|
||||
translate([
|
||||
-SLOT*size[0]/2+CORNER_RADIUS,
|
||||
-SLOT*size[1]/2+CORNER_RADIUS,
|
||||
0])
|
||||
linear_extrude(NESTING_DEPTH-0.001)
|
||||
minkowski() {
|
||||
radius = CORNER_RADIUS-CLEARANCE;
|
||||
square([SLOT*size[0]-2*CLEARANCE-radius*2, SLOT*size[1]-2*CLEARANCE-radius*2]);
|
||||
circle(r=radius);
|
||||
}
|
||||
// cut
|
||||
translate(-[size[0]-1,size[1]-1]*SLOT/2)
|
||||
for (x = [0:size[0]-1])
|
||||
for (y = [0:size[1]-1])
|
||||
translate([x*SLOT, y*SLOT])
|
||||
gf_grid_cut();
|
||||
}
|
||||
}
|
||||
|
||||
if (RENDER_GF_BAKJE) {
|
||||
// projection(true)
|
||||
// rotate([0, 90, 0])
|
||||
gf_bakje([WIDTH, DEPTH, HIEGHT], mode=MODE, fill_dis=FILL_DEPTH);
|
||||
}
|
||||
|
||||
if (RENDER_GF_GRID) {
|
||||
// projection(true)
|
||||
// rotate([0, 90, 0])
|
||||
gf_grid([WIDTH, DEPTH]);
|
||||
}
|
||||
|
||||
73
render.sh
73
render.sh
@ -19,72 +19,17 @@ function slice(){
|
||||
}
|
||||
|
||||
function renderBakjes(){
|
||||
for part in bakje grid ;
|
||||
do
|
||||
for x in {1..4}
|
||||
do
|
||||
for y in {1..4}
|
||||
do
|
||||
echo "$0: render $part ${x}x${y}"
|
||||
${OPENSCAD} -o stl/"${part}-${x}x${y}.stl" \
|
||||
-D "RENDER=\"${part}\"" \
|
||||
-D WIDTH=${x} \
|
||||
-D DEPTH=${y} \
|
||||
"bakje.scad" || exit 1
|
||||
|
||||
max=$(echo -e "$x\n$y" | sort --numeric-sort --reverse | head --lines 1)
|
||||
min=$(echo -e "$x\n$y" | sort --numeric-sort | head --lines 1)
|
||||
|
||||
if [ "$max" == "$min" ]
|
||||
then
|
||||
if [ "${x}" == "1" ]
|
||||
then
|
||||
dubs=(1 2 4 6 9 12 16)
|
||||
elif [ "${x}" == "2" ]
|
||||
then
|
||||
dubs=(1 2 4)
|
||||
else
|
||||
dubs=(1)
|
||||
fi
|
||||
elif [ "${min}" == "1" ]
|
||||
then
|
||||
if [ "${max}" == "2" ]
|
||||
then
|
||||
dubs=(1 2 4 6 8)
|
||||
elif [ "${max}" == "3" ]
|
||||
then
|
||||
dubs=(1 2 3 4)
|
||||
elif [ "${max}" == "4" ]
|
||||
then
|
||||
dubs=(1 2 4)
|
||||
fi
|
||||
elif [ "${min}" == "2" ]
|
||||
then
|
||||
dubs=(1 2)
|
||||
else
|
||||
dubs=(1)
|
||||
fi
|
||||
|
||||
for dub in ${dubs[*]}
|
||||
do
|
||||
echo "$0: slice $dub dublicates of $part ${x}x${y}"
|
||||
slice ${part} ${x}x${y} ${dub}
|
||||
done
|
||||
done
|
||||
done
|
||||
done
|
||||
|
||||
# bakje bobbin
|
||||
echo "$0: render bakje bobbin"
|
||||
${OPENSCAD} -o "stl/bakje-bobbin-2x2.stl" \
|
||||
-D WIDTH=${x} \
|
||||
-D DEPTH=${y} \
|
||||
"bakje_bobbin.scad" || exit 1
|
||||
slice "bakje" "bobbin-2x2" 1
|
||||
echo "$0: render bakje sewing_spools"
|
||||
${OPENSCAD} -o "stl/bakje-gf_sewing_spools-2x2x4.stl" \
|
||||
"gf_sewing_spools.scad" || exit 1
|
||||
rm bakje/gf_sewing_spools-2x2x4/*
|
||||
slice "bakje" "gf_sewing_spools-2x2x4" 1
|
||||
slice "bakje" "gf_sewing_spools-2x2x4" 2
|
||||
slice "bakje" "gf_sewing_spools-2x2x4" 4
|
||||
}
|
||||
|
||||
mkdir -p stl bakje grid koffer
|
||||
rm stl/*
|
||||
rm -r bakje/* grid/*
|
||||
# rm stl/*
|
||||
# rm -r bakje/* grid/*
|
||||
|
||||
renderBakjes
|
||||
|
||||
16
renderer/Cargo.lock
generated
Normal file
16
renderer/Cargo.lock
generated
Normal file
@ -0,0 +1,16 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "renderer"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"task_queue",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "task_queue"
|
||||
version = "0.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc3565d761dd0dfe646e88991f89ea6d16c82268dcfd5d4c284d31a3b37bb63a"
|
||||
7
renderer/Cargo.toml
Normal file
7
renderer/Cargo.toml
Normal file
@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "renderer"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
task_queue = "0.0.7"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user