summaryrefslogtreecommitdiff
path: root/content/posts/files/lets-code-3d_source.scad
diff options
context:
space:
mode:
author2026-01-31 20:38:50 +0300
committer2026-01-31 23:38:53 +0300
commit49458f5ffd5a48c465117ec27f6437683f75acc1 (patch)
treea99ee68116d10c2b2e5a70c442cdadec95ba793c /content/posts/files/lets-code-3d_source.scad
downloadblog-49458f5ffd5a48c465117ec27f6437683f75acc1.tar.gz
blog-49458f5ffd5a48c465117ec27f6437683f75acc1.tar.bz2
blog-49458f5ffd5a48c465117ec27f6437683f75acc1.tar.xz
blog-49458f5ffd5a48c465117ec27f6437683f75acc1.zip
initial
Diffstat (limited to '')
-rw-r--r--content/posts/files/lets-code-3d_source.scad66
1 files changed, 66 insertions, 0 deletions
diff --git a/content/posts/files/lets-code-3d_source.scad b/content/posts/files/lets-code-3d_source.scad
new file mode 100644
index 0000000..b651cb3
--- /dev/null
+++ b/content/posts/files/lets-code-3d_source.scad
@@ -0,0 +1,66 @@
+// Толщина стенки
+wall = 2;
+
+// Высота внешняя
+height = 12;
+
+// Длина основной части (внутренняя)
+l1 = 15;
+
+// Длина носика (внутренняя)
+l2 = 20;
+
+// Ширина у основания (внутренняя)
+w = 15;
+
+// Толщина метала бокорезов
+toolWidth = 2.1;
+
+// Нижняя крышка
+cover(0);
+
+// Верхняя крышка
+cover(height - wall);
+
+// Корпус
+difference() {
+ linear_extrude(height)
+ polygon(
+ [ // Полигон идёт против часовой стрелки
+ [0, 0],
+ [wall, 0],
+ [wall, l1],
+ [w / 2 + wall, l1 + l2], // Внутренний кончик носика
+ [w + wall, l1],
+ [w + wall, 0],
+ [w + wall * 2, 0],
+ [w + wall * 2, l1],
+ [w / 2 + wall / 2 + wall, l1 + l2 + wall], // Внешний кончик носика
+ [w / 2 - wall / 2 + wall, l1 + l2 + wall],
+ [0, l1],
+ ]
+ );
+
+ // Вырезы
+ translate([w + wall, 0, height / 2 - toolWidth]) // Правый вырез чуть ниже середины
+ cube([wall, l1 / 2, toolWidth]);
+ translate([0, 0, height / 2]) // Левый вырез чуть выше середины
+ cube([wall, l1 / 2, toolWidth]);
+}
+
+
+// Крышка
+module cover(z) {
+ translate([0, 0, z])
+ linear_extrude(wall)
+ polygon(
+ [ // Полигон идёт против часовой стрелки
+ [0, 0],
+ [w + wall * 2, 0],
+ [w + wall * 2, l1],
+ [w / 2 + wall / 2 + wall, l1 + l2 + wall],
+ [w / 2 - wall / 2 + wall, l1 + l2 + wall],
+ [0, l1],
+ ]
+ );
+}