Существует ли простой способ разделения моделей в OpenSCAD?
Мне интересно, могу ли я взять один объект OpenSCAD и разрезать/соединить/разделить его на два разных объекта, которыми затем можно управлять независимо?
Один из подходов состоит в том, чтобы дублировать объект, сравнивать его по границе разреза с 3-м объектом, а затем сравнивать результат с самим собой. Это кажется слишком сложным, и я подозреваю, что что-то упускаю
PS - суть в том, что у меня есть красиво оформленная часть, в которой мне нужно создать блокировку. Я хочу сначала разрезать деталь пополам, а затем создать какой-то механизм блокировки
@Hamy, 👍8
1 ответ
Вместо того, чтобы отделять копию объекта от самой себя, которая подвержена числовой нестабильности, выберите коробку ("куб" в терминологии OpenSCAD) и пересеките ее с одной копией объекта, а затем отличите ее от другой копии объекта. Это все просто, если вы используете модули для инкапсуляции своих деталей, а также это работает с импортированными файлами STL.
В частности, это должно выглядеть примерно так:
module mycut() {
translate([x,y,z]) cube([w,l,h]);
}
difference() {
myobject();
mycut();
}
translate([u,v,w])
intersection() {
myobject();
mycut();
}
- OpenSCAD linear_extrude из многопутевого импорта svg
- .STEP/.F3D to .Файл SCAD?
- Как указать начало вращения в openscad
- Библиотека OpenSCAD для пустого пространства/отверстий
- OpenSCAD "not valid 2-manifold" полезная информация
- Рендер OpenSCAD (F6) завершается ошибкой "ERROR: CGAL error in CGAL_Nef_polyhedron3()"
- Создание "куска пирога" в OpenSCAD?
- Может ли в OpenSCAD сгибать текст (проецировать его на изогнутую поверхность)?
есть ли какой-нибудь способ создать полигон, соединяющий разделенные объекты? от первой ограненной грани ко второй?, @eri
как
корпус
, но с использованием ближайших точек, @eri@eri: Вы могли бы сделать это с помощью "linear_extrude" из "проекции", но это очень медленно и связано с неприятными проблемами числовой стабильности., @R.. GitHub STOP HELPING ICE
мне нужны одинаковые размеры в 3 файлах stl, поэтому поворот в XY и обратно не подходит., @eri
@eri: Почему поворот на 90 ° может все испортить?, @R.. GitHub STOP HELPING ICE
Может быть. Постараюсь, @eri
Я считаю, что числовая нестабильность не является проблемой в OpenSCAD, по крайней мере, в этом случае, поскольку базовая библиотека использует символьную алгебру (рациональные числа) с неограниченной точностью. Точность вступает в игру только при экспорте (и повторном импорте) или при вычислении нерациональных функций, таких как косинус и синус, хотя результаты гарантированно будут согласованными (что хорошо при сопоставлении частей). Тем не менее, вычитание объекта из самого себя, вероятно, требует больших вычислительных затрат, поэтому этот подход хорош, поскольку использует блоки., @Real
@Real: Я не знаю подробностей, но OpenSCAD не совсем точен внутри. Он использует ужасную мешанину различных математических вычислений, о которых, вероятно, лучше не спрашивать., @R.. GitHub STOP HELPING ICE
См. эту цитату: «Оказывается, OpenSCAD использует Библиотеку алгоритмов вычислительной геометрии (CGAL) для своих операций CSG. Эта удивительная библиотека позволяет использовать полностью общие числовые типы, а тип, который использует OpenSCAD, представляет собой какую-то магическую «точную» цифру вуду. тип на основе арифметической библиотеки множественной точности GNU (GMP).» с [этой страницы](https://ochafik.com/jekyll/update/2022/02/09/openscad-fast-csg-contibution.html) указывает точное использование рациональных чисел для объединений (и, я думаю, пересечений тоже)., @Real
Подробнее о CGAL см. [здесь](https://www.cgal.org/exact.html): «CGAL дает правильные результаты, несмотря на промежуточные ошибки округления. Если три линии встречаются в одной точке, они сделают это в CGAL. а также, и если четвертая строка пропускает эту точку на 1.0e-380, то она также пропускает ее и в CGAL. Ситуации, которые иногда помечаются как «вырожденные» (например, набор трехмерных точек, фактически живущих в двухмерной плоскости). ) правильно обрабатываются CGAL. Говоря простыми словами, это называется парадигмой точных вычислений, и в конечном итоге она опирается на вычисления с числами произвольной точности»., @Real
@Real: Как я уже говорил вам, OpenSCAD использует сочетание различных типов геометрических вычислений и уходит от CGAL, потому что он медленный и потому что предлагаемая им точность на самом деле ничего вам не дает из-за неточности на других уровнях., @R.. GitHub STOP HELPING ICE