diff options
| author | 2026-01-31 20:38:50 +0300 | |
|---|---|---|
| committer | 2026-01-31 23:38:53 +0300 | |
| commit | 49458f5ffd5a48c465117ec27f6437683f75acc1 (patch) | |
| tree | a99ee68116d10c2b2e5a70c442cdadec95ba793c /content/posts/files/lets-code-3d_source.scad | |
| download | blog-49458f5ffd5a48c465117ec27f6437683f75acc1.tar.gz blog-49458f5ffd5a48c465117ec27f6437683f75acc1.tar.bz2 blog-49458f5ffd5a48c465117ec27f6437683f75acc1.tar.xz blog-49458f5ffd5a48c465117ec27f6437683f75acc1.zip | |
initial
Diffstat (limited to 'content/posts/files/lets-code-3d_source.scad')
| -rw-r--r-- | content/posts/files/lets-code-3d_source.scad | 66 |
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], + ] + ); +} |
