Готовый перевод Low-cost 3D Printing for Science, Education and Sustainable Development / Доступная 3Д печать для науки, образования и устойчивого развития: 8. 3D моделирование с OpenSCAD - Часть 2
Мариус Кинтел
Разработчик OpenSCAD, Австрия
marius@kintel.net
Пара слов от автора
OpenSCAD вырос из сообщества RepRap, точнее из деятельности в области 3D печати в Metalab (http://metalab.at), клубе программистов-энтузиастов в Вене, Австрия.
Идея OpenSCAD возникла, потому что мы нуждались в свободном программном инструменте разработки для быстрого и многократно повторяющегося создания механических деталей.
Использование существовавших в то время инструментов было слишком трудозатратным и изменение детали, часто требовало её полной переделки. Коммерческие САПР, решавшие эти проблемы, существовали, однако помимо запредельной стоимости, они не были открытым ПО, и мы чувствовали, что мир нуждается в лучшем инструменте проектирования с открытым исходным кодом. Основная идея OpenSCAD состояла в том, чтобы позволить людям описывать свои 3D модели, начав с основных строительных блоков, и затем многократно их повторяя, строить с их помощью. Дополнительно мы хотели, чтобы программа была подходящей для описания параметрических форм и положений для того, чтобы упростить настройки и адаптацию, без необходимости проходить через трудоемкие и скучные задачи реконструирования.
Вначале мы поняли, что OpenSCAD будет иметь серьезные ограничения в плане создания геометрических фигур, поэтому мы решили дать пользователям возможность выбрать программу моделирования более сложных строительных блоков. Затем OpenSCAD может импортировать эти файлы для дальнейшего моделирования, в то же время вы в любой момент можете вернуться назад и изменить основную геометрию без необходимости переделывать работу, уже проделанную в OpenSCAD. Сохранение исходного кода в качестве пользовательского интерфейса также обладает важным свойством, заключающимся в том, что люди захотят поделиться своими проектами, а также конструктивными идеями. Это также делает возможным менять, повторно использовать, или другими способами базироваться на существующих идеях и проектах других людей.
Параметрические разработки
Одно из сильных мест OpenSCAD – поддержка параметрических разработок. Параметрический в данном контексте означает, что Вы можете создать логические строительные блоки, которые принимают определенные параметры, а возвращают созданный 3D компонент, отвечающий этим параметрам. Примерами таких параметров могут быть размеры объекта, отверстия гайки и болта, описания объекта (например, число зубчиков шестеренки) или элементы проекта (текст штамповки на разработке).
В OpenSCAD стандартные блоки называются модулями. Модуль – тип шаблона, который задается один раз и может использоваться многократно с различными параметрами. Следующий код определяет модуль TopPlate, который описывает параметрическую пластину с четырьмя резьбовыми отверстиями. Параметры модуля – это размеры пластины и размеры винтов. Затем вызываются два экземпляра модуля TopPlate :
module TopPlate(size, screwsize)
{
margin = 3;
offset = screwsize/2 + margin;
difference() {
cube(size);
for (xoffset = [offset, size[0] - offset], yoffset = [offset, size[1] - offset]) {
translate([xoffset, yoffset, -0.5]) cylinder(r=screwsize/2, h=size[2]+1);
}
}
}
TopPlate(size=[40,50,3], screwsize=8);
translate([50,0,0]) TopPlate(size=[40,30,5], screwsize=3);
Библиотеки
Множество задач моделирования, особенно при создании механических деталей или комплектующих, состоит из повторного использования стандартных элементов таких как крепежи, отверстия, прорези и т.д. В дополнение к определяющим модулям, которые упрощают повторное использование компонента в одном проекте, также возможно использование внешних библиотек. OpenSCAD включает набор общих компонентов в библиотеке названной MCAD.
Следующий пример основывается на предыдущем, но с добавлением накидных гаек под винт к существующим отверстиям и использование модуля библиотеки MCAD nuts_and_bolts, чтобы получить верные размеры гайки, соответствующей размеру винта:
[код]
include<MCAD/nuts_and_bolts.scad>
module screwhole(screw, depth)
{
translate([0,0,-0.5]) cylinder(r=screw/2, h=depth+1);
translate([0,0,-0.01]) nutHole(size=screw);
}
module TopPlate(size, screwsize)
{
margin = 2;
offset = METRIC_NUT_AC_WIDTHS[screwsize]/2 + margin;
difference() {
cube(size);
for (xoffset = [offset, size[0] - offset], yoffset = [offset, size[1] - offset]) {
translate([xoffset, yoffset, 0]) screwhole(screwsize, size[2]);
}
}
}
TopPlate(size=[40,50,7], screwsize=8);
translate([50,0,0]) TopPlate(size=[40,30,5], screwsize=3);
По причине открытой природы OpenSCAD совместное использование библиотек реализуется простым расшариванием исходного кода модулей. Множество разработчиков моделей создали свои библиотеки компонентов и выложили их онлайн. На Thingiverse есть много библиотек OpenSCAD:
http://www.thingiverse.com/search?q=openscad+library
Примеры использования
Так как OpenSCAD произошел от ранней 3D печати и движения RepRap, пользовательская база является все еще самой сильной среди этих сообществ. В результате, некоторые из самых выдающихся примеров использования OpenSCAD – это разработка самих 3D принтеров.
Некоторые примеры:
• RepRap Prusa версия 3:
https://github.com/josefprusa/Prusa3
• АО Lulzbot 100 (частично):
http://download.lulzbot.com/AO-100/hardware/printed_parts/source/
• Lulzbot TK-0:
https://github.com/mswillia/TK-0
• RepRap Mendel90:
http://hydraraptor.blogspot.co.uk/2012/12/mendel90-updates.html
Найти разработки OpenSCAD можно в самом большом репозитарии Thingiverse:
http://www.thingiverse.com/tag:openscad
Переведено на Нотабеноиде
http://notabenoid.org/book/41907/160864
Переводчики: Woolpit, mishavolkin, alex_itz
Настройки
Готово:
