Как сделать игральный кубик в openscad

Обновлено: 07.07.2024

2D-лазерная резка и ЧПУ не так рекламируются, как 3D-печать, но имеют аналогичный потенциал. Хотя OpenSCAD был разработан для 3D-моделирования, вы также можете использовать его для создания некоторых плоских 2D-моделей, которые можно экспортировать как файлы DXF (я бы предпочел экспорт SVG , но это другая проблема).

Однако есть одна проблема: в OpenSCAD нет простых строк! Объекты, которые сопротивляются друг другу, всегда соединяются UNION, поэтому вы не можете разрезать их на части. Вот пример:

Но когда вы делаете резку, вы можете захотеть получить две части:

Для 2D-моделирования должна быть команда для создания незаполненных outline s из объектов и команда для создания незакрытых line s (я бы также хотел bezier для рисования линий Безье, но это другой вопрос). Контуры и линии - это замкнутые или незамкнутые линии в пространстве, которые также можно объединять и различать. Для 3D-моделей простые линии не должны вредить, их можно использовать как ориентиры для визуализации, но просто игнорировать при экспорте STL. Однако для серьезных 2D-моделей нам нужны простые линии в качестве элементов при экспорте в OpenSCAD и DXF / SVG.

Хотите поддержать этот выпуск? Разместите на нем награду! Мы принимаем награды через Bountysource .

Самый полезный комментарий

+1 по этому поводу. Хотелось бы использовать это для лазерной резки, но без лески это действительно сложно.

Все 11 Комментарий

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

Не думаю, что это невозможно, но я думаю, что это несколько десятков часов работы (по крайней мере, для такого медлительного человека, как я).

PS . Я знаю, что вы запросили 2d, а не 3d . но ИМХО действуют те же принципы. Реализация Nef Polyhedron в CGAL похожа, говорите ли вы о 3D или 2d, и я думаю, что решения будут аналогичными.

  • Render a file to PNG in a specific colorscheme:

openconnect

A VPN client, for Cisco AnyConnect VPNs and others. More…

openssl

OpenSSL cryptographic toolkit. Generate a 2048bit RSA private key and…

Фото Как установить PostgreSQL на Linux и создать базу и пользователя

Как установить PostgreSQL на Linux и создать базу и пользователя

PostgreSQL - система управления базой данных общего назначения. Одна из самых распространённых баз данных, используемая на многих коммерческих и некоммерческих проектах.

Фото Как скопировать вывод команды из терминала в буфер обмена Linux и MacOS

Как скопировать вывод команды из терминала в буфер обмена Linux и MacOS

Скорее приятный, чем необходимы "трюк", но возможность использовать возможность скопировать вывод в буфер обмена – действительно круто иной раз выручает.

Фото Как создать неизменяемый файл в Linux / MacOS / FreeBSD

Как создать неизменяемый файл в Linux / MacOS / FreeBSD

Само собой, root может всё (если введёт пару команд), однако, это вполне легальный способ запретить изменение файла.

Фото Как удалить все Docker образы и контейнеры

Как удалить все Docker образы и контейнеры

Не всегда нужно удалять всё, но объяснение данного "рецепта" объяснит как в целом удалять образы и контейнеры.


Bash вывода && управляющие конструкции || коротко о главном

Небольшая заметка о конструкциях Bash, в которых путается большинство новичков. А именно: >,

Фото Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Исследователи сумели пройти code-review с реквестами в ядро Linux, заведомо содержащими добавление уязвимостей.

Фото Microsoft открывает исходники, а её IDE супер-популярна

Microsoft открывает исходники, а её IDE супер-популярна

Решил сложить пару фактов и немного над этим поразмыслить. Реально ли Microsoft "переобулись"?

Фото Пример своей консольной команды в Django проекте

Пример своей консольной команды в Django проекте

Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.

Фото Как на Bash посчитать число строк в проекте (директории)

