OpenSCAD – это 3D-редактор, в котором удобно создавать несложные объекты в технических целях. Ниже мы расскажем, что представляет собой эта программа, какими возможностями, преимуществами и недостатками обладает, а также дадим пару уроков по основам проектирования объемных моделей и операций с ними.
- 1 Что такое OpenSCAD
- 2 Возможности OpenSCADа
- 3 Преимущества и недостатки
- 4 Уроки для начинающих по OpenSCAD
- 4.1 Настройка программы
- 4.2 Основы
- 4.3 Как кодировать в OpenScad
- 4.4 Как экспортировать дизайн из OpenScad в STL
Что такое OpenSCAD
OpenSCAD представляет собой скриптовый 3D-редактор параметрических моделей. Программа занимает крайне мало места на жестком диске, при этом обладает обширным функционалом, позволяющим создавать сложные и многогранные модели.
Интерфейс программы достаточно прост. Кому-то это покажется плюсом – нет лишних и ненужных нагромождений, на виду только окно для ввода кода слева, окошко с визуализацией модели и консоль справа, а также пара пунктов меню сверху. Для начинающих это может быть минусом – подсказок и интерактивности минимум, вспомогательные кнопки не помогают при непосредственном моделировании.
OpenSCAD Tutorial — Beginners Quickstart
Чтобы начать создавать модели, нужно просто написать соответствующую команду в левой части окна. Так выглядит окно OpenSCAD на MacOS (на других системах заметных отличий нет).
Возможности OpenSCADа
Чтобы сделать, к примеру, самый простой геометрический примитив – куб – нужно просто написать команду cube(), а в скобках указать размер грани. При нажатии на F5 в правой части окна появится окошко визуализации с готовой фигурой, расположенной на осях координат в точном соответствии с указанным размером.
В программе есть все необходимое для программиста, включая разделение программы на модули, возможность написания библиотек, циклы, условия и функции (например, математические). При помощи математических функций можно создавать довольно сложные геометрические фигуры, а потом соединять их друг с другом, получая в результате еще более сложные модели.
Без знаний сложных математических функций пользователю будет доступно создание скудного набора графических примитивов, таких как сферы, параллелепипеды, цилиндры и т. д. Набор операций тоже скромный – масштаб, трансляция, поворот и комбинирование при помощи булевых операций, создание тел вращения и вытяжения. Для того чтобы снять фаску с ребра фигуры, нужно искать специальные библиотеки, включающие соответствующие функции. То же самое с шестеренками и резьбой.
OpenSCAD, установите это бесплатное и легкое программное обеспечение для 3D CAD
В следующей статье мы рассмотрим OpenSCAD. Это один бесплатное приложение для создания твердых объектов из 3D CAD. Сделать конструктивную геометрию твердых тел (РГС). Это не интерактивный редактор, а трехмерный компилятор, основанный на языке текстового описания. Документ OpenSCAD определяет геометрические примитивы и определяет, как они модифицируются и управляются для воспроизведения 3D-модели.
Моделирование в свободной системе OpenSCAD. Быстрый старт за 30 мин.
Это программное обеспечение 3D CAD бесплатный, легкий и гибкий. Это довольно сложный в использовании инструмент, поскольку он предлагает ограниченную интерактивность. Требует пользователя ‘программы’модель, а затем представляет визуальную модель, соответствующую вашему коду. Он в основном работает как компилятор, принимая команды, предоставленные пользователем, интерпретируя их и предоставляя результаты. Модель не может быть нарисована с помощью этого программного обеспечения, мы сможем только описать ее.
Это бесплатное программное обеспечение, которое мы найдем доступным для разных платформ. В отличие от бесплатного программного обеспечения для создания 3D-моделей, такого как Blender, оно не фокусируется на художественных аспектах 3D-моделирования. Скорее фокусируется на аспектах САПР. Таким образом, это приложение может быть привлекательным для тех, кто хочет создавать 3D-модели деталей машин. Следует подчеркнуть, что это не то, что вы ищете, когда вас интересует создание компьютерных анимационных фильмов.
- 1 Что мы можем делать с OpenSCAD?
- 2 Установите OpenSCAD в Ubuntu 18.04
- 3 Удалить OpenSCAD
Что мы можем делать с OpenSCAD?
OpenSCAD не специалист по интерактивному моделированию. Вместо этого это что-то вроде 3D-компилятора файла сценария, описывающего объект, который в итоге рендерит его 3D-модель. Это предложит дизайнеру полный контроль над процессом моделирования. Позволяет вам изменять любой шаг в процессе моделирования или создавать проекты, определяемые настраиваемыми параметрами.
Это программное обеспечение предложит нам два метода моделирования. Первый конструктивная твердотельная геометрия (также известный как CSG) и, во-вторых, Экструзия 2D контура.
Файлы Autocad DXF их можно использовать в качестве формата обмена данными для 2D-схем. Помимо 2D-путей для выдавливания, также можно считывать параметры макета из файлов DXF. Помимо файлов DXF, OpenSCAD может читать и создавать 3D-модели в форматах файлов STL и OFF..
Программа также позволит дизайнеру создавать точные 3D-модели и параметрические конструкции которые можно легко настроить, изменив параметры.
Благодаря текстовому характеру это намного проще для людей распространять чертежи САПР как документы OpenSCAD, независимо от дополнительных улучшений каждого из них. Мы также сможем объединить все чертежи САПР в единый документ, включающий все внесенные улучшения.
Установите OpenSCAD в Ubuntu 18.04
OpenSCAD — это доступно для Windows, Linux и OS X. En ваш веб Они разместили новости о том, что работают над улучшениями для этой программы.
Если вы хотите, моментальный снимок разработки теста, созданный автоматически из репозитория, с опасностями для стабильности, которые он может принести. Его самую последнюю версию вы сможете установить через оснастка ввод в терминале (Ctrl + Alt + T):
sudo snap install openscad-nightly
OpenSCAD для пионеров и пенсионеров: целый день для знакомства
Постоянно видел на Thingiverse модели с исходниками на OpenSCAD. Даже пытался загружать этот код — но, похоже, тормозная жидкость залита в OpenSCAD при разработке в изобилии, при отображении более-менее сложной модели компьютер подвисает на десятки минут. В итоге — не вдохновило.
Обычно я пользуюсь древним Sketchup — еще гугловским, той античной версией, когда гугл врал, что Sketchup — это навсегда, и его бесплатная версия в усеченном варианте будет всегда доступна даже для коммерческого использования. Я, будучи по натуре легковерным, даже с Ruby слегка разобрался, автоматически прорисовывал профиля крыльев игрушечных самолетиков в Sketchup и генерировал код для пенорезки, чтобы их вырезать. Почти вчера было — но Ruby я уже абсолютно не помню.
Нарисовать в Sketchup что-то очень сложное и мелкое, чтобы можно было распечатать — это головная боль. Нарисовать-то можно, но он потеряет маленькие кусочки изображения, если их и удастся преобразовать в STL, то сгенерировать код для печати ни один слайсер не сможет.
Вот примерно такая моделька и понадобилась. Я даже нашел готовый STL файл.
Не знаю, что курил автор, но все отверстия были неправильных размеров, и использовать не получилось. А исходник автор положить не посчитал нужным. Проектировать такую модель с помощью Sketchup как-то не захотелось — плавали, знаем.
Вроде модель должна быть не сложная для OpenSCAD, но изучать его как-то не хотелось — пока дочитаешь до конца описание, забудешь, что было вначале. Все-таки не очень молодой, склероз крепчает и приходит альтернативная одаренность. Короче, решил, что изучать я ничего не буду. Буду искать подходящие решения в описании OpenSCAD по мере потребности.
И таки сработало — за один день я нарисовал эту детальку. Напечатать уже не успел — поставил на печать на второй день.
Так что предупреждаю — то, что сделано, сделано не от большого ума и знаний, а как уж карта легла. Может быть можно лучше и быстрее — но для одного дня должно быть не очень плохо, цель достигнута.
Если что описал неправильно, то это не по злому умыслу, а исключительно по незнанию — проект-то однодневка.
Со вступлением хватит, как повторял Остап Бендер за Мопассаном, ближе к телу.
Основание для крепления вентилятора — хотелось бы квадрат с закругленными краями. В элементарных функциях такой не нашелся. Но зато найдена не менее интересная вещь — на нарисованные элементы можно натянуть поверхность.
Пробуем — рисуем по углам цилиндрики с радиусом, который хотим иметь для закругления. Рисовать каждый отдельно — дурной вкус, используем циклы, благо они имеются.
$fn= 48; FanBase(); module FanBase() < height = 4; radius = 3; width = 41; union() < for(x = [0:1]) < for(y = [0:1]) < translate([(width-radius)*x-(width-radius)/2, (width-radius)*y-(width-radius)/2, 0]) cylinder(r = radius, h = height, center = false); >> > >
Теперь просто меняем объединение union() на поверхность hull() — и все готово!
Это бы все это свести на конус. Натянется ли поверхность на 8 цилиндриков на разных высотах? Причем квадрат должен перейти в прямоугольник — диаметр у радиатора ведь меньше его высоты.
Без проблем — и код теперь выглядит так:
$fn= 48; FanBase(); module FanBase() < height = 4; radius = 3; width = 41; height_s = 1; radius_s = 2; length_s = 32; width_s = 27.5; skirt1_height = 13; skirt2_height = 12.5; hull() < for(x = [0:1]) < for(y = [0:1]) < translate([(width-radius)*x-(width-radius)/2, (width-radius)*y-(width-radius)/2, 0]) cylinder(r = radius, h = height, center = false); translate([(length_s-radius_s)*x-(length_s-radius_s)/2, (width_s-radius_s)*y-(width_s-radius_s)/2, skirt1_height-height-height_s]) cylinder(r = radius_s, h = height_s, center = false); >> > >
Теперь бы юбку поднять повыше (гусары, молчать!) — нам нужно до половины диаметра закрыть радиатор. Делаем еще 4 цилиндра и натягиваем поверхность на них.
Вроде еще не сильно утомились, а картинка уже такая:
код тоже еще не напрягает:
$fn= 48; FanBase(); module FanBase() < height = 4; radius = 3; width = 41; height_s = 1; radius_s = 2; length_s = 32; width_s = 27.5; skirt1_height = 13; skirt2_height = 12.5; union() < hull() < for(x = [0:1]) < for(y = [0:1]) < translate([(length_s-radius_s)*x-(length_s-radius_s)/2, (width_s-radius_s)*y-(width_s-radius_s)/2, skirt1_height]) cylinder(r = radius_s, h = skirt2_height, center = false); >> > hull() < for(x = [0:1]) < for(y = [0:1]) < translate([(width-radius)*x-(width-radius)/2, (width-radius)*y-(width-radius)/2, 0]) cylinder(r = radius, h = height, center = false); translate([(length_s-radius_s)*x-(length_s-radius_s)/2, (width_s-radius_s)*y-(width_s-radius_s)/2, skirt1_height-height_s]) cylinder(r = radius_s, h = height_s, center = false); >> > > >
Теперь займемся отверстиями для винтиков и гаечек. Имеем в виду, что когда пластик наплавляется, диаметр отверстия уменьшается на 0.2. 0.4 мм. Если отверстие окажется чуть больше нужного — беда небольшая, а вот шестиугольное отверстие рассверлить, если оно окажется меньше нужного — у меня лично шестиугольных сверл нет.
При ближайшем рассмотрении оказывается, что цилиндр — это далеко не обязательно цилиндр, число граней можно указать. Чем больше граней — тем он больше будет похож на цилиндр. А для гаечек 6 граней — это то, что нам надо.
FanScrewHoles(); module FanScrewHoles() < width = 32; height = 4; height2 = 12; diam = 3.2; hex_nut = 6.6; union() < for(x = [0:1]) < for(y = [0:1]) < hull() < translate([width*x — width/2,width*y — width/2, height]) cylinder(h=height2, r=hex_nut/2, center=false, $fn=6); translate([width*x — width/2,width*y — width/2, height+height2]) cylinder(h=2, r=1, center=false); >translate([width*x — width/2,width*y — width/2, -0.1]) cylinder(h=height+0.2, r=diam/2, center=false); > > > >
Теперь вычитаем отверстия из юбки
difference()
Надо бы заняться отверстием для воздуха — идем по накатанной дорожке, рисуем дырку наоборот.
Соединяем все вместе:
difference()
Теперь нужна упрощенная модель печатающей головки. Опять не забываем, что готовое пластиковое изделие не будет точно соответствовать спроектированной модели, уменьшаем/увеличиваем где надо.
Тут я расслабился и переменные не вынес в отдельные строки.
module HotEnd() < union() < cylinder(r = 25/2, h = 32, center = false); translate([0,0,32]) cylinder(r = 16/2, h = 3.5, center = false); translate([0,0,32]) cylinder(r1 = 25/2, r2=16.4/2, h = 6.5, center = false); translate([0,0,35.5]) cylinder(r = 9/2, h = 2, center = false); translate([0,0,37.5]) cylinder(r = 16.4/2, h = 3.3, center = false); translate([0,0,40.8]) cylinder(r = 12.4/2, h = 5.2, center = false); translate([0,0,46]) cylinder(r = 16.4/2, h = 3.8, center = false) ; >>
Пристраиваем головку к нашему поделию:
union() < translate([-17,0,26]) rotate([0, 90, 0]) HotEnd(); difference() < FanBase(); FanScrewHoles(); AirHole(); >>
Теперь осталось нарисовать шейку-поддержку, желательно так, чтобы при печати обойтись без поддержек, извините за тафталогию. Дело вкуса, но я их не люблю.
module Mount() < width=29.5; union() < difference() < union() < translate([0,-width/2,0]) rotate([-90,-90,0]) linear_extrude(height = width, center = false, convexity = 10) polygon(points=[[10,1],[21.5,1],[21.5,18],[10,18],[0,8]]); >union() < translate([12.6, 22/2, 14.2]) cylinder(h=10, r=3.2/2, center=false); translate([12.6, 22/2, -0.1]) cylinder(h=14, r=6.6/2, center=false); translate([12.6, -22/2, 14.2]) cylinder(h=10, r=3.2/2, center=false); translate([12.6, -22/2, -0.1]) cylinder(h=14, r=6.6/2, center=false); >> > >
В конце концов складываем, что положено складывать, вычитаем остальное:
module MainFan() < difference() < union() < FanBase(); translate([14,0,4]) Mount(); >union() < FanScrewHoles(); AirHole(); translate([-17,0,26]) rotate([0, 90, 0]) HotEnd(); >> >
Можно запускать слайсер.
Имеем то, что имеем.
После этого поправить все размеры в готовом файле второй детальки было минутным делом.
В заключение кое-какие мои проектики, нарисованные в Sketchup.
Вот такой станочек нарисовать за пару-тройку дней, даже в Sketchup, смогут не только лишь все.
Ну а когда появилось, чем фрезеровать, сделал второй — на вид не такой эффектный, но работать с ним удобно, ромбы из квадратов уже не получаются.
Станки делал, когда уже заработал инвалидность — без дела сидеть мне лень, а с дикой атаксией что-то ровно отпилить было невозможно. Пилки по металлу просто ломались. Пришлось искать выход — голова, хоть и частично, но еще работает. Теперь станками пилю 🙂 — было бы что пилить.
Прочая 3D мелочь пузатая, которую я не поленился выложить, здесь.
Может, кто для себя полезное что найдет.
- Работа с 3D-графикой
- 3D-принтеры
- DIY или Сделай сам
Источник: habr.com