Підручник з OpenSCAD: програмування 3D-друкованих моделей

Ви завжди хотіли створити свої власні 3D-моделі? Як щодо 3D-друку деталі, яку ви розробили? Навколо є багато програм 3D-моделювання, але їх може бути складно використовувати, якщо ви не артистичні (як я). OpenSCAD надає вам можливість розробляти моделі спеціально для друку 3D, використовуючи тільки код. Не турбуйтеся, якщо ви не знаєте, як писати код, сьогодні я проведу вас через основи.

Що таке OpenSCAD?

OpenSCAD - безкоштовний розробник Solid Computer Aided Design. Він доступний для Windows, Mac і Linux. Особливістю багатьох інших програм є те, що ви проектуєте деталі, використовуючи код замість миші. Це дозволяє дуже легко виконувати математичні обчислення, зберігати розміри в змінних, змінювати розміри деталей і багато іншого.

Існують деякі фактори, які необхідно враховувати при моделюванні 3D-друку, але багато з них застосовуються в цілому до ^ 3D-моделей CAD-друку, а не тільки до проектів OpenSCAD. Якщо ви хочете дізнатися більше про 3D-друк, зверніться до нашого керівництва Якщо ви шукаєте більш інтерактивного розробника моделей, прочитайте підручник зі створення об'єктів в Sketchup

Початок налаштування

Спочатку перейдіть на сторінку завантаження і знайдіть версію OpenSCAD, що відповідає вашій операційній системі. Я використовую Mac OS, але ці принципи OpenSCAD застосовні до всіх систем.

Після встановлення, відкрийте його. Вам буде представлено це меню запуску:

Це показує файли, які ви відкрили останніми, і дає вам можливість завантажити кілька прикладів. Не соромтеся оглядати деякі приклади, проте я виявив, що при першому запуску вони ускладнювали ситуацію. Для цього уроку створіть новий файл, натиснувши кнопку «Створити».

Після відкриття вам буде представлено такий інтерфейс:

Це поділено на три основні області. Ліворуч ваш редактор і меню. Тут ви будете писати свій код. У ньому ще не буде коду, оскільки ви створюєте новий файл. Вгорі є декілька кнопок меню для виконання основних завдань, таких як завантаження, збереження, скасування тощо.

:

Внизу праворуч знаходиться консоль. Це покаже вам будь-які помилки при побудові моделі.

:

Останній розділ - це основний інтерфейс у верхньому правому куті. Тут ви можете взаємодіяти зі своєю моделлю, але ви не зможете редагувати її тут (ви будете писати код для цього).

:

Є декілька кнопок внизу цього основного інтерфейсу. Це в першу чергу дозволяє вам переглядати ваш дизайн по-різному.

Щоб зберегти новий файл, натисніть кнопку «Зберегти» в меню редактора або виберіть «Файл» > «Зберегти».

Основи

Принцип роботи OpenSCAD у більшості випадків полягає в складанні і відніманні простих фігур. Ви можете створювати дуже складні моделі таким чином, так що давайте відразу ж приступимо.

Ось перша фігура, проста коробка:

:

І ось код, щоб зробити це:

cube(); // create a cube

Щоб ваш код виконувався і будував модель, вам потрібно його попередньо переглянути. OpenSCAD буде робити це за замовчуванням кожного разу, коли ви зберігаєте або ви можете натиснути F5 для примусового оновлення. Утримуючи ліву або праву кнопки миші, поекспериментуйте з переміщенням у тривимірному просторі.

Тепер виходить хороший куб, але він не дуже корисний без будь-яких розмірів. OpenSCAD не працює ні в якій конкретній вимірювальній системі, замість цього всі одиниці відносяться один до одного. Ви можете створити коробку 20 х 10, і будь-яка інша програма (наприклад, ваш 3D-принтер) може її інтерпретувати, будь то метрична або імперська. Це насправді забезпечує велику гнучкість.

Давайте додамо деякі вимірювання у ваш куб. Ви робите це, передаючи параметри методу куба:

cube(size = [10, 20, 30]); // rectangle

Значення 10, 20 і 30 представляють розмір куба осями X, Y і Z. Зауважте, як це призвело до появи набагато більшого прямокутника:

:

За замовчуванням OpenSCAD малює компоненти ліворуч внизу. Ви можете налаштувати це, встановивши для центрального параметра значення true. Ось код, щоб зробити це з прямокутником:

cube(size = [10, 20, 30], center = true); // rectangle centered

І ось як це виглядає:

:

Центрування об'єктів добре працює для простих фігур, але ускладнює несиметричні об'єкти. Вам потрібно буде вирішити, який метод найкраще підходить для вас.

Переходячи до більш складної форми, ось циліндр:

:

Ось код для його створення:

cylinder(d = 10, h = 10, center = true); // cylinder

На відміну від кубів, циліндри автоматично малюються в центрі осей X і Y. Параметр d позначає діаметр (замість нього ви можете вказати радіус). Параметр h - це висота. Тут щось не так. Цей циліндр виглядає досить «блочним». Вам потрібно збільшити кількість граней, намальованих по кола. Це легко зробити - додайте наступний параметр до коду вашого циліндра.

$fn = 100

Таким чином, визначення циліндра стає:

cylinder(d = 10, h = 10, center = true, $fn = 100);

Ось як це виглядає:
:

Це збільшує кількість граней, необхідних для утворення кіл - 100 є хорошою відправною точкою. Майте на увазі, що це значно збільшить час візуалізації, особливо на складних моделях, тому зазвичай краще не вказувати це до тих пір, поки ви не закінчите проектування.

Легко застосовувати перетворення до фігур. Вам потрібно викликати спеціальні методи перед створенням ваших фігур. Ось як обертати циліндр, використовуючи метод rotate:

rotate(a = [0, 90, 0]) cylinder(d = 10, h = 10, center = true); // rotated cylinder

Значення, що передаються параметру a, представляють кут повороту осей X, Y і Z. Ось результат:

Ще одна дуже корисна функція - переклад. Це дозволяє пересувати об'єкти у тривимірному просторі. Ще раз, вам потрібно буде передати кількість руху для кожної осі. Ось результат:

Ось код:

translate(v = [0, 25, 0]) cylinder(d = 10, h = 10, center = true); // translated cylinder

Розуміння методу перекладу - одна з найважливіших речей, які ви можете зробити. Це потрібно для проектування найскладніших конструкцій.

Нарешті, ще одна корисна форма - це сфера:

Ось код:

sphere(d = 100);

Точно так само, як циліндр, ви можете згладити це, використовуючи код $ fn вище.

Додаткові кодування

Тепер, коли ви знаєте основи, розгляньмо деякі більш просунуті навички. При проектуванні деталі корисно подумати про те, як вона може бути складена з більш дрібних форм і об'єктів. Вам не потрібно цього робити, і ви можете «придумувати речі» по ходу справи, але це допомагає скласти приблизний план - навіть якщо він тільки у вашій голові.

Давайте створимо просунуту форму: куб з порожньою сферою всередині. Створіть куб і сферу з центром, встановленим у true. Вирахуйте одне з іншого, використовуючи різноманітний метод:

difference() { // subtraction cube(size = [50, 50, 50], center = true); // outer cube sphere(d = 65, center = true); // inner sphere }

Ось результат:

Поекспериментуйте з діаметром (параметром d) сфери і подивіться, що станеться.

У OpenSCAD зазвичай є багато способів виконати те саме завдання. Якщо ви хочете отримати поглиблення в кубі, ви можете відняти з нього інший куб або додати ще два над ним. Зазвичай не має значення, яким чином все робиться, але в залежності від складності деталі, спочатку може бути легше виконати певні маніпуляції.

Ось як створити канал у кубі. Замість використання іншого куба, використання циліндра створить заокруглений канал. Зверніть увагу, як різноманітний метод використовується ще раз, і як методи перетворення та повороту використовуються для керування фігурами. Використання методу rotate часто ускладнює перетворення, тому поекспериментуйте з параметрами, поки не досягнете бажаного результату. Ось код:

difference() { // subtraction cube(size = [50, 150, 50]); // outer cube translate(v = [25, 150, 50]) rotate(a = [90, 0, 0]) cylinder(d = 40, h = 150); // cylinder channel }

Ось як це виглядає:

Ви можете бути здивовані, що це за зелень. Це тут, тому що 3D-модель просто попередній перегляд прямо зараз. Щоб виправити це, натисніть F6, щоб повністю відобразити модель. Це може зайняти деякий час, залежно від складності. Попередній перегляд (F5) зазвичай досить хороший під час роботи. Ось як виглядає остаточний рендер (з $ fn, встановленим у 100):

Ось ще один складний приклад. Скажімо, ви хотіли встановити щось за допомогою болту. За допомогою циліндра створити отвір досить просто, але що, якщо ви хочете, щоб головка болту була встановлена також запідлице з потаємними болтами? Ви могли б просто створити великий циліндр для головки болту, але це виглядало б не дуже добре. Рішенням є фаска, яку ви можете створити за допомогою циліндричного методу. Хитрість тут у тому, щоб вказати два діаметри - d1 і d2. Зробіть ці різні розміри, а OpenSCAD зробить все інше.

Оскільки я британець, я буду використовувати метричні розміри тут, для болту з потаємною головкою M5. Ви можете легко відрегулювати це, щоб відповідати будь-яким кріпленням, які ви хочете використовувати. Ось код:

$fn = 100; // bolt settings m5_clearance_diameter = 5.5; m5_head_clearance_diameter = 11; m5_head_depth = 5; difference() { // subtract cube(20, 20, 20); bolt_hole(10, 10, 20); bolt_bevel(10, 10, 15); } module bolt_hole(x, y, height) { /* M5 hole at 90 deg. */ translate(v = [x, y, 0]) cylinder(d = m5_clearance_diameter, h = height); } module bolt_bevel(x, y, z) { // M5 bevel translate(v = [x, y, z]) cylinder(d2 = m5_head_clearance_diameter, d1 = m5_clearance_diameter, h = m5_head_depth); }

Зверніть увагу, як розміри болтів зберігаються в змінних? Це робить кодування і обслуговування набагато простішим. Один з методів, з яким ви ще не стикалися, - це модуль. Це дозволяє вам визначити блок коду для виконання в будь-який час. Насправді це функція. Ви повинні використовувати додатки і змінні для будь-якої складної форми, оскільки вони спрощують читання і швидше вносять зміни. Ось як виглядає фаска:

Давайте подивимося на один останній приклад. Скажімо, ви хотіли створити ряд отворів навколо кола. Ви можете вручну виміряти, перевести і повернути все це, але навіть з модулями це буде втомливо. Ось кінцевий результат, 10 циліндрів навіть розподілені по колу:

Ось код:

$fn = 100; number_of_holes = 10; for(i = [1: 360 / number_of_holes: 360]) { // number_of_holes defines number of times this code runs make_cylinder(i); } module make_cylinder(i) { // make cylinder and even distribute rotate([0, 0, i]) translate([10, 0, 0]) cylinder(h = 2, r = 2); }

Цей код простіше, ніж ви очікуєте. Цикл for використовується для виклику додатка make_cylinder десять разів. Оскільки в колі 360 градусів, а 360/10 = 36, кожен циліндр необхідно повертати з кроком 36 градусів. Кожна ітерація цього циклу буде збільшувати змінну i на 36. Цей цикл викликає модуль make_cylinder, який просто малює циліндр і позиціонує його відповідно до градусів, переданих йому циклом. Ви можете намалювати більше або менше циліндрів, змінивши змінну number_of_holes - хоча ви можете змінити інтервал, якщо ви це зробите. Ось як виглядають 100 циліндрів, вони злегка перекриваються:

Експортувати

Тепер, коли ви знаєте, як кодувати OpenScad, потрібен ще один останній крок, перш ніж ви зможете 3D-друк своїх моделей. Ви повинні експортувати свій дизайн з OpenSCAD у стандартний формат STL, який використовується більшістю 3D-принтерів. на щастя, є кнопка експорту в STL: Меню редактора > Вгорі праворуч:

Ось і все на сьогодні. Тепер у вас має бути відмінне знання OpenSCAD - всі ці складні елементи будуються на цих основах, а багато складних фігур - це дійсно безліч простих фігур у поєднанні.

Для вирішення проблеми, чому б не поглянути на деякі з наших проектів 3D-друку і спробувати відтворити деталі в OpenSCAD:

  • 3D-друковані видання для настільних рольових ігор Fantasy
  • Власні кнопки швидкого доступу
  • Електронний D20
  • Ігри, які можна друкувати 3D

Ви дізналися якісь нові трюки сьогодні? Яка ваша улюблена функція OpenSCAD? Чи будете ви переходити з іншого інструменту САПР найближчим часом? Дайте нам знати в коментарях нижче!