diff options
| author | 2026-02-02 00:35:54 +0300 | |
|---|---|---|
| committer | 2026-02-02 00:35:54 +0300 | |
| commit | bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9 (patch) | |
| tree | 27fff9c802dcdd22960bb2e776e58278000d0364 /content/posts/2025-08-05-lets-code-3d.md | |
| parent | Поправил шаблон (diff) | |
| download | blog-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.md | 154 |
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--> - - Бокорезы и -колпачок - -## Проектирование - -Обычно, детали для печати проектируются в CAD программах твердотельного -моделирования. Но я в них совершенно не умею, хотя и сын -инженеров-конструкторов. Но зато, к счастью, я программист. И вроде, не самый -худший! Посему, я решил воспользоваться свободной программой для твердотельного -моделирования [OpenSCAD](https://openscad.org/). К счастью, в репозитории -любимого дистрибутива (как, в прочем, и в большинстве других репозиториев) он -присутствовал. Что же в нём необычного? А необычное в нём то, что деталь в нём -не _рисуется_, а именно что _программируется_. Для понимания, приведу простой -пример: - -```openscad -cube([25,35,55]); // Нарисовать куб размерами 25мм х 25мм х 55мм -``` - -Просто? Очень! А учитывая что язык полноценный, с циклами и условиями -«напрограммировать» в нём можно многое. - -## Первая версия - -Вот и я не стал долго думать, открыл [мануал с -оффсайта](https://openscad.org/documentation.html), обмерил штангенциркулем -оригинальный колпачок и пошёл <del>проектировать</del> программировать. На всё -про всё у меня ушло где-то с полчаса. И у меня получилась первая версия -колпачка. Максимально простая и дубовая. Первая куцая версия: - - - -## Вторая версия - -В принципе, на этом можно было и остановиться, ведь свою функцию он выполняет. -Но у меня сработал мой перфекционист и я подумал, что было бы неплохо вырезы в -корпусе сделать один под другим, а не на одной линии, чтобы бокорез сидел ровно, -а не под углом. Потом пришла мысль, что было бы неплохо ещё и параметризировать -модель, чтобы было легко менять её размеры, а не хардкодить их. И вот получилась -вторая, и на текущий момент окончательная версия: - - - -И результат «в железе», то есть в пластике :) - - - -А сам код, думаю, он достаточно понятен ([исходники](/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 |
