CAD

цилиндр openSCAD

цилиндр openSCAD
При подготовке этой статьи я хотел выяснить, у каких людей возникают проблемы с openSCAD. К моему удивлению, самый частый вопрос был о создании цилиндра. Существует команда цилиндра, о которой вы сначала узнаете подробности. После этого вы увидите инновационные способы создания цилиндров по своему вкусу. Вы также можете убрать цилиндры от других деталей, чтобы создавать более интересные вещи. Большинство читателей, которые приходят сюда, наверняка хотят увидеть полый цилиндр или какую-нибудь трубку. Продолжайте читать, у нас много для вас припас.

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

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

цилиндр (r1 = 20);
цилиндр (r1 = 20, r2 = 5);
цилиндр (r1 = 20, h = 40);
цилиндр (r = 20, h = 40);
цилиндр (r1 = 20, r2 = 5, h = 40, center = true);

Первые два цилиндра в приведенном выше коде не имеют смысла, потому что у них нет высоты. Распространенная ошибка - когда вы забываете значение, и оно выглядит не так, как вы планировали. Когда вы используете переменные, то же самое происходит, если вы используете неопределенную переменную. В этом случае для высоты, но проверьте журнал консоли при запуске.

Конус

Третий - конус, причина в том, что значение 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;
baser = 30;
топр = 12;
высота = 50;
union ()
// Нижний конус
разница()
цилиндр (r1 = baser, r2 = topr, h = высота);
цилиндр (r1 = толщина основания, r2 = верх - толщина, h = высота + толщина);

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

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

Делаем пробирку

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

тубр = 20;
tubl = 80;
толстый = 2;
разница()
цилиндр (r1 = тубр, r2 = тубр, h = тубл);
цилиндр (r1 = тубр - толщина, r2 = тубр - толщина, h = тубл);

Попробуйте, и у вас будет только простой цилиндр, чтобы сделать всю трубку, вам нужно расплавить ее вместе с полусферой. В openSCAD по умолчанию нет полусферы, вы должны сделать это. Используйте разницу между двумя сферами, чтобы создать полую сферу, затем удалите другой куб, который отрезает сферу.

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

Теперь у вас есть две отдельные части. Следующий шаг - собрать их вместе. Здесь вы можете использовать команду union. Подобно команде разницы, объединение берет все части по порядку. В союзе порядок не так важен, так как это дополнение. Код будет выглядеть немного некрасиво, потому что мы здесь не используем модули.

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

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


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

Здесь мы проектируем его вверх ногами, решать вам. Делайте то, что удобно в конкретном случае. Вы всегда можете повернуть его, когда используете. У верхнего кольца острые края, вы можете исправить это, используя круг и вращая его. Есть и другие способы сделать это, изучить и поэкспериментировать!

rotate_extrude (выпуклость = 10, $ fn = 100)
перевести ([тубр, 0, 0])
круг (r = толстый, $ fn = 100);

Объединение множества цилиндров

После того, как вы сделали трубку из нескольких цилиндров, вы также можете захотеть соединить их по-разному. Для этого можно снова использовать союз. Допустим, вы хотите, чтобы одна трубка располагалась под углом 45 градусов к другой. Для этого поместите угловую трубку на полпути вверх по большой трубке.

union ()
трубка (50, 4, 300);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
трубка (50, 4, 150);

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

разница()
union ()
трубка (50, 4, 300);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
трубка (50, 4, 150);


цилиндр (r = 50 - 4, h = длина);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
цилиндр (r = 50 - 4, h = длина / 2);

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

Сантехника

Если вы хотите сделать больше трубок, вы можете использовать модуль из приведенного выше примера и начать расширять. Код доступен по адресу https: // github.com / matstage / openSCAD-цилиндры.git, на момент написания есть только эти два, но проверяйте почаще, чтобы увидеть больше. Возможно, вы сможете создавать более интересные вещи.

Внутри блока

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

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

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

Здесь у вас есть куб, который растет в соответствии с количеством цилиндров, которое вы хотите внутри блока. Все значения в модуле являются значениями по умолчанию, поэтому вы можете использовать его без значений. Чтобы использовать это, используйте 'использовать 'в верхней части файла, а затем добавьте блок цилиндров (numCylinders = 8). Вы можете использовать или опускать любые значения, когда вы их опускаете, будет использоваться значение по умолчанию. Короче говоря, внутренняя часть модуля начинается со значений, а затем создается куб, который должен быть достаточно длинным, чтобы вместить цилиндры. Затем он продолжает, удаляя цилиндры с помощью оператора for. Благодаря оператору for вы можете создать блок большего или меньшего размера. Для более продвинутых модулей вы можете установить ограничения, которые изменят дизайн при достижении определенных значений. Возможно, вы захотите сделать его V, если у него 8 или более цилиндров.

Экструзия из плоской формы

Другой способ создать цилиндр - создать круг и выдавить его. Сплошной цилиндр - это всего две линии:

линейная_экструзия (15)
круг (20);

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

линейная_экструзия (15)
разница()
круг (20);
круг (18);

Это то же самое, но, как мы делали ранее, вы удаляете центральный круг. Вы также можете согнуть его по кругу с версией rotate_extrude. Это отлично подходит для приготовления пончиков, самый простой вариант выглядит как один.

rotate_extrude (angle = 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. У них есть группа энтузиастов, которые вносят свой вклад в их сайт.

Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...
Топ-5 карт для захвата игр
Все мы видели и любили потоковые игры на YouTube. PewDiePie, Jakesepticye и Markiplier - лишь некоторые из лучших игроков, которые заработали миллионы...
Как разработать игру в Linux
Десять лет назад не многие пользователи Linux могли бы предсказать, что их любимая операционная система однажды станет популярной игровой платформой д...