Как на Bash посчитать число строк в проекте (директории)

Ниже будет представлен однострочник, решающий данную задачу на Bash + пошаговое описание его работы.

Фото Как на Bash получить файлы, изменённые за сегодняшний день

Как на Bash получить файлы, изменённые за сегодняшний день

Bash имеет огромные возможности по программированию/скриптованию и администрированию операционной системы. Не важно: Linux это, FreeBSD, или MacOS – на Bash можно сделать многое.

Фото Как установить часовой пояс в Linux

Как установить часовой пояс в Linux

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

Фото Как найти самые большие папки и файлы в Linux

Как найти самые большие папки и файлы в Linux

Когда кончается место на жестком диске, возникает закономерный вопрос: на что же оно было потрачено, какие файлы разрослись больше положенного?

Фото Команда grep – полезные ключи и примеры использования

Команда grep – полезные ключи и примеры использования

У команды "grep" довольно много различных особенностей. особенно, если учесть, что с английского это "решето" – а что может войти в решето , не факт что выйдет!


Поскольку дома есть 3D-принтер, то периодически приходится создавать собственные 3D-модели различных изделий для их последующей печати на принтере.

Ранее я пользовался двумя средствами для этого:

— Tinkercad — для вещей попроще, например корпус платы для круиз-контроля.

— FreeCAD — монстр, который требует много знаний и имеет 90% ненужного мне функционала. В нем я проектировал корпус для блока питания.

Теперь я начал осваивать OpenSCAD, и мне очень понравилось. Смысл в том, что вся модель описывается простейшими командами, список которых можно посмотреть тут. Можно создавать переменные, циклы и условия — как в любом языке программирования. Поскольку я программист — то такой подход мне очень близок, можно сделать модель буквально не отрывая рук от клавиатуры.

Давайте для примера попробуем сделать корпус для платы "удлинителя поворотов", которую я очень скоро установлю в свою машину:


Готовый корпус. Отверстия для транзисторов, чтобы сделать корпус чуть ниже, и для вентиляции полезно.

Начнём с измерений платы. Тут наш главный инструмент — штангенциркуль.


Подо все размеры создаём переменные.


Теперь сделаем два модуля — первый для коробочки, второй для крышки.


Модули, в программистском понимании — это как бы функции. Т.е. внутри мы можем описать какие-то фигуры и затем вызвать эту функцию с какими-то параметрами(или без оных) в любом месте программы, можно даже несколько раз.

Подробно описывать здесь весь процесс создания частей корпуса я не буду, но вы можете посмотреть листинг программы. Можно просто вставить его себе в OpenSCAD и вы получите модель моего корпуса.

Сначала рисуем корпус. Для этого в программе вызываем модуль `case();` и описываем фигуры внутри соответствующего модуля. Тут мы взяли кубоид нужных размеров, и вырезали из него несколько других кубоидов. Все размеры опираются на переменные, которые мы задали в начале программы. В итоге получим такую коробочку:


Совет: когда мы вырезаем объекты у которых есть одинаковые плоскости, то эти плоскости могут и не вырезаться — вы увидите полупрозрачный муар. Чтобы этого избежать я немножко увеличиваю наружу вырезаемую часть, чтобы плоскости фигур не совпадали.


Совет: когда мы создём детали, которые вставляются друг в друга, то необходимо задавать зазор между ними, т.к. 3D-принтер печатает объекты совсем не с микронной точностью. Мне обычно хватает зазора 0.1мм для плотного соединения и 0.2мм для свободного. Для зазора в программе я завёл переменную `D`

Вставляем в программу вызов модуля крышки, но мы немного преподнимем её вверх, чтобы у нас не было некрасивого муара — `translate([0,0, D]) cover()`. Для крышки берем кубоид и присоединяем к нему кубоиды язычков упора платы и части над разъемом, затем вырезаем из него отверстие под транзисторы. Получаем вот такую крышку:



