summaryrefslogtreecommitdiff
path: root/content/posts/2025-08-05-lets-code-3d/lets-code-3d_source.scad
diff options
context:
space:
mode:
author2026-02-02 00:35:54 +0300
committer2026-02-02 00:35:54 +0300
commitbfdd73d7324a4f66a16f55d4fb064b0ff08d40e9 (patch)
tree27fff9c802dcdd22960bb2e776e58278000d0364 /content/posts/2025-08-05-lets-code-3d/lets-code-3d_source.scad
parentПоправил шаблон (diff)
downloadblog-bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9.tar.gz
blog-bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9.tar.bz2
blog-bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9.tar.xz
blog-bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9.zip
Большая чистка блога
Diffstat (limited to 'content/posts/2025-08-05-lets-code-3d/lets-code-3d_source.scad')
-rw-r--r--content/posts/2025-08-05-lets-code-3d/lets-code-3d_source.scad66
1 files changed, 66 insertions, 0 deletions
diff --git a/content/posts/2025-08-05-lets-code-3d/lets-code-3d_source.scad b/content/posts/2025-08-05-lets-code-3d/lets-code-3d_source.scad
new file mode 100644
index 0000000..b651cb3
--- /dev/null
+++ b/content/posts/2025-08-05-lets-code-3d/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],
+ ]
+ );
+}