Некоторое время назад я по глупости запорол свои бокорезы, так, что для откусывания ножек радио деталей они больше не годятся. К счастью, стоят они совершенно не дорого, и тем же днём были заказанные новые в небезызвестном сервисе, который в девичестве содержал в себе название моего родного города. При получении я немного огорчился тем, что в комплекте к ним не шёл колпачок, который был у предыдущих, хотя выглядят они идентично.

Штош. Я решил восполнить этот недостаток с интересом для себя и решил этот колпачок самостоятельно спроектировать и напечатать на 3D принтере, который есть у меня на хозяйстве.


1.jpg
Бокорез и родной колпачок Бокорезы и
колпачок

Проектирование

Обычно, детали для печати проектируются в CAD программах твердотельного моделирования. Но я в них совершенно не умею, хотя и сын инженеров-конструкторов. Но зато, к счастью, я программист. И вроде, не самый худший! Посему, я решил воспользоваться свободной программой для твердотельного моделирования OpenSCAD. К счастью, в репозитории любимого дистрибутива (как, в прочем, и в большинстве других репозиториев) он присутствовал. Что же в нём необычного? А необычное в нём то, что деталь в нём не рисуется, а именно что программируется. Для понимания, приведу простой пример:

1
cube([25,35,55]); / Нарисовать куб размерами 25мм х 25мм х 55мм

Просто? Очень! А учитывая что язык полноценный, с циклами и условиями «напрограммировать» в нём можно многое.

Первая версия

Вот и я не стал долго думать, открыл мануал с оффсайта, обмерил штангенциркулем оригинальный колпачок и пошёл проектировать программировать. На всё про всё у меня ушло где-то с полчаса. И у меня получилась первая версия колпачка. Максимально простая и дубовая. Первая куцая версия:

2.jpg
Колпачок v1

Вторая версия

В принципе, на этом можно было и остановиться, ведь свою функцию он выполняет. Но у меня сработал мой перфекционист и я подумал, что было бы неплохо вырезы в корпусе сделать один под другим, а не на одной линии, чтобы бокорез сидел ровно, а не под углом. Потом пришла мысль, что было бы неплохо ещё и параметризировать модель, чтобы было легко менять её размеры, а не хардкодить их. И вот получилась вторая, и на текущий момент окончательная версия:

3.pngРезультат «в железе», то есть в пластике :)

4.jpg
Колпачок v2 результат

А сам код, думаю, он достаточно понятен (исходник и STL модель я прикладываю к этому посту):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/ Толщина стенки
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, как моим самым любимым.

Ссылки