Моделирование в OpenSCAD для 3D печати. Модули, библиотеки, шестерни, резьба

Добавлено в закладки: 2

Добрый день, сегодня мы продолжаем знакомство с редактором OpenScad. Сегодня я расскажу об использовании модулей и библиотек, мы сделаем шестеренку и поработаем с резьбой.

Одним из преимуществ редактора Опенскад, которое я упоминал в своей первой статье, является использование модулей и библиотек. Программисты давно знают об удобствах, которых можно достигнуть с их помощью: можно не писать однотипный код, можно пользоваться трудом других людей, можно разделить модули по функционалу и сохранить в разных файлах. Сделаем так и мы. Мы смоделируем шестеренку редуктора SibRap, но не целиком, а используя библиотеку involute_gear.

 

Моделирование в OpenSCAD для 3D печати - шестерня

 

Знакомство с модулями, функциями и циклами

Сначала познакомимся с тем, как создавать модули самостоятельно. Откроем редактор и создадим в нем файл config.scad со следующим кодом:

    /**
     * Глобальный конфигурационный файл
     */

    // качество цилиндров
    $fn=30;

    // избегание совпадения граней
    DELTA=0.1;

Сохраним его, и создадим другой файл gear.scad в той же папке. Запишем в него такой код:

    include <config.scad>

    echo(DELTA);

Нажмем F5. В консоли мы увидим, кроме всего прочего, текст: ECHO: 0.1. Это означает, что значение DELTA успешно загрузилось из конфигурационного файла. Удалим этот код, и вместо него напишем такой:

    for(i=[0:9])transcube(i);

    module transcube(x) {
      translate([0,0,-x])cube(x,true);
    }

Нажав F5, мы увидим симпатичную пирамидку.

Моделирование в OpenSCAD для 3D печати - Пирамидка

Модуль module transcube(x) {} – это аналог функции в языках программирования. В модуль передаются параметры, которые внутри модуля используются в заголовке (параметр “x“) и в теле модуля. В данном случае параметризован размер куба и расстояние перемещения. Флаг true в кубе означает, что мы поместили точку отсчета в центре куба. Мы выполняем модуль в цикле 10 раз, и передаем i в качестве значения для x. Тело функции выполняется, и в результате получается 10 кубов со смещением.

Также можно сделать, например, так:

    transcube(12);
    for(i=[0:7])rotate([0,0,45*i])translate([-5,-5,0])transcube(4);

    module transcube(x) {
      translate([0,0,-x])cube(x,true);
    }

Моделирование в OpenSCAD для 3D печати - Башня

Здесь мы вызываем модуль transcube дважды: для основания и для верхней части.

 

Шестерня

Если с включением файлов и модулями вы разобрались, то перейдём непосредственно к шестерне. В состав дистрибутива Опенскад входит библиотека MCAD (не во всех ОС, в некоторых её нужно устанавливать отдельно). В ней есть много интересного, но обзор библиотеки MCAD выходит за рамки данной статьи. В ней есть два файла, относящихся к шестерням. Шестерни в файле gears.scad далеки от идеала, они устарели. Посмотрим на тестовый пример:

    include <MCAD/gears.scad>
    test_gears();

Моделирование в OpenSCAD для 3D печати - Шестерни MCAD

Ужас. Непонятно, как такие шестерни могут работать. Ведь для того, чтобы передача работала, у зуба должен быть определенный (эвольвентный) профиль (см. в Википедии Зубчатое_колесо). А шестерни из этого пакета имеют зубья иной формы, и нам не подходят. Мне так и не удалось настроить их правильно. Вот в библиотеке involute_gears.scad зубья правильной формы. Весьма качественно в ней также сделаны косозубые и шевронные зубцы, а также зубцы у конических шестерёнок.

    include <MCAD/involute_gears.scad>
    test_gears();

Моделирование в OpenSCAD для 3D печати - MCAD

Другое дело! Но ещё лучше скачать файл для шестерён отдельно, т.к. в MCAD старая версия, а в новой версии исправлены некоторые ошибки. Скачиваем библиотеку parametric_involute_gear_v5.0.scad и кладем ее в папку lib. Для проектирования шестерни мы также используем файл mendel_misc.scad (это файл из проекта 3д-принтера Prusa Mendel, содержащий некоторые 3д-модели, специфичные для 3д-принтеров, например, там есть 3д-модель мотора NEMA17).

Пишем код в gear.scad:

    use <lib/mendel_misc.scad>
    use <lib/parametric_involute_gear_v5.0.scad>

    WadeL_double_helix();

    module SmoothHole() {
	    translate([6.5,0,-1]) cylinder(r=1.5, h=10, $fn=6);
    }

    module WadeL_double_helix(){
	//Large WADE's Gear - Double Helix

	circles=5;
	teeth=42;
	pitch=268;
	twist=200;
	height=11;
	pressure_angle=30;
	logo=14;

	difference(){
		union(){
		// половина шевронной шестерни
		gear (number_of_teeth=teeth,
			circular_pitch=pitch,
			pressure_angle=pressure_angle,
			clearance = 0.2,
			gear_thickness =0,
			rim_thickness = height/2,
			rim_width = 5,
			hub_thickness = height/2*1.5-2-1.5,
			hub_diameter = 25,
			bore_diameter = 8,
			circles=circles,
			twist = twist/teeth);
		// вторая половина шевронной шестерни
		mirror([0,0,1])
		gear (number_of_teeth=teeth,
			circular_pitch=pitch,
			pressure_angle=pressure_angle,
			clearance = 0.2,
			gear_thickness = height/2,
			rim_thickness = height/2,
			rim_width = 5,
			hub_thickness = height/2,
			hub_diameter=25,
			bore_diameter=7,
			twist=twist/teeth);
		}
		// Головка болта
        // болт из нержавейки
		translate([0,0,-1])rotate([180,0,0])m8_hole_vert_with_hex(13.4,20);

		// 6 углублений под головку болта
		render()for (n=[0:5]){
            rotate([0,0,n*360/6])SmoothHole();
		}

        // сглаживание острых концов шестерни
        translate([0,0,3.5]) difference(){
		cylinder(r=73.4/2, h=2.5);
			translate([0,0,1]) cylinder(r=20,h=2.6);
			cylinder(r1=67.4/2,r2=(67.5-3)/2,h=1);
		}
		mirror([0,0,1])translate([0,0,3.5]) difference(){
			cylinder(r=73.4/2, h=3);
			cylinder(r1=67.4/2,r2=(67.5-3)/2,h=1);
		}
		translate([0,0,4.3]) difference(){
			cylinder(r=25.1/2, h=2);
			cylinder(r1=25.1/2,r2=20.1/2,h=4);
		}
		// Капли - дырки
		for (n=[0:4]){
		rotate([0,0,n*360/5]) translate([18.3,0,-10])
			union(){
				cylinder(r=logo/2.5,h=20,$fn=24);
				rotate([0,0,45]) cube([logo/2.5,logo/2.5,20]);
			}
		}
	}
    }

Данным кодом создается шевронная шестерня с определенным переменной teeth количеством зубов, нужной формы и с шестигранным отверстием под болт в центре. Кроме указания параметров, нам теперь ничего не нужно программировать. Разработчики библиотеки сделали эту работу за нас.

Описание параметров вызова функции gear() можно найти на сайте Thingiverse по адресу, где расположена библиотека parametric_involute_gear_v5.0.scad. Приведу здесь перевод.

Функция параметрических эвольвентных цилиндрических зубчатых колес принимает следующие параметры:

  • number_of_teeth – количество зубов
  • circular_pitch или diametral_pitch: контролирует размер зубов (и, соответственно, размер шестерни).
  • pressure_angle: управление формой зубов.
  • clearance: зазор между корнем зуба и точкой зубьев зацепления шестерни.
  • gear_thickness: толщина шестерни.
  • rim_thickness: толщина шестерни по окружности (в том числе зубы).
  • rim_width: радиальное расстояние от основания зуба с внутренней стороны обода.
  • hub_thickness: толщина площадки в середине.
  • hub_diameter: диаметр площадки в середине.
  • bore_diameter: диаметр отверстия в середине.
  • circles: количество круглых отверстий в шестерне.
  • backlash: расстояние между задней частью зуба шестерни и передней частью следующего зуба шестерни
  • twist: скос для косозубых шестерен
  • involute_facets: число граней на одной стороне зуба. Если параметр опустить, то это будет 1/4 от $fn. Если $fn не установлен, то будет 5.

 

Моделирование в OpenSCAD для 3D печати - Шестерня готовая

 

Болт

Аналогичным образом можно сделать болт. Используя библиотеку с болтами ISOThreadUM2.scad, мы можем генерировать болты и гайки почти любых размеров. Скачайте её и положите в lib папку. Теперь можно с легкостью создать болт (файл bolt.scad):

    use <lib/ISOThreadUM2.scad>
    hex_bolt(8,16);

Болт готов:

Моделирование в OpenSCAD для 3D печати - Болт

Первый параметр функции – это диаметр (болт M8), второй – длина болта (16 мм). Аналогично можно создать гайку: hex_nut(8) создаёт гайку M8:

    use <lib/ISOThreadUM2.scad>
    hex_nut(8);

Моделирование в OpenSCAD для 3D печати - Гайка

Можно создать шпильку (M8, длина 25 мм):

    use <lib/ISOThreadUM2.scad>
    thread_out_centre(8,25);
    thread_out(8,25);

Моделирование в OpenSCAD для 3D печати - Шпилька

Таким путём можно создать множество стандартных элементов в короткие сроки.

В следующем уроке мы рассмотрим создание воздуховода для SibRap.

Скачать архив с файлами и библиотеками, использованными в статье. В архив входят:

  • config.scad
  • gear.scad
  • bolt.scad
  • lib/ISOThreadUM2.scad
  • lib/mendel_misc.scad
  • lib/parametric_involute_gear_v5.0.scad

 

Нуждов Андрей, 17.02.2017

15

Метки:    2017-03-04      Раздел: Моделирование  
Автор: Просмотров: 24 427   Нет комментариев



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




     
Авторизация
*
*
Генерация пароля
Яндекс.Метрика