summaryrefslogtreecommitdiff
path: root/content/posts/2025-08-05-lets-code-3d.md
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.md
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.md')
-rw-r--r--content/posts/2025-08-05-lets-code-3d.md154
1 files changed, 0 insertions, 154 deletions
diff --git a/content/posts/2025-08-05-lets-code-3d.md b/content/posts/2025-08-05-lets-code-3d.md
deleted file mode 100644
index 3809861..0000000
--- a/content/posts/2025-08-05-lets-code-3d.md
+++ /dev/null
@@ -1,154 +0,0 @@
----
-cover: /posts/files/lets-code-3d_img/4.jpg
-date: '2025-08-05T20:00:00+03:00'
-tags:
-- 3D печать
-- гиковское
-title: Давай запрограммируем деталь?
----
-
-Некоторое время назад я по глупости запорол свои бокорезы, так, что для
-откусывания ножек радио деталей они больше не годятся. К счастью, стоят они
-совершенно не дорого, и тем же днём были заказанные новые в небезызвестном
-сервисе, который в девичестве содержал в себе название моего родного города. При
-получении я немного огорчился тем, что в комплекте к ним не шёл колпачок,
-который был у предыдущих, хотя выглядят они идентично.
-
-Штош. Я решил восполнить этот недостаток с интересом для себя и решил этот
-колпачок самостоятельно спроектировать и напечатать на 3D принтере, который есть
-у меня на хозяйстве.
-
-<!--more-->
-
-![Бокорез и родной колпачок](/posts/files/lets-code-3d_img/1.jpg) Бокорезы и
-колпачок
-
-## Проектирование
-
-Обычно, детали для печати проектируются в CAD программах твердотельного
-моделирования. Но я в них совершенно не умею, хотя и сын
-инженеров-конструкторов. Но зато, к счастью, я программист. И вроде, не самый
-худший! Посему, я решил воспользоваться свободной программой для твердотельного
-моделирования [OpenSCAD](https://openscad.org/). К счастью, в репозитории
-любимого дистрибутива (как, в прочем, и в большинстве других репозиториев) он
-присутствовал. Что же в нём необычного? А необычное в нём то, что деталь в нём
-не _рисуется_, а именно что _программируется_. Для понимания, приведу простой
-пример:
-
-```openscad
-cube([25,35,55]); // Нарисовать куб размерами 25мм х 25мм х 55мм
-```
-
-Просто? Очень! А учитывая что язык полноценный, с циклами и условиями
-«напрограммировать» в нём можно многое.
-
-## Первая версия
-
-Вот и я не стал долго думать, открыл [мануал с
-оффсайта](https://openscad.org/documentation.html), обмерил штангенциркулем
-оригинальный колпачок и пошёл <del>проектировать</del> программировать. На всё
-про всё у меня ушло где-то с полчаса. И у меня получилась первая версия
-колпачка. Максимально простая и дубовая. Первая куцая версия:
-
-![Колпачок v1](/posts/files/lets-code-3d_img/2.jpg)
-
-## Вторая версия
-
-В принципе, на этом можно было и остановиться, ведь свою функцию он выполняет.
-Но у меня сработал мой перфекционист и я подумал, что было бы неплохо вырезы в
-корпусе сделать один под другим, а не на одной линии, чтобы бокорез сидел ровно,
-а не под углом. Потом пришла мысль, что было бы неплохо ещё и параметризировать
-модель, чтобы было легко менять её размеры, а не хардкодить их. И вот получилась
-вторая, и на текущий момент окончательная версия:
-
-![Колпачок v2 код](/posts/files/lets-code-3d_img/3.png)
-
-И результат «в железе», то есть в пластике :)
-
-![Колпачок v2 результат](/posts/files/lets-code-3d_img/4.jpg)
-
-А сам код, думаю, он достаточно понятен ([исходники](/posts/files/source.scad) и
-[STL модель](/posts/files/result.stl) я прикладываю к этому посту):
-
-```openscad
-// Толщина стенки
-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],
- ]
- );
-}
-```
-
-Надеюсь, я кому-то показал что даже без специального конструкторского
-образования, но умея программировать - можно получать не только эфимерные
-программки, но и вполне себе физические предметы, которые пригождаются в быту.
-И если интересно, подбиваю экономику: напечатано 2 колпачка (1 и 2 версия),
-каждый весом по 4 грамма, то есть примерно по 4₽ за штуку. Печатал пластиком
-PLA, как моим самым любимым.
-
-## Ссылки
-
-- Сайт OpenSCAD - https://openscad.org/
-- Документация - https://openscad.org/documentation.html
-- Шпаргала по функциям - https://openscad.org/cheatsheet/index.html
-- Библиотеки - https://openscad.org/libraries.html