Моделирование в OpenSCAD для 3D печати. Воздуховод

Современные 3д-принтеры используют воздуховоды для обдува детали. Опенскад позволяет моделировать и простые, и сложные воздуховоды, хотя его возможностей в сложных случаях может быть недостаточно. Для своего принтера SibRap я смоделировал довольно простой воздуховод.

Простой воздуховод

    $fn=40;
    DELTA=0.1;

    // вентилятор
    // габариты
    x1=40;
    // расстояние между отверстиями
    x2=32;
    // от края до отверстия
    x3=(x1-x2)/2;
    // внутреннее отверстие
    d1=20;
    d2=38;
    // толщина
    h1=10;

    // алюм профиль
    // расстояние между отверстиями
    x4=28;
    // длина болтов
    h4=10;

    // от отверстий для профиля до вентиляторных
    x5=5;

    // болт
    r1=1.5;
    r2=3;
    h2=3;

    // воздуховод
    // ширина
    x6=34;
    // высота
    y1=16;

    // гайка М3
    r3=3.5;

    difference() {
    union() {
      cube([x1,x1,h1]);
    }

    translate([x3,x3,-DELTA])bolt();
    translate([x3+x2,x3,-DELTA])bolt();
    translate([x3+x2,x3+x2,-DELTA])bolt();
    translate([x3,x3+x2,-DELTA])bolt();
    translate([x1/2,x1/2,-DELTA])cylinder(r1=d1/2,r2=d2/2,h=h1+DELTA*2);

    translate([x3,x1-x3-x5,-DELTA])bolt2();
    translate([x3+x4,x1-x3-x5,-DELTA])bolt2();

    translate([x1/2,x1/2,h1/2-DELTA])cube([x6,y1,h1+DELTA*2],true);
    }

    module bolt() {
      cylinder(r=r1,h=h1+DELTA*2);
      cylinder(r=r3,h=h2+DELTA*2,$fn=6);
    }

    module bolt2() {
      cylinder(r=r1,h=h4+DELTA*2);
      translate([0,0,h1/2])cylinder(r=r3,h=h4+DELTA*2,$fn=6);
    }

Вот и весь код. Он генерирует вот такой воздуховод:

OpenSCAD для 3D печати

Отпечатанный, он выглядит так:

Файл воздуховода SibRap (vozduhovod.scad)

 

Настройка воздуховода в Thingiverse/OpenScad Customizer

На Thingiverse можно найти и более интересные варианты воздуховодов. Например, вот этот воздуховод позволяет создать не один, а целую кучу самых разных воздуховодов. Конечно, это достигается параметризацией. Но ещё интереснее, что мы можем использовать встроенное в сайт Thingiverse приложение Customizer для управления параметрами модели. Для этого нужно зарегистрироваться на Thingiverse, войти в аккаунт и нажать кнопку Open in Customizer на странице. Откроется вот такой интерфейс:

Мы можем двигать слайдеры и заполнять поля слева, и модель справа перестроится! Потом её можно экспортировать в STL, нажав кнопку Create Thing, и скачать с сайта.

Идея настройщика (customizer) состоит в том, чтобы отделить пользователей параметрических моделей от разработчиков таких моделей. Первым – предоставить удобный интерфейс настройки моделей под свои нужды, а вторым – стандарт кодирования параметров, в соответствии с которым автоматически будет сгенерирован интерфейс настроек. Подобную функциональность разработчики OpenScad планируют встроить напрямую в приложение, чтобы оно стало доступно как open-source решение. Пока официального релиза нет, но можно установить так называемые Development Snapshot (пред-релизные версии) и посмотреть, как это работает уже сейчас.

Давайте попробуем использовать новые возможности и создать кастомный дизайн воздуховода, пользуясь новым интерфейсом. Скачайте свежий Development Snapshot OpenScad 2017.01.20. Установите его.

Запустите, и откройте Правка – Параметры. Включите Функции – Customizer:

Откройте файл модели (fan_nozzle.scad). Включите панель настройщика, убрав галку Hide Customizer в меню Вид:

Справа появится панель настройщика, аналогичная панели на сайте Thingiverse. Теперь мы можем настраивать воздуховод, как нам угодно, прямо в этой панели. Например, выберем параметр Output Hole – nozzle edges равным 3:

…и модель перестроится в треугольный воздуховод. Так можно настроить очень многие параметры данного воздуховода, не только не трогая кода, но даже не редактируя параметры!

