include <BOSL2/std.scad>
include <BOSL2/threading.scad>
// === ПАРАМЕТРЫ ИЗМЕРЕНИЙ ОТВЕТНОЙ ЧАСТИ ===
wall_outer_dia = 66.0; // Внешний диаметр по вершинам витков в стене
thread_pitch = 3.0; // Шаг резьбы (расстояние между витками)
wall_height = 11.0; // Высота резьбовой части кольца
// === ГЕОМЕТРИЯ КРЫШКИ ===
cap_wall = 3.2; // Толщина стенок колпачка
cap_top = 4.0; // Толщина донышка крышки
rib_count = 28; // Количество ребер снаружи
// === ТЕХНОЛОГИЧЕСКИЙ ЗАЗОР ДЛЯ ПЕЧАТИ ===
// Зазор $slop автоматически расширяет внутренний диаметр маски на 4 * $slop (0.6 мм),
// что гарантирует идеальный натяг и легкое накручивание на K1C без заклинивания.
$slop = 0.15;
// Расчет внешнего диаметра заготовки крышки
cap_outer_dia = wall_outer_dia + (cap_wall * 2) + ($slop * 4);
difference() {
// 1. ВНЕШНЕЕ ТЕЛО КРЫШКИ С РЕБРАМИ
union() {
cylinder(h = wall_height + cap_top, d = cap_outer_dia, $fn = 120, anchor = BOTTOM);
// Внешние ребра для хвата
for (i = [0 : rib_count - 1]) {
rotate([0, 0, i * (360 / rib_count)])
translate([cap_outer_dia / 2 - 0.3, 0, 0])
cylinder(h = wall_height + cap_top, r = 1.2, $fn = 12, anchor = BOTTOM);
}
}
// 2. ВЫЧИТАЕМ РЕЗЬБОВУЮ ПОЛОСТЬ (МАСКУ)
translate([0, 0, -0.5]) // Смещение вниз для чистого среза захода резьбы
trapezoidal_threaded_rod(
d = wall_outer_dia,
l = wall_height + 1.0,
pitch = thread_pitch,
// Мы убрали некорректные thread_depth и thread_angle.
// Теперь BOSL2 автоматически построит эталонный, глубокий профиль ходовой резьбы.
internal = true,
anchor = BOTTOM,
$fn = 120
);
}