Руководство пользователя по OpenSCAD
OpenSCAD – это программное обеспечение для создания твердотельных трехмерных САПР-объектов. Оно является свободным и доступно под Linux/UNIX, Microsoft Windows и Apple Mac OS X.
В отличие от большинства свободных программ для трехмерного моделирования/проектирования (таких, как хорошо известное приложение Blender), OpenSCAD основное внимание уделяет не художественным аспектам трехмерного моделирования, а автоматизации проектирования. Т. е. OpenSCAD есть САПР. Т. е. если Вы создаете трехмерные модели деталей машин, то, вероятно, OpenSCAD то, что Вам нужно. (Но если же Вы создаете трехмерное анимационное кино, то OpenSCAD не для Вас. Для кинематографии лучше всего подойдет Maya.)
OpenSCAD не есть интерактивный редактор моделей. Напротив, OpenSCAD представляет собой что-то вроде трехмерного компилятора-движка, который читает написанный Вами файл скрипта, описывающего объект, и строит трехмерную модель в полном соответствии с ее описанием в этом файле. Это дает Вам (дизайнеру/конструктору) полный контроль над процессом моделирования и позволяет легко менять любой шаг в процессе моделирования или производства параметрических конструкций.
OpenSCAD предоставляет два основных метода моделирования: во-первых, это конструктивная сплошная геометрия (CSG), а во-вторых, экструзия (выдавливание) двухмерных контуров. Для задания двухмерных контуров используются AutoCAD DXF-файлы. В дополнение к двухмерному пути экструзии, возможно чтение проектных параметров из DXF-файлов. В дополнение к DXF-файлам, OpenSCAD может читать и строить модели из STL- и OFF-файлов.
OpenSCAD можно скачать с http://openscad.org/. (Найти дополнительную информацию можно в списке рассылки.) Также OpenSCAD доступен в официальных репозиториях многих популярных Linux-дистрибутивов (в частности Debian, Fedora/Red Hat, Gentoo и производных от них).
Люди, которые не хотят (или не могут) установить новое программное обеспечение на своем компьютере могут использовать OpenJSCAD (http://OpenJSCAD.org/), он позволяет работать с OpenSCAD в браузере, при условии что ваш браузер поддерживат WebGL.
Руководство пользователя OpenSCAD [ править ]
- Введение
- Первые шаги
- Пользовательский интерфейс OpenSCAD
- Использование OpenSCAD в режиме командной строки
- Сборка OpenSCAD из исходников
- Сборка под Linux/UNIX
- Сборка под Windows
- Сборка под Mac OS X
Справочник по языку OpenSCAD [ править ]
- Язык сценариев OpenSCAD
- Общие сведения — СНАЧАЛА ПРОЧТИТЕ ЭТО — комментарии, значения и типы данных, переменные, векторы, получение входных данных
- Примитивы объемных тел — куб, сфера, цилиндр и многогранники
- Трехмерное в двухмерное
- Двухмерные примитивы — Квадрат, круг, многоугольник
- Текст
- Двухмерное в трехмерное
- Итераторы и условные функции
- Математические операторы
- Математические функции
- Строковые функции
- CSG-моделирование
- Символы-модификаторы
- Модули
- Инструкция присоединения
- Другие особенности языка сценариев
- DXF-экструзия
- Другие двухмерные форматы
- Импорт STL-файлов
- Экспорт STL-файлов
Смайлики и символы сердечек
Есть много способов выразить нежные чувства в онлайн-общении, и один из них — конечно, использование Эмоджи в виде сердечка. Если вы влюблены, вам можно смело добавлять эту страницу в закладки, ведь здесь мы собрали множество различных вариантов сердечек для переписки в ВК и мессенджерах , которые позволят не повторяться, и каждый день удивлять свою половинку. Набрать сердечко с клавиатуры не так просто, но на нашем сайте вы можете легко скопировать и вставить их.
Эмоджи-сердечки существуют сразу в нескольких цветах, и считается, что каждый из них имеет свой особый смысл. Например, красное сердце — это любовь в чистом виде. Если вам присылают красные сердечки ❤️, а то и не по одному ❤️❤️❤️, это точно свидетельствует о романтических чувствах!
Зелёное сердечко можно расценивать как приглашение на свидание. А если вы еще не встречаетесь с этим человеком, то, можете быть уверены: вам предлагают отношения. Если после романтического свидания вам вместо красных шлют желтые или оранжевые Эмоджи-сердечки, это говорит о предложении остаться друзьями. Причем если в случае с оранжевым сердечком шансы на романтику есть, то желтое однозначно говорит: только дружба, увы. Ну что можно на это ответить? Разве что прислать Эмоджи с разбитым сердцем:
Специально для людей, ценящих оригинальность во всем придуманы фиолетовое и черное сердечки. А для любителей минимализма — Эмоджи в виде пустого прозрачного сердца ♡.
Говорят, что у двух влюбленных свой язык. И поэтому вы можете наделить любое маленькое сердечко тем смыслом, который вам больше нравится, и пользоваться им в переписке со своей половинкой. В конце концов, главное — это взаимопонимание.
Руководство пользователя по OpenSCAD/Примитивы объемных тел
cube() создает куб в первом октанте. Когда параметр center=true куб центрируется в начале координат. Имена аргументов являются необязательными, если они заданы в указанном здесь порядке.
cube(size = [x,y,z], center = true/false); cube(size = x , center = true/false);
Параметры : size одно значение, куб со всеми сторонами этой длины массив из 3-х значений [x, y, z], куб с размерами x, y и z. center false (по умолчанию), 1-й (положительный) октант, первый угол находится на (0,0,0) true, куб центрирован на (0,0,0)
значения по умолчанию: cube(); выводит: cube(size = [1, 1, 1], center = false);
примеры :
равнозначные описания для этого примера cube(size = 18); cube(18); cube([18,18,18]); . cube(18,false); cube([18,18,18],false); cube([18,18,18],center=false); cube(size = [18,18,18], center = false); cube(center = false,size = [18,18,18] );
равнозначные описания для этого примера cube([18,28,8],true); box=[18,28,8];cube(box,true);
Сфера [ править ]
Создает сферу в начале системы координат. Имя аргумента r является необязательным. Чтобы использовать d вместо r, d должен быть назван.
r Радиус. Это радиус сферы. Разрешение сферы зависит от размера сферы и переменных $fa, $fs и $fn. Для получения дополнительной информации об этих специальных переменных смотрите: OpenSCAD_User_Manual/Other_Language_Features d Диаметр. Это диаметр сферы. $fa Угол наклона фрагмента в градусах $fs Размер фрагмента в миллиметрах $fn Разрешение
значения по умолчанию: sphere(); выводит: sphere($fn = 0, $fa = 12, $fs = 2, r = 1);
Примеры использования
sphere(r = 1); sphere(r = 5); sphere(r = 10); sphere(d = 2); sphere(d = 10); sphere(d = 20);
// результатом будет сфера радиусом 2мм, с поверхностью высокого разрешения sphere(2, $fn=100);
// также создается сфера радиусом 2мм, с поверхностью высокого разрешения, но у этой // не так много маленьких треугольников на полюсах сферы sphere(2, $fa=5, $fs=0.1);
Цилиндр [ править ]
cylinder() создает цилиндр или конус с центром вокруг оси z. Если значение center равно true, оно также центрируется вертикально вдоль оси z.
Имена параметров являются необязательными, если они заданы в указанном здесь порядке. Если параметр получил имя, то все следующие параметры также должны быть поименованы.
ПРИМЕЧАНИЕ: Если используются r, d, d1 или d2, они должны быть названы.
cylinder(h = height, r1 = BottomRadius, r2 = TopRadius, center = true/false);
Параметры h : высота цилиндра или конуса r : радиус цилиндра. r1 = r2 = r. r1 : радиус, нижней части конуса. r2 : радиус, верхней части конуса. d : диаметр цилиндра. r1 = r2 = d / 2. Шаблон:Требуется d1 : диаметр, нижней части конуса. r1 = d1 / 2. Шаблон:Требуется d2 : диаметр, верхней части конуса. r2 = d2 / 2. Шаблон:Требуется center false (по умолчанию), z в диапозоне от 0 до h true, z в диапозоне от -h/2 до +h/2 $fa : минимальный угол (в градусах) каждого фрагмента. $fs : минимальная длина окружности каждого фрагмента. $fn : исправлено количество фрагментов в 360 градусах. Значения 3 или более переопределяют значения $fa и $fs $fa, $fs и $fn должны быть именованными параметрами. нажмите здесь для получения более подробной информации.
значения по умолчанию: cylinder(); выводит: cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);
равнозначные описания для этого примера cylinder(h=15, r1=9.5, r2=19.5, center=false); cylinder( 15, 9.5, 19.5, false); cylinder( 15, 9.5, 19.5); cylinder( 15, 9.5, d2=39 ); cylinder( 15, d1=19, d2=39 ); cylinder( 15, d1=19, r2=19.5);
равнозначные описания для этого примера cylinder(h=15, r1=10, r2=0, center=true); cylinder( 15, 10, 0, true); cylinder(h=15, d1=20, d2=0, center=true);
center = false
center = trueравнозначные описания для этого примера cylinder(h=20, r=10, center=true); cylinder( 20, 10, 10,true); cylinder( 20, d=20, center=true); cylinder( 20,r1=10, d2=20, center=true); cylinder( 20,r1=10, d2=2*10, center=true);
использование $fn
Большие значения $fn создают более гладкие, более круглые поверхности за счет увеличения времени рендеринга. Некоторые используют средние значения во время разработки для более быстрого рендеринга, а затем меняют значение на большое для окончательного рендеринга F6.
Однако использование малых значений может привести к появлению некоторых интересных некруглых объектов. Здесь показано несколько примеров:
описания для этих примеров cylinder(20,20,20,$fn=3); cylinder(20,20,00,$fn=4); cylinder(20,20,10,$fn=4);
отверстия меньшего размера
Используя cylinder() с difference() для размещения отверстий в объектах, создаются отверстия меньшего размера. Это происходит потому, что круговые пути аппроксимируются многоугольниками, вписанными внутри круга. Точки многоугольника находятся на окружности, но прямые линии между ними находятся внутри. Чтобы все отверстия были больше истинного круга, многоугольник должен лежать полностью за пределами круга (описанного). Модули для описанных отверстий
описание для этого примера poly_n = 6; color("blue") translate([0, 0, 0.02]) linear_extrude(0.1) circle(10, $fn=poly_n); color("green") translate([0, 0, 0.01]) linear_extrude(0.1) circle(10, $fn=360); color("purple") linear_extrude(0.1) circle(10/cos(180/poly_n), $fn=poly_n);
Многогранник [ править ]
Многогранник — это наиболее общее трехмерное простейшее твердое тело. Его можно использовать для создания любой правильной или неправильной фигуры, в том числе с вогнутыми и выпуклыми частями. Изогнутые поверхности аппроксимируются несколькими плоскими поверхностями.
polyhedron( points = [ [X0, Y0, Z0], [X1, Y1, Z1], . ], triangles = [ [P0, P1, P2], . ], convexity = N); // до 2014.03 polyhedron( points = [ [X0, Y0, Z0], [X1, Y1, Z1], . ], faces = [ [P0, P1, P2, P3, . ], . ], convexity = N); // 2014.03 & позже
Параметры points Вектор 3d точек или вершин. Каждая точка, в свою очередь, является вектором [x, y, z] своих координат. Точки могут быть определены в любом порядке. N точек указываются в оределённом порядке, от 0 до N-1. triangles Шаблон:OpenSCAD User Manual/Deprecated Вектор граней, которые в совокупности охватывают твердое тело. Каждая грань представляет собой вектор, содержащий индексы (на основе 0) 3 точек из вектора точек. faces Шаблон:Требует Вектор граней, которые в совокупности охватывают твердое тело. Каждая грань представляет собой вектор, содержащий индексы (на основе 0) 3 или более точек из вектора точек. Грани могут быть определены в любом порядке. Определите достаточное количество граней, чтобы полностью охватить твердое тело без перекрытия. Если точки, описывающие одну грань, не находятся в одной плоскости, грань автоматически разбивается на треугольники по мере необходимости. convexity Целое число. Параметр выпуклости указывает максимальное количество граней, через которые может пройти луч, пересекающий объект. Этот параметр необходим только для корректного отображения объекта в режиме предварительного просмотра OpenCSG. Это никак не влияет на рендеринг многогранника. При проблемах с отображением значение 10 должно работать нормально в большинстве случаев.
значения по умолчанию: polyhedron(); выводит: polyhedron(points = undef, faces = undef, convexity = 1);
Вы можете начать с любой точки, но все грани должны иметь точки, расположенные в одном и том же направлении. OpenSCAD предпочитает по часовой стрелке, когда смотрит на каждую грань снаружи внутрь. Задняя часть просматривается сзади, нижняя часть снизу и т.д. Еще один способ запомнить это требование к порядку — использовать правило правой руки. Используя правую руку, поднимите большой палец вверх и согните пальцы, как бы показывая большой палец вверх, направьте большой палец в грань и расположите точки в направлении, в котором сгибаются ваши пальцы. Попробуйте сделать это на примере ниже.
Пример 1 Использование многогранника для создания куба( [ 10, 7, 5 ] );
CubePoints = [ [ 0, 0, 0 ], //0 [ 10, 0, 0 ], //1 [ 10, 7, 0 ], //2 [ 0, 7, 0 ], //3 [ 0, 0, 5 ], //4 [ 10, 0, 5 ], //5 [ 10, 7, 5 ], //6 [ 0, 7, 5 ]]; //7 CubeFaces = [ [0,1,2,3], // bottom [4,5,1,0], // front [7,6,5,4], // top [5,6,2,1], // right [6,7,3,2], // back [7,4,0,3]]; // left polyhedron( CubePoints, CubeFaces );
равнозначные описания нижней грани [0,1,2,3], [0,1,2,3,0], [1,2,3,0], [2,3,0,1], [3,0,1,2], [0,1,2],[2,3,0], // 2 треугольника без перекрытия [1,2,3],[3,0,1], [1,2,3],[0,1,3],
Пример 2 Пирамида с квадратным основанием:
polyhedron( points=[ [10,10,0],[10,-10,0],[-10,-10,0],[-10,10,0], // четыре точки в основании [0,0,10] ], // точка вершины faces=[ [0,1,4],[1,2,4],[2,3,4],[3,0,4], // все стороны треугольников [1,0,3],[2,1,3] ] // два триугольника для квадратного основания );
Пример 3 Треугольная призма:
module prism(l, w, h) < polyhedron( points=[[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]], faces=[[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]] ); // предварительный просмотр развернутый (не включайте в свою функцию) z = 0.08; separation = 2; border = .2; translate([0,w+separation,0]) cube([l,w,z]); translate([0,w+separation+w+border,0]) cube([l,h,z]); translate([0,w+separation+w+border+h+border,0]) cube([l,sqrt(w*w+h*h),z]); translate([l+border,w+separation+w+border+h+border,0]) polyhedron( points=[[0,0,0],[h,0,0],[0,sqrt(w*w+h*h),0], [0,0,z],[h,0,z],[0,sqrt(w*w+h*h),z]], faces=[[0,1,2], [3,5,4], [0,3,4,1], [1,4,5,2], [2,5,3,0]] ); translate([0-border,w+separation+w+border+h+border,0]) polyhedron( points=[[0,0,0],[0-h,0,0],[0,sqrt(w*w+h*h),0], [0,0,z],[0-h,0,z],[0,sqrt(w*w+h*h),z]], faces=[[1,0,2],[5,3,4],[0,1,4,3],[1,2,5,4],[2,0,3,5]] ); >prism(10, 5, 3);
Отладка многогранников [ править ]
Ошибки при определении многогранников включают в себя отсутствие всех граней с одинаковым порядком, перекрытие граней и отсутствие граней или частей граней. Как правило, грани многогранника также должны удовлетворять нескольким условиям:
- ровно две грани должны встретиться на любом ребре многогранника.
- Если две грани имеют общую вершину, то они должны быть в в том же цикле грань-ребра вокруг вершины.
Первое правило исключает многогранники, такие как два куба с общим ребром, а не герметичные модели; второе исключает многогранники, такие как два куба с общей вершиной.
При взгляде снаружи точки, описывающие каждую грань, должны располагаться в одном и том же порядке. OpenSCAD предпочитает CW (clockwise — по Часовой Стрелке) и предоставляет механизм для обнаружения CCW (counterclockwise — Против Часовой Стрелки). Когда комбинированный вид (F12) используется с F5, грани ПЧС (CCW) отображаются розовым цветом. Измените порядок точек для неправильных граней. Поверните объект, чтобы просмотреть все грани. Розовый вид можно отключить с помощью F10.
OpenSCAD позволяет временно закомментировать часть описаний граней, чтобы отображались только оставшиеся грани. Используйте //, чтобы закомментировать остальную часть строки. Используйте /* и */, чтобы начать и закончить блок комментариев. Это может быть частью строки или распространяться на несколько строк. Просмотр только части граней может быть полезным при определении правильных точек для отдельной грани. Обратите внимание, что твердое тело не отображается, только грани. При использовании F12 все грани имеют одну розовую сторону. Комментирование некоторых граней помогает также показать любое внутреннюю грань.
CubeFaces = [ /* [0,1,2,3], // bottom [4,5,1,0], // front */ [7,6,5,4], // top /* [5,6,2,1], // right [6,7,3,2], // back */ [7,4,0,3]]; // left
После определения многогранника его предварительный просмотр может показаться правильным. Один только многогранник может даже хорошо отрисоваться. Однако, чтобы убедиться, что это допустимое множество и что оно может генерировать допустимый файл STL, объедините его с любым кубом и визуализируйте его (F6). Если многогранник исчезает, это означает, что он неправильный. Пересмотрите порядок намотки всех граней и два правила, изложенные выше.
Неправильно направленные грани [ править ]
Пример 4 более сложный многогранник с неправильно упорядоченными гранями
Если вы выберете ‘Всё вместе (Thrown together) [F12]’ в меню Вид (View) и скомпилируйте дизайн [F5] (не компелировать и рендер! [F6]) предварительный просмотр покажет выделением неправильно направленные полигоны. К сожалению, это выделение невозможно в режиме предварительного просмотра OpenCSG, поскольку это помешало бы реализации режима предварительного просмотра OpenCSG.
Ниже вы можете увидеть код и изображение такого проблемного многогранника, плохие полигоны (грани или сочетания граней) окрашены в розовый цвет.
// Плохой многогранник polyhedron (points = [ [0, -10, 60], [0, 10, 60], [0, 10, 0], [0, -10, 0], [60, -10, 60], [60, 10, 60], [10, -10, 50], [10, 10, 50], [10, 10, 30], [10, -10, 30], [30, -10, 50], [30, 10, 50] ], faces = [ [0,2,3], [0,1,2], [0,4,5], [0,5,1], [5,4,2], [2,4,3], [6,8,9], [6,7,8], [6,10,11], [6,11,7], [10,8,11], [10,9,8], [0,3,9], [9,0,6], [10,6, 0], [0,4,10], [3,9,10], [3,10,4], [1,7,11], [1,11,5], [1,7,8], [1,8,2], [2,8,11], [2,11,5] ] );
Правильный многогранник был бы следующим:
polyhedron (points = [ [0, -10, 60], [0, 10, 60], [0, 10, 0], [0, -10, 0], [60, -10, 60], [60, 10, 60], [10, -10, 50], [10, 10, 50], [10, 10, 30], [10, -10, 30], [30, -10, 50], [30, 10, 50] ], faces = [ [0,3,2], [0,2,1], [4,0,5], [5,0,1], [5,2,4], [4,2,3], [6,8,9], [6,7,8], [6,10,11],[6,11,7], [10,8,11], [10,9,8], [3,0,9], [9,0,6], [10,6, 0],[0,4,10], [3,9,10], [3,10,4], [1,7,11], [1,11,5], [1,8,7], [2,8,1], [8,2,11], [5,11,2] ] );
Совет для начинающих
Если вы действительно не понимаете «ориентацию», попробуйте определить неправильно ориентированные розовые грани, а затем перевернуть последовательность ссылок на векторы точек, пока не получите правильное отображение. К примеру, в приведенном выше примере третий треугольник([0,4,5]) был неправильным, и мы исправили это так [4,0,5]. Помните, что список граней — это круговой список. Кроме того, вы можете выбрать «Показать ребра» в меню «Вид», распечатать снимок экрана и пронумеровать как точки, так и грани. В нашем примере точки помечены черным цветом, а грани — синим. Переверните объект и при необходимости сделайте вторую копию с обратной стороны. Таким путём вы сможете держать верное направление (This way you can keep track).
Техника по часовой стрелке
Ориентация определяется круговым указанием по часовой стрелке. Это означает, что если вы смотрите на треугольник (в этом случае [4,0,5]) снаружи вы увидите, что путь проходит по часовой стрелке вокруг центра грани. Порядок намотки [4,0,5] по часовой стрелке и, следовательно, хорошо. Порядок намотки [0,4,5] против часовой стрелки и, следовательно, плохо. Аналогично, любой другой порядок по часовой стрелке [4,0,5] работает: [5,4,0] и [0,5,4] тоже хорошо. Если вы используете технику по часовой стрелке, ваши грани всегда будут снаружи (за пределами OpenSCAD, хотя другие программы используют против часовой стрелки в качестве внешней стороны).
Думайте об этом как о Правиле Левой Руки:
Если вы положите левую руку на грань, согнув пальцы в направлении порядка точек, ваш большой палец должен быть направлен наружу. Если ваш большой палец указывает внутрь, вам нужно изменить порядок намотки.
Краткое описание ‘Многогранника’
* Точки определяют все точки/вершины фигуры. * Грани - это список плоских многоугольников, соединяющих точки/вершины.
Каждая точка в списке точек определяется с помощью 3-мерной x,y,z характеристики положения. Точки в списке точек автоматически перечисляются, начиная с нуля, для использования в списке граней (0,1,2,3. и т.д.).
Каждая грань в списке граней определяется путем выбора 3 или более точек (с использованием порядкового номера точек) из списка точек.
например, faces=[ [0,1,2] ] определяет треугольник из первой точки (точки равны нулю) ко второй точке, а затем к третьей точке.
При взгляде на любую грань снаружи, на ней должны быть перечислены все точки в порядке по часовой стрелке.
Повторения точек в списке точек многогранника [ править ]
Список точек определения многогранника может содержать повторы. Когда две или более точки имеют одинаковые координаты, они считаются одной и той же вершиной многогранника. Итак, следующий многогранник:
points = [[ 0, 0, 0], [10, 0, 0], [ 0,10, 0], [ 0, 0, 0], [10, 0, 0], [ 0,10, 0], [ 0,10, 0], [10, 0, 0], [ 0, 0,10], [ 0, 0, 0], [ 0, 0,10], [10, 0, 0], [ 0, 0, 0], [ 0,10, 0], [ 0, 0,10]]; polyhedron(points, [[0,1,2], [3,4,5], [6,7,8], [9,10,11], [12,13,14]]);
опишет тот же тетраэдр, что и:
points = [[0,0,0], [0,10,0], [10,0,0], [0,0,10]]; polyhedron(points, [[0,2,1], [0,1,3], [1,2,3], [0,3,2]]);
Моделирование в OpenSCAD для 3D печати. Модули, библиотеки, шестерни, резьба
Добрый день, сегодня мы продолжаем знакомство с редактором OpenScad. Сегодня я расскажу об использовании модулей и библиотек, мы сделаем шестеренку и поработаем с резьбой.
Одним из преимуществ редактора Опенскад, которое я упоминал в своей первой статье, является использование модулей и библиотек. Программисты давно знают об удобствах, которых можно достигнуть с их помощью: можно не писать однотипный код, можно пользоваться трудом других людей, можно разделить модули по функционалу и сохранить в разных файлах. Сделаем так и мы. Мы смоделируем шестеренку редуктора SibRap, но не целиком, а используя библиотеку involute_gear.
Знакомство с модулями, функциями и циклами
Сначала познакомимся с тем, как создавать модули самостоятельно. Откроем редактор и создадим в нем файл config.scad со следующим кодом:
/** * Глобальный конфигурационный файл */ // качество цилиндров $fn=30; // избегание совпадения граней DELTA=0.1;
Сохраним его, и создадим другой файл gear.scad в той же папке. Запишем в него такой код:
include echo(DELTA);
Нажмем F5. В консоли мы увидим, кроме всего прочего, текст: ECHO: 0.1 . Это означает, что значение DELTA успешно загрузилось из конфигурационного файла. Удалим этот код, и вместо него напишем такой:
for(i=[0:9])transcube(i); module transcube(x)
Нажав F5, мы увидим симпатичную пирамидку.
Модуль module transcube(x) <> – это аналог функции в языках программирования. В модуль передаются параметры, которые внутри модуля используются в заголовке (параметр “x“) и в теле модуля. В данном случае параметризован размер куба и расстояние перемещения. Флаг true в кубе означает, что мы поместили точку отсчета в центре куба. Мы выполняем модуль в цикле 10 раз, и передаем i в качестве значения для x. Тело функции выполняется, и в результате получается 10 кубов со смещением.
Также можно сделать, например, так:
transcube(12); for(i=[0:7])rotate([0,0,45*i])translate([-5,-5,0])transcube(4); module transcube(x)
Здесь мы вызываем модуль transcube дважды: для основания и для верхней части.
Шестерня
Если с включением файлов и модулями вы разобрались, то перейдём непосредственно к шестерне. В состав дистрибутива Опенскад входит библиотека MCAD (не во всех ОС, в некоторых её нужно устанавливать отдельно). В ней есть много интересного, но обзор библиотеки MCAD выходит за рамки данной статьи. В ней есть два файла, относящихся к шестерням. Шестерни в файле gears.scad далеки от идеала, они устарели. Посмотрим на тестовый пример:
include test_gears();
Ужас. Непонятно, как такие шестерни могут работать. Ведь для того, чтобы передача работала, у зуба должен быть определенный (эвольвентный) профиль (см. в Википедии Зубчатое_колесо). А шестерни из этого пакета имеют зубья иной формы, и нам не подходят. Мне так и не удалось настроить их правильно. Вот в библиотеке involute_gears.scad зубья правильной формы. Весьма качественно в ней также сделаны косозубые и шевронные зубцы, а также зубцы у конических шестерёнок.
include test_gears();
Другое дело! Но ещё лучше скачать файл для шестерён отдельно, т.к. в MCAD старая версия, а в новой версии исправлены некоторые ошибки. Скачиваем библиотеку parametric_involute_gear_v5.0.scad и кладем ее в папку lib. Для проектирования шестерни мы также используем файл mendel_misc.scad (это файл из проекта 3д-принтера Prusa Mendel, содержащий некоторые 3д-модели, специфичные для 3д-принтеров, например, там есть 3д-модель мотора NEMA17).
Пишем код в gear.scad:
use use WadeL_double_helix(); module SmoothHole() < translate([6.5,0,-1]) cylinder(r=1.5, h=10, $fn=6); >module WadeL_double_helix() < //Large WADE's Gear - Double Helix circles=5; teeth=42; pitch=268; twist=200; height=11; pressure_angle=30; logo=14; difference()< union()< // половина шевронной шестерни gear (number_of_teeth=teeth, circular_pitch=pitch, pressure_angle=pressure_angle, clearance = 0.2, gear_thickness =0, rim_thickness = height/2, rim_width = 5, hub_thickness = height/2*1.5-2-1.5, hub_diameter = 25, bore_diameter = 8, circles=circles, twist = twist/teeth); // вторая половина шевронной шестерни mirror([0,0,1]) gear (number_of_teeth=teeth, circular_pitch=pitch, pressure_angle=pressure_angle, clearance = 0.2, gear_thickness = height/2, rim_thickness = height/2, rim_width = 5, hub_thickness = height/2, hub_diameter=25, bore_diameter=7, twist=twist/teeth); >// Головка болта // болт из нержавейки translate([0,0,-1])rotate([180,0,0])m8_hole_vert_with_hex(13.4,20); // 6 углублений под головку болта render()for (n=[0:5]) < rotate([0,0,n*360/6])SmoothHole(); >// сглаживание острых концов шестерни translate([0,0,3.5]) difference() < cylinder(r=73.4/2, h=2.5); translate([0,0,1]) cylinder(r=20,h=2.6); cylinder(r1=67.4/2,r2=(67.5-3)/2,h=1); >mirror([0,0,1])translate([0,0,3.5]) difference() < cylinder(r=73.4/2, h=3); cylinder(r1=67.4/2,r2=(67.5-3)/2,h=1); >translate([0,0,4.3]) difference() < cylinder(r=25.1/2, h=2); cylinder(r1=25.1/2,r2=20.1/2,h=4); >// Капли - дырки for (n=[0:4]) < rotate([0,0,n*360/5]) translate([18.3,0,-10]) union()< cylinder(r=logo/2.5,h=20,$fn=24); rotate([0,0,45]) cube([logo/2.5,logo/2.5,20]); >> > >
Данным кодом создается шевронная шестерня с определенным переменной teeth количеством зубов, нужной формы и с шестигранным отверстием под болт в центре. Кроме указания параметров, нам теперь ничего не нужно программировать. Разработчики библиотеки сделали эту работу за нас.
Описание параметров вызова функции gear() можно найти на сайте Thingiverse по адресу, где расположена библиотека parametric_involute_gear_v5.0.scad. Приведу здесь перевод.
Функция параметрических эвольвентных цилиндрических зубчатых колес принимает следующие параметры:
- number_of_teeth – количество зубов
- circular_pitch или diametral_pitch: контролирует размер зубов (и, соответственно, размер шестерни).
- pressure_angle: управление формой зубов.
- clearance: зазор между корнем зуба и точкой зубьев зацепления шестерни.
- gear_thickness: толщина шестерни.
- rim_thickness: толщина шестерни по окружности (в том числе зубы).
- rim_width: радиальное расстояние от основания зуба с внутренней стороны обода.
- hub_thickness: толщина площадки в середине.
- hub_diameter: диаметр площадки в середине.
- bore_diameter: диаметр отверстия в середине.
- circles: количество круглых отверстий в шестерне.
- backlash: расстояние между задней частью зуба шестерни и передней частью следующего зуба шестерни
- twist: скос для косозубых шестерен
- involute_facets: число граней на одной стороне зуба. Если параметр опустить, то это будет 1/4 от $fn. Если $fn не установлен, то будет 5.
Болт
Аналогичным образом можно сделать болт. Используя библиотеку с болтами ISOThreadUM2.scad, мы можем генерировать болты и гайки почти любых размеров. Скачайте её и положите в lib папку. Теперь можно с легкостью создать болт (файл bolt.scad):
use hex_bolt(8,16);
Первый параметр функции – это диаметр (болт M8), второй – длина болта (16 мм). Аналогично можно создать гайку: hex_nut(8) создаёт гайку M8:
use hex_nut(8);
Можно создать шпильку (M8, длина 25 мм):
use thread_out_centre(8,25); thread_out(8,25);
Таким путём можно создать множество стандартных элементов в короткие сроки.
В следующем уроке мы рассмотрим создание воздуховода для SibRap.
Скачать архив с файлами и библиотеками, использованными в статье. В архив входят:
- config.scad
- gear.scad
- bolt.scad
- lib/ISOThreadUM2.scad
- lib/mendel_misc.scad
- lib/parametric_involute_gear_v5.0.scad
БЛИЗКИЕ ПО ТЕМЕ ПУБЛИКАЦИИ:
- Моделирование во FreeCAD. Резьба, шестерни, библиотеки
- Моделирование в OpenSCAD для 3D печати. Воздуховод
- Моделирование в OpenSCAD для 3D печати. Обзор возможностей
- Моделирование в OpenSCAD для 3D печати. Создание ушка
- Моделирование в OpenSCAD для 3D печати. Регулировочная ручка
Метки: OpenSCAD   2017-03-04      Раздел: Моделирование  
Автор: andrew_answer Просмотров: 24 799   Нет комментариевДобавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.