Однако в таком виде мы не можем её печатать. Нам надо расположить крышку рядом с корпусом на одной с ним плоскости. Для этого в начале программы я завёл переменную `assembled`. Если она равна `true` — то будем располагать крышку на корпусе(удобнее редактировать), если `false` — то крышка будет располагаться рядом (так мы будем печатать). Воспользуемся условным опреатором `if` и зададим разные смещения(и переворот) для модуля `cover()`:


В итоге мы получим готовую к печати модель:


У OpenSCAD не так много возможностей, но в нем очень здорово делать модели где можно задавать различные параметры. Буду пользоваться им и впредь для своих небольших поделок.

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

В OpenSCAD я реализую следующую анимацию: WhR = 1.5; // wheel radius WhH = 6; // wheel height WpR = 1; // workpiece radius WpH = 6; // workpiece height $fn = 30; pos = position($t); intersection()

Моя проблема проста: у меня есть код, который отображает то, что я хочу, но когда я помещаю его в модуль, OpenSCAD выдает ошибку, когда я показываю, что объект верхнего уровня не найден. difference.

В настоящее время я использую OpenScad для создания кода шаблона (где я вставляю значения во входные переменные), чтобы создавать 3D-модели. Причина, по которой я это делаю, является частью более к.

Я просто новичок в этой теме, поэтому я заранее скажу заранее, если это будет звучать как глупый вопрос. Могу ли я создать объект в Blender, а затем импортировать его в OpenSCAD? Я читал, что это в.

Я использую команды openscad для Ubuntu linux для генерации моделей из командной строки. Я, наконец, был успешным при запуске команд openscad с использованием параметров -D для переопределения знач.

Итак, я делаю призму: width=30 thickness=15 polyhedron( points=[ [width,0,0],[width,0,thickness], [width,width,0],[width,width,thickness], [0,width,0],[0,width,thickness] ], faces=[ [1,3,5], [0,2,4.

В openSCAD я пишу polyhedron . Предварительный просмотр показывает многогранник, но если я попытаюсь его отобразить, весь многогранник не будет показан. Я получаю предупреждение: WARNING: PolySet h.

Я знаю, что когда я использую для него, создается группа сгенерированных дочерних элементов. Я создал модуль под названием grid: module grid(x0,y0,dx,dy,nx,ny) < for (x=[0:1:nx-1]) < for(y=[0:1:ny-.

Я написал код opencad. Это был простой короткий код. Я могу скомпилировать его очень быстро. Однако, когда я пытался это сделать, это занимает более полутора часов. На 99% он не заканчивается и про.

Следующий код вращает второй куб вокруг начала координат. Как я могу повернуть второй куб вокруг его центральной точки ([5,5,0])? cube([10,10,1]); rotate([0,0,45]) cube([10,10,1]);

Я использую команду "import", но я не уверен, где разместить файл в моей файловой системе. Спасибо за помощь.

Я новичок в OpenSCAD. Я пытаюсь создать базовый треугольный клин, который будет частью более крупного компонента. Но у меня уже проблемы. Используя следующий код, я получаю точки в правильных места.

Поэтому я пытаюсь построить простой стек масштабированных кубов с помощью рекурсивной функции: function stack(levels) = ( levels 1 год назад

Кто-то недавно спросил меня, могу ли я напечатать браслет с выгравированным на его лице пользовательским изображением. Для меня проблема проста: у меня есть 2d декартова система (x, y), которая выр.

Есть ли простой способ/функция для округления краев для объекта openscad? например, вокруг краев цилиндров

Я хочу создать модель в openSCAD, а затем я хочу отрезать опцию, разрезав ей отверстие (используя разницу) поэтому я могу сделать что-то вроде module model_with_hole( hole=false) < difference() < /.

Я создал пакетный файл одной строки: openscad -o% 1% 2. Этот код работает, когда я запускаю: export output.stl input.scad из моей командной строки. Мне нужно это для запуска в java, поэтому я испол.

Я пытаюсь установить openscad , я устанавливаю все зависимости, но когда я пытаюсь создать openscad меня есть эта проблема: $ make clang++ -headerpad_max_install_names -stdlib = libc++ -mmacosx -v .

У меня проблема с оператором If в OpenScad. У меня есть 4 переменные a=20; b=14; w=1; c=16; Я хочу проверить, что номер ведьмы больше a или b . И после того, как в зависимости, кто меньше принимать.

Можно ли в OpenSCAD получить доступ к грани, нормалям, краям и связности геометрии STL? Я хотел бы изменить геометрию STL путем повторения каждой грани и изменения ее на основе некоторых локальных .

Как я могу изогнуть лист (куб)? Я хотел бы контролировать угол изгиба/кривой. например куб ([50,50,2]);

Я пытаюсь объединить два файла.stl. Кажется, что каждый из них выглядит нормально, но когда я их совмещаю, я вижу эту ошибку компиляции: ERROR: CGAL error in CGAL_Nef_polyhedron3(): CGAL ERROR: ass.

Я пытаюсь вычислить контрольные точки для бикубической поверхности Безье плавно соединительные трубки. Этот пример дает 16 контрольных точек для соответствующего патча Безье (в синтаксисе OpenSCAD).

Этот простой код: linear_extrude(height = 10, scale =2) < circle(r = 1); >создайте цилиндр вместо масштабирования круга во время экструзии. Результат:

В OpenSCAD я хочу создать module который принимает string затем создаст трехмерный объект с этой строкой, встроенной в поверхность в виде text . Я хочу, чтобы объект был немного больше, чем text , .

Я ищу способ конвертировать собственный выход (параметрический CAD?) OpenADEAD (файл jscad/js), т.е. function model() < return polyhedron(

У меня есть функция: function knotAng(a,s) = [(sin(a)+(2*sin(2*a)))*s, (cos(a)-(2*cos(2*a)))*s, sin(3*a)*s]; Я помещаю ряд объектов вдоль пути, где a = 0 - 359 и s - постоянный Я хочу сориентироват.

У меня проблема в OpenSCAD, я знаю, что знаю язык, и я не знаю, чтобы подойти к проблеме. Скажем, я получаю 2d фигуру, например круг (r = 25), и я хочу иметь твердое тело. Но то, что я хочу от этог.

Я регулярно пытаюсь присоединиться к различным точкам, чтобы нарисовать прямую линию в OpenScad . Но я не мог найти способ нарисовать линию. Но я могу рисовать определенные фигуры, такие как кубы, .

Вот мой сценарий: openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null | sed 's/ECHO: \"\[LC\] //' | sed 's/"$//' | sed '$a;' >./2d_$1 Этот вывод: sed: 1: "$a;": command a expects \ fol.

Я пытался создать разницу, если y == 0, однако, когда я помещаю последний куб в него, он заполняет другие части формы, которые не должны заполняться, и даже не вырезает, что должно было бы, Однако.

Прозрачность вывода OpenSCAD может быть достигнута путем добавления % к элементам, но это не позволяет помещать прозрачный элемент в окружающий элемент с большей степенью (например, выраженным в пр.

У меня есть проблема с рендерингом импорта файла dxf. Успех рендеринга: Используйте файл linear_extrude() для файла dxf и отобразите сферу. Используйте только rotate_extrude() для файла dxf. Ошибка.

В настоящее время я пытаюсь использовать OpenSCAD для создания рампы в цилиндрической форме: (Код находится здесь:

В любом случае нужно импортировать файлы STL в OpenSCAD с возможностью их изменения? Например, следующий код демонстрирует то, что я пробовал до сих пор: difference() < import("spherical_puzzle_bas.

Рубрики

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

Читайте также: