Товары из Китая

OpenSCAD — рисуем дозатор флюса


OpenSCAD — рисуем дозатор флюса

Дело было вечером, делать было нечего. Сижу, думаю — что бы мне такого наколдовать напрограммировать. Тут попался на глаза обзор дозатора флюса.

У меня давно был сделан дозатор паяльной пасты с моторчиком, но доставать его ради того, чтобы выдавить чуть-чуть флюса, лень, на столе держать — тоже нет смысла. Ручной дозатор вроде должен быть удобнее и места много не занимает. С учетом того, что делать было просто нечего, проектировать решил на OpenSCAD — чтобы жизнь медом не казалась это гораздо смешнее, чем использовать более-менее традиционные CADы.

OpenSCAD — рисуем дозатор флюса

OpenSCAD — рисуем дозатор флюса

Для начала поскреб по сусекам — наскреб какую-то мебельную железячку с резьбой М6, шпильку М6, пару гаек к ней, винтик М3 с гаечкой.

OpenSCAD — рисуем дозатор флюса

Теперь можно начинать рисовать. Шприц печатать, конечно, не будем, но для определенности нарисуем, и начнем с него. Для начала — фланец. Рисуем два цилиндрика и прямоугольный параллелепипед. Функции элементарные — cube (параллелепипед), cylinder (цилиндр) и перенос фигуры куда-нибудь — translate:



$fn=48;
diameter = 18.8;
wall = 1;
handle = 35;
translate([0, 0, wall/2]) cube([12,diameter+4,wall],true);
translate([handle/2-8, 0, 0]) cylinder(r=8, h=wall);
translate([-handle/2+8, 0, 0]) cylinder(r=8, h=wall);

OpenSCAD — рисуем дозатор флюса

на них натягиваем поверхность (функция hull):



$fn=48;
diameter = 18.8;
wall = 1;
handle = 35;
hull()
{
translate([0, 0, wall/2]) cube([12,diameter+4,wall],true);
translate([handle/2-8, 0, 0]) cylinder(r=8, h=wall);
translate([-handle/2+8, 0, 0]) cylinder(r=8, h=wall);
}

OpenSCAD — рисуем дозатор флюса

К получившемуся фланцу пририсовываем основной цилиндр, приплющенную сферу (функции scale и sphere) и цилиндр — держатель иглы:



$fn=48;
diameter = 18.8;
wall = 1;
handle = 35;
height = 73;
radius=diameter/2;
cylinder(r=radius, h=height);
translate([0, 0, height]) scale([1,1,0.8]) sphere(r = radius);
translate([0, 0, 87-10]) cylinder(d=10.4, h=10);
hull()
{
translate([0, 0, wall/2]) cube([12,diameter+4,wall],true);
translate([handle/2-8, 0, 0]) cylinder(r=8, h=wall);
translate([-handle/2+8, 0, 0]) cylinder(r=8, h=wall);
}

OpenSCAD — рисуем дозатор флюса

В заключение вычитаем из получившейся заготовки пару цилиндров ( difference) и шприц готов:

$fn=48;

syringe_body();
module syringe_body()
{
diameter = 18.8;
wall = 1;
handle = 35;
height = 73;
radius=diameter/2;

difference()
{
union()
{
cylinder(r=radius, h=height);
translate([0, 0, height]) scale([1,1,0.8]) sphere(r = radius);
translate([0, 0, 87-10]) cylinder(d=10.4, h=10);
hull()
{
translate([0, 0, wall/2]) cube([12,diameter+4,wall],true);
translate([handle/2-8, 0, 0]) cylinder(r=8, h=wall);
translate([-handle/2+8, 0, 0]) cylinder(r=8, h=wall);
}
}
union()
{
translate([0, 0, -wall]) cylinder(r=(radius-wall), h=height);
cylinder(d=10.4-2*wall, h=88);
}
}
}

OpenSCAD — рисуем дозатор флюса

Теперь рисуем поршень — после предыдущего рисунка это просто элементарно:

$fn=48;

piston();
module piston()
{
difference()
{
union()
{
cylinder(d=10, h=8.4);
translate([0, 0, 8.4]) cylinder(d=13.6, h=2);
translate([0, 0, 10.4]) cylinder(d=15, h=10);
}
translate([0, 0, 4]) cylinder(d=5.4, h=20);
}
}

OpenSCAD — рисуем дозатор флюса

После того, как поршень напечатан, в нем надо будет метчиком нарезать резьбу М6.

Теперь рисуем держатель для ручки-давилки, которая надевается на шприц.

Из необычных вещей здесь только использования цилинра для рисования 6-сторонней призмы cylinder(d=6.5, h=2, $fn=6) и сглаживание кромок функцией minkowski() — не злоупотребляйте ей без необходимости, она тормозит прорисовку, мягко говоря, очень сильно.

$fn=48;

support();
module support()
{
r_inner = 10;
ring_height = 15;
r_ball = 2;
difference()
{
union()
{
minkowski()
{
hull()
{
translate([0, 19, (ring_height+12)/2+2]) cube([22,10,ring_height+12],true);
translate([0, 20.5, 29]) rotate([0,90,0]) cylinder(d=10, h=22, center=true);
}
sphere(r=2);
}
translate([0, 15, ring_height/2]) cube([22,10,ring_height],true);
}
union()
{
translate([0, 20, 32]) cube([12.6, 30,30],true);
translate([-15, 20.5, 29]) rotate([0,90,0]) cylinder(d=3.5, h=30);
translate([12, 20.5, 29]) rotate([0,90,0]) cylinder(d=6.5, h=30);
translate([-13, 20.5, 29]) rotate([0,90,0]) cylinder(d=6.5, h=2, $fn=6);
}
}
difference()
{
cylinder(r=r_inner+5, h=ring_height);
translate([0, 0, -1]) cylinder(r=r_inner, h=ring_height+2);
}
}

OpenSCAD — рисуем дозатор флюса

Рисуем саму ручку — тоже ничего сложного, правда, всяких фигур используется побольше:

$fn=48;

handle();
module handle()
{
thickness = 10;

difference()
{
minkowski()
{
difference()
{
union()
{
hull()
{
translate([0, -3, -3]) cube([thickness,34,13],true);
translate([-thickness/2, 0, 0]) rotate([0,90,0]) cylinder(d=16, h=thickness);
translate([-thickness/2, -20, -2.5]) rotate([0,90,0]) cylinder(d=14, h=thickness);
}

difference()
{
hull()
{
translate([0, 24.5, 13/2-9.5]) cube([thickness,13,13],true);
translate([-thickness/2, 30, 4-9.5]) rotate([0,90,0]) cylinder(d=8, h=thickness);
translate([-thickness/2, 21, 86-9.5]) rotate([0,90,0]) cylinder(d=6, h=thickness);
translate([-thickness/2, 31, 86-9.5]) rotate([0,90,0]) cylinder(d=6, h=thickness);
}
translate([-6, 118, 45-9.5]) rotate([0,90,0]) cylinder(d=180, h=12, $fn=96 );
}
translate([0, 21, 17/2-9.5]) cube([thickness,14,17],true);
}
translate([-6, 14, 7.5]) rotate([0,90,0]) cylinder(d=8, h=12);
}
cylinder(r=1,h=1);
}
union()
{
translate([-10, 0, 0]) rotate([0,90,0]) cylinder(d=10.4, h=20);
translate([-15, -20.5, -3]) rotate([0,90,0]) cylinder(d=3.5, h=30);
hull()
{
cylinder(d=6.5, h=25, center=true);
rotate([15,0,0]) cylinder(d=6.5, h=25, center=true);
}
}
}
}

OpenSCAD — рисуем дозатор флюса

Напоследок — крутилка с накаткой. Выглядит, казалось бы, элементарно. Но на самом деле это самая сложная вещь во всем проекте, если есть желание — разбирайтесь с OpenSCAD, он не так прост, как может показаться в начале

$fn=48;

knob();
module knob()
{
height=10;
diameter=30;
difference()
{
cylinder(d=diameter,h=height);
translate([0,0,-1]) cylinder(d=6,h=height+2);
translate([0,0,height-5]) cylinder(d=13,h=6, $fn=6);

//top champfer
translate([0,0,height]) rotate_extrude() translate([diameter/2,0,0]) circle(r=1.6,$fn=4);
//bottom champfer
rotate_extrude() translate([diameter/2,0,0]) circle(r=1.6,$fn=4);
//knurls
for(i=[0:29])
rotate([0,0,i*12]) linear_extrude(height=height+0.1,twist=height/45*120) translate([diameter/2,0]) circle(r=1.1,$fn=4);
//more knurls
for(i=[0:29])
rotate([0,0,i*12]) linear_extrude(height=height+0.1,twist=height/45*-120) translate([diameter/2,0]) circle(r=1.1,$fn=4);

}
}

OpenSCAD — рисуем дозатор флюса

И собираем все до кучи;

module dispenser()

{
syringe_body();
translate([0, 0, 16]) rotate([180,0,0]) support();
translate([0, 0, -10]) handle();
translate([0, 0, 60]) rotate([0,180,0]) piston();
translate([0, 0, -30]) rotate([0,180,0]) knob();
}

OpenSCAD — рисуем дозатор флюса

И, если еще не надоело, печатаем все и скручиваем болтики.

OpenSCAD — рисуем дозатор флюса

Весь проект с исходниками и всеми деталями я выложил на thingiverse.

Пользуйтесь на здоровье, если надо.


СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *