CAD

openSCAD циліндр

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

Команда циліндра

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

циліндр (r1 = 20);
циліндр (r1 = 20, r2 = 5);
циліндр (r1 = 20, h = 40);
циліндр (r = 20, h = 40);
циліндр (r1 = 20, r2 = 5, h = 40, центр = істина);

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

Конус

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

Значення center = true дійсне для осі z, залишаючи конус наполовину вгору від “землі”. За замовчуванням значення false, що змушує нижню частину конуса опинитися на "землі". Ви також можете вибрати, наскільки близькі стінки конусів до кругових з параметром '$ fn'.

Порожнистий циліндр

Гей, почекай хвилинку! Це створює лише тверді шматки, як я в них просвердлюю отвори? Ви питаєте, дякую! я скажу вам. Відповідь вся в різниці. Команда, яка є. Розгляньте наведений нижче код, він містить два циліндри, які охоплені фігурними дужками та команду різниці.

різниця ()
циліндр (r = 30, h = 40);
циліндр (r = 28, h = 41);

Простіше кажучи, коли у вас кілька штук, тоді ви вирізаєте матеріал з першого шматка, використовуючи всі наступні шматки. У цьому випадку ви вирізаєте циліндр з циліндра. Якщо ви хочете вирізати будь-яку іншу фігуру, ви можете зробити це також. Спробуйте куб або кулю! Зверніть увагу на цікаві та часом руйнівні наслідки, які значення $ fn може мати на цей код.

Порожній конус

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

різниця ()
циліндр (r1 = 30, r2 = 12, h = 50);
циліндр (r1 = 25, r2 = 7, h = 45);

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

Піраміда

Це може здатися неактуальним, але це корисний трюк, про який потрібно пам’ятати, продовжуючи використовувати openSCAD. Усі циліндри та інші елементи є наближенням форми. Ви вже читали про параметр $ fn раніше, тут ви ним скористаєтесь. Маючи це на увазі, ви можете подумати: Піраміда - це конус з чотирма сторонами. Правильно! використовуйте $ fn = 4, і у вас є конус з чотирма сторонами, тобто піраміда.

різниця ()
циліндр (r1 = 30, r2 = 12, h = 40, $ fn = 4);
циліндр (r1 = 25, r2 = 7, h = 35, $ ​​fn = 4);

Внутрішній циліндр вирізає той самий циліндр, що і зовнішній. Поки ви не почнете грати з параметром $ fn. Щоб ознайомитись із впливом цього параметра, спробуйте зробити чотириногий табурет. Як параметр $ fn впливає на результат? Крім того, як можна накрити верх чи низ?

Поєднуючи багато

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

товщина = 5;
бейсер = 30;
topr = 12;
висота = 50;
union ()
// Нижній конус
різниця ()
циліндр (r1 = базовий, r2 = верхній, h = висота);
циліндр (r1 = baser-thickn, r2 = topr - thickn, h = висота + thickn);

// Верхній куля
перекласти ([0, 0, висота])
різниця ()
сфера (r = topr);
сфера (r = topr -товща);
перекласти ([0, 0, -topr])
куб (розмір = topr * 2, центр = true);

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

Виготовлення пробірки

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

бугор = 20;
канальця = 80;
товщина = 2;
різниця ()
циліндр (r1 = бугор, r2 = бугор, h = труба);
циліндр (r1 = грудок - товщина, r2 = горбик - товщина, h = трубка);

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

різниця ()
куля (бугор);
куля (горб - потовщений);
перекласти ([0, 0, -tubr])
куб (розмір = горбик * 2, центр = правда);

Тепер у вас є дві окремі частини. Наступний крок - їх складання. Тут ви можете використовувати команду union. Як і команда різниці, об'єднання приймає всі фігури по порядку. У союзі порядок не такий важливий, оскільки він є доповненням. Код буде виглядати трохи потворно, тому що ми не використовуємо тут модулі.

union ()
// Головна трубка
різниця ()
циліндр (r1 = бугор, r2 = бугор, h = труба);
циліндр (r1 = горб - товщина, r2 = горб - товщина, h = трубка);

// Нижня сфера
перекласти ([0, 0, tubl])
різниця ()
куля (бугор);
куля (горб - потовщений);
перекласти ([0, 0, -tubr])
куб (розмір = горбик * 2, центр = правда);


// Верхнє кільце
різниця ()
циліндр (r = бугор + товщина, h = товщина);
циліндр (r = бугор, h = товщина);

Тут ми розробляємо його догори дном, це залежить від вас. Робіть те, що зручно для конкретного випадку. Ви завжди можете обертати його, коли ним користуєтесь. Верхнє кільце має гострі краї, ви можете виправити це, скориставшись колом і повернути_видавити його. Є й інші способи це зробити, дослідити та експериментувати!

rotate_extrude (опуклість = 10, $ fn = 100)
перекласти ([tubr, 0, 0])
коло (r = товщина, $ fn = 100);

Поєднання багатьох циліндрів

Після того, як ви зробили трубку з кількох циліндрів, можливо, ви також захочете з’єднати їх різними способами. Для цього можна знову скористатися об’єднанням. Скажімо, вам потрібна одна трубка під кутом сорока п’яти градусів до іншої трубки. Для цього ви розташуєте кутову трубку на половині великої трубки.