Сейчас мы пользовались интерфейсом для модели, которой не создавали. Рассмотрим настройщик с точки зрения разработчика модели. Дело в том, что мы можем напрямую создавать новые секции и настройки в этой панели прямо из кода OpenScad-файла!

Формат кода можно узнать здесь. Простой пример: код вида

    /* [Габариты] */
    // Высота детали
    height = 10; // [10,20,35]
    // Длина детали
    length = 15;  // [0:50]
    // Ширина детали
    width = 7;

создает новую секцию “Габариты” и три панели с параметрами:

В зависимости от комментария справа генерируется разный тип контрола:

  • комбобокс для списка значений,
  • слайдер для диапазона,
  • или простой спин при отсутствии комментария.

 

При изменении кода нужно нажать Reset в верхнем правом углу настройщика для пересоздания интерфейса.

Также в верхней части настройщика расположены предварительные настройки (Presets) – это набор значений всех параметров, создающий конкретный вариант модели. Например, если открыть Файл – Примеры – Parametric – candleStand.scad, мы увидим справа в списке Presets пять вариантов дизайна подсвечника: No set selected (нет предварительной настройки), Medium size, small, With Ball, Large. Выберем small, и модель у нас перегенерируется:

![OpenScad Customizer presets](7.png)

Предварительные настройки хранятся в JSON-файле с именем как у scad-файла, но с расширением .json (candleStand.json):

    {
    "parameterSets": {
        "Medium Size": {
            "CenterCandleWidth": "6",
            "candleSize": "9",
            "centerCandle": "true",
            "count": "7",
            "heightOfRing": "4",
            "heightOfSupport": "3",
            "holeSize": "3",
            "length": "50",
            "radius": "25",
            "width": "5",
            "widthOfRing": "23",
            "widthOfSupport": "3"
        },
        "small": {
            "CenterCandleWidth": "4",
            "candleSize": "6",
            "centerCandle": "true",
            "count": "7",
            "heightOfRing": "2",
            "heightOfSupport": "2",
            "holeSize": "2",
            "length": "30",
            "radius": "16",
            "width": "4",
            "widthOfRing": "13",
            "widthOfSupport": "2"
        },
        "With Ball": {
            "CenterCandleWidth": "7",
            "candleSize": "6",
            "centerCandle": "false",
            "count": "5",
            "heightOfRing": "2",
            "heightOfSupport": "2",
            "holeSize": "2",
            "length": "30",
            "radius": "16",
            "width": "4",
            "widthOfRing": "13",
            "widthOfSupport": "2"
        },
        "Large": {
            "CenterCandleWidth": "10",
            "candleSize": "9",
            "centerCandle": "false",
            "count": "7",
            "heightOfRing": "4",
            "heightOfSupport": "3",
            "holeSize": "3",
            "length": "70",
            "radius": "25",
            "width": "5",
            "widthOfRing": "23",
            "widthOfSupport": "3"
        }
    },
    "fileFormatVersion": "1"
    }

JSON-формат прекрасно известен и описан, и понятен сам по себе. Таким образом, создав JSON-файл в дополнение к scad-файлу, мы получим несколько вариантов дизайна нашей модели, из которых пользователь может легко выбрать нужный. А при необходимости, легко изменить его или добавить новый вариант, при этом вообще не трогая основной код!

Новый функционал позволяет организовать разделение труда и упрощает работу разработчика параметрических 3д-моделей. А обычному пользователю гораздо удобнее двигать слайдер мышкой, чем редактировать код.

Создадим список настроек для воздуховода, который нам нужен:

  • Nozzle – nozzle tilt = 45,
  • Output Hole – nozzle dilation = 30,
  • nozzle edges = 3,
  • nozzle edgeradius = 1

 

Нажмем + и введем имя Triangle. Дизайн готов:

OpenSCAD для 3D печати

В данном уроке мне не понадобилось использовать программирование. Таким образом, возможно, скоро большинство типовых задач будет решено с помощью гибких моделей. А нам останется создавать только абсолютно новые, неизвестные ранее вещи…

 

Надеюсь, вы открыли для себя много интересного. Успехов вам в 3д-моделировании и 3д-печати!

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

5

Метки:    2017-03-06      Раздел: Моделирование  
Автор: Просмотров: 1 235   Нет комментариев



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




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