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

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

Создавать детали в Опенскаде мы начнём с простого примера – используемого в SibRap-принтере ушка.

Ушко

Ушко верх

Ушко бок

Как мы видим, геометрия ушка состоит из небольшого количества примитивных объектов – цилиндров и параллелепипедов. С помощью булевых операций пересечения, вычитания и объединения над такими объектами мы легко можем получить данную форму.

Чтобы опираться на размеры, нам потребуется чертеж. Таким образом, задача будет такая: создать по существующему чертежу 3д-модель.

Чертеж ушка

Единица измерения в Опенскад по умолчанию – миллиметр, поэтому никаких дополнительных настроек и множителей не требуется. Нарисуем основной цилиндр и параллелепипед:

    cube ([15,17,18]);
    translate ([7.5,17,0]) cylinder(r=7.5, h=18);

Опенскад автоматически объединит их в один объект. Все объекты в теле скрипта объединяются автоматически. Нажмем F5.

Ушко база

Пояснения по командам очень удобно открывать из шпаргалки (Справка – Шпаргалка):

  • cube([x,y,z]) – создает параллелепипед со сторонами x,y,z единиц.
  • translate([x,y,z]) – осуществляет параллельный перенос последующего объекта.
  • cylinder(r=7.5, h=18) – создает цилиндр с основанием в плоскости XY, радиусом основания 7.5 мм и высотой 18 мм.

 

Далее нам необходимо сделать в детали отверстие:

    cube([15,17,18]);
    translate([7.5,17,0]) difference() {
        cylinder(r=7.5, h=18);
        cylinder(r=4, h=18);
    }
  • difference() {obj1, obj2, … objN} – производит вычитание второго и последующих объектов из первого объекта.
  • cylinder(r=4, h=18) – цилиндр-отверстие.

 

Нажмем F5.

Рендеринг

Результат не очень понятен: какая-то дымка закрывает нам отверстие. Дело в том, что Опенскад для ускорения расчетов при предварительном просмотре не выполняет удаление граней вычитаемых объектов. Чтобы увидеть результат полностью, нужно нажать F6:

Неточность

И опять неясность – почему вырезалась только половина отверстия? Ответ прост: мы допустили ошибку, взяв в качестве исходного тела только цилиндр. Правильный код будет таким:

    difference() {
      union() {
        cube([15,17,18]);
        translate([7.5,17,0]) cylinder(r=7.5, h=18);
      }
      translate([7.5,17,0]) cylinder(r=4, h=18);
    }

 

  • union() {obj1, obj2, … objN} – производит объединение объектов в один общий объект.

 

Нажмем F6 – наконец-то нужный результат:

Отверстие

Обратите внимание, что в данном случае понадобилось две операции параллельного переноса – по одной для каждого из цилиндров.

Похожим образом делаем второе отверстие:

    difference() {
      union() {
        cube([15,17,18]);
        translate([7.5,17,0]) cylinder(r=7.5, h=18);
      }
      translate([7.5,17,0]) cylinder(r=4, h=18);
      translate([0,7,9]) rotate([0,90,0]) cylinder(r=4, h=15);
    }

 

  • rotate([x,y,z]) – производит поворот объекта вокруг оси X на x градусов, вокруг Y на y градусов, и вокруг оси Z на z градусов (+ – по часовой стрелке, – против часовой, если смотреть в положительном направлении осей).

 

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

Обратите внимание, что порядок операций translate и rotate имеет значение – операции над цилиндром выполняются справа налево, сначала поворот, затем перенос. Поэтому при перемене операций местами нужно будет изменять и аргументы команд.

И, наконец, вырез:

    difference() {
      union() {
        cube([15,17,18]);
        translate([7.5,17,0]) cylinder(r=7.5, h=18);
      }
      translate([7.5,17,0]) cylinder(r=4, h=18);
      translate([0,7,9]) rotate([0,90,0]) cylinder(r=4, h=15);
      translate([7,0,0]) cube([1,17,18]);
    }

Вырез

Получилось! Вот только на первом изображении почему-то отверстия более гладкие. За гладкость отверстий отвечает несколько параметров Опенскада: $fa, $fs, $fn.
Достаточно добавить в начало файла строку

$fn=30;

и наши цилиндры будут не 12-угольными, а 30-угольными. Вот и наш результат:

Результат

Теперь можно сохранить код в scad-файл (Файл – Сохранить), а геометрию в STL (Файл – Экспортировать – Экспортировать в STL…). Данный файл можно потом легко распечатать на 3д-принтере:

Скачать файл ушка

Бонус: 3д-модель ушка на GitHub

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

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

0

Метки:    2017-02-27      Раздел: Моделирование  
Автор: Просмотров: 12 065   4 комментария



4 комментария на «Моделирование в OpenSCAD для 3D печати. Создание ушка»

  1. Можно вместо union было воспользоваться hull и тогда бы объекты слились.
    Из плюсов не нужно было бы совмещать ровно объекты..

    0
    1. Ну и ушко было бы кривое, не того размера. Разве это надо?

      0
      1. почему кривое?
        Абсолютно тоже самое. В cube изменил Y координату на 1
        hull() {
        cube([15,1,18]);
        translate([7.5,17,0]) cylinder(r=7.5, h=18);
        }

        0

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




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