union ()
трубка (50, 4, 300);
перекласти ([0, 0, totlength / 2]) повернути ([45, 0, 0])
трубка (50, 4, 150);

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

різниця ()
union ()
трубка (50, 4, 300);
перекласти ([0, 0, totlength / 2]) повернути ([45, 0, 0])
трубка (50, 4, 150);


циліндр (r = 50 - 4, h = довжина рушника);
перекласти ([0, 0, totlength / 2]) повернути ([45, 0, 0])
циліндр (r = 50 - 4, h = довжина рушника / 2);

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

Сантехніка

Якщо ви хочете зробити більше трубок, ви можете використовувати модуль у прикладі вище та розпочати розширення. Код доступний за адресою https: // github.com / matstage / openSCAD-Циліндри.git, На момент написання статті існували лише ці два, але часто перевіряйте, щоб побачити більше. Можливо, ви зможете створювати більш захоплюючі речі.

Всередині блоку

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

модуль блоку циліндрів (
циліндр R = 3,
Край = 1,
numCylinders = 8)

різниця ()
куб ([циліндрR * 2 + Edge * 2,
cylinderR * 2 * numCylinders + Edge * numCylinders + Edge, 10]);
для (x = [0: 1: numCylinders-1])
перекласти ([cylinderR + Edge, cylinderR * x * 2 + Edge * x + cylinderR + Edge, 0])
циліндр (r = циліндрR, h = 12);

Тут у вас є куб, який зростає відповідно до кількості циліндрів, яку ви хочете всередині блоку. Усі значення в модулі є типовими, тому ви можете використовувати його без значень. Щоб використовувати його, використовуйте 'use 'у верхній частині вашого файлу, а потім додайте cylinderblock (numCylinders = 8). Ви можете використовувати або опустити будь-яке значення, коли ви опустите їх, це буде мати значення за замовчуванням. Коротше кажучи, всередині модуля починається зі значень, а потім створюється куб, який повинен бути достатньо довгим, щоб вмістити циліндри. Потім це продовжується, виймаючи циліндри із заявою for. Завдяки заяві for ви можете зробити більший або менший блок. Для більш просунутих модулів ви можете встановити обмеження, що змінюють дизайн, коли досягаються певні значення. Можливо, ви хочете зробити це V, якщо це 8 або більше циліндрів.

Видавлювання з плоскої форми

Ще один спосіб створити циліндр - це зробити коло і видавити його. Суцільний циліндр складається лише з двох ліній:

екстремальний витяг (15)
коло (20);

Це створює довжину 15 (одиниць у openSCAD) з радіусом 20. Ви можете використовувати діаметр, використовуючи параметр d. Просто створення циліндра не дуже корисно, але ви можете використовувати ту саму техніку для будь-якої 2D-фігури. Ви побачите це пізніше. У той час як порожнистий циліндр код трохи довший.

екстремальний витяг (15)
різниця ()
коло (20);
коло (18);

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

rotate_extrude (кут = 180, опуклість = 10)
перекласти ([30,0,0])
різниця ()
коло (20);
коло (10);

Цей код створює порожнисте півколо. Примітка, з якою слід бути обережним, необхідний переклад, або ви отримаєте помилку: «ПОМИЛКА: всі точки для rotateextrude () повинні мати однаковий знак координати X (діапазон -2.09 -> 20.00) ". Числа залежатимуть від значення в колі. Оскільки це створює таку ж форму, як циліндр, це може здатися марним. Це не так! Найкраще використання цієї команди полягає в тому, щоб зробити плоску форму якось функціональною. Як посібник наведено простий багатокутник, він створює круглу форму, де можна запустити ремінь. Ви також можете крутити його навколо. Наведений нижче код створює штопор.

перекласти ([- 80,0,0])
linear_extrude (80, кручення = 900, масштаб = 2.0, фрагменти = 100)
перекласти ([2, 0, 0])
квадрат (10);

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

перекласти ([0, -80, 0])
rotate_extrude (кут = 275)
перекласти ([12,3,2])
багатокутник (точки = [[0,0], [20,17], [34,12], [25,22], [20, 30]]);

Ви можете експериментувати з формою багатокутника, поки не підберете її правильно для своєї програми. Якщо вам здається трохи страшним, використовуючи лише цифри, ви можете створити профіль в інших програмах САПР та імпортувати результат dxf за допомогою команди import ().

Висновок

Зробити циліндр просто, але це лише початок процесу. Хитра частина полягає в тому, щоб зробити з нею щось корисне. Вам також потрібно включити його у свій дизайн і, можливо, створити складніші проблеми, ніж циліндри. Знайдіть шляхи та проблеми для вашого постійного розширення знань за допомогою openSCAD. Не забувайте користуватися документацією та спиратися на інше програмне забезпечення, коли цього неможливо легко досягти за допомогою цифр тощо. Щось, про що не йдеться в цій публікації, це те, що ви можете малювати речі в Inkscape та Blender та імпортувати їх у openSCAD. Експорт з openSCAD у stl та інші формати добре підтримується, і якщо вам справді цікаво, ознайомтесь із творами на Thingiverse. У них є купа ентузіастів, які вносять речі на свій сайт.

How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...