Как удалить внутреннюю часть шестигранной сетки
Я моделирую несколько вырезанных шаблонов для использования на шестиугольном сетчатом (сотовом) материале с помощью OpenSCAD. В принципе, из опорной ячейки мне нужно выбрать все ячейки, которые находятся в пределах заданного диапазона и заданного угла.
Я реализовал это, создав сетку в памяти, которая охватывает область, большую, чем мне нужно (дополнительный диапазон, 360 градусов), а затем проверяя каждую ячейку как на расстояние, так и на угол, экструзируя только те, которые дали положительный результат для обоих условий.
Все работает как положено...
...но теперь я также хотел бы добавить возможность иметь внешний контур шаблона без наличия в нем каждой отдельной ячейки (таким образом, одна тонкая линия проходит вокруг всего "ломтика пиццы" выше).
Я довольно новичок в OpenSCAD: каков был бы лучший подход здесь? (Я доволен даже решением, которое требует заново реализовать то, что делалось до сих пор).
@mac, 👍4
Обсуждение2 ответа
Лучший ответ:
В итоге я сам нашел разумное решение:
По сути, я различил две идентичные неполые геометрии, в которых в первой ячейки были больше, чем нужно (поэтому они перекрывались с другими), а во второй-точно нужного размера:
difference() {
base_geometry(range, angle, infill, extra_padding = 2);
base_geometry(range, angle, infill, extra_padding = 0);
}
Таким образом, единственной оставшейся частью твердого тела была extra_padding
на внешних краях геометрии.
Теперь я понимаю, чего вы добивались. Я собирался попросить вас предоставить рисунок, но вы сделали гораздо лучше., @Mick
К сожалению, OpenSCAD не имеет преобразования 2D hull (), хотя оно и было запрошено. Возможно, вам удастся найти предварительно написанный пакет, реализующий 2D-корпус. Однако если все, что вам нужно, - это шестиугольная сетка с границей произвольной формы, не могли бы вы не жульничать и заставить свой слайсер сгенерировать сетку для вас? Все, что вам нужно сделать, это сгенерировать конверт, а затем нарезать его шестиугольной сеткой в качестве заливки и не запрашивать ни верхнего, ни нижнего слоев. Большинство слайсеров будут делать шестиугольную заливку.
Если вы хотите сделать все это в OpenSCAD, то я бы сделал это так:
- Создайте 2D-сетку, аналогичную той, что у вас есть сейчас.
- Создайте 2D-контур нужной вам формы, уменьшенный до размера, чтобы можно было добавить коллектор (в виде периметра).
- Продублируйте эту фигуру.
- Добавьте коллектор к первой копии.
- Создайте пересечение второй копии и сетки.
- Создайте объединение двух копий.
- Выдавливаем соединение.
Я считаю, что мне не удалось достаточно ясно понять, чего я хочу достичь (извините, мне не хватает правильной терминологии из САПР и / или математики): мне вообще не нужна внутренняя сетка. Мне нужен только периметр фигуры, которую я сгенерировал, например: внешние, не примыкающие к другому шестиугольнику стороны шестиугольников на краю моей поверхности... Однако в вашем предложении есть что-то интересное, может быть, часть решения, которое я ищу ... а именно: добавление коллекторов. Как я могу это сделать, имея существующую геометрию?, @mac
- Библиотека OpenSCAD для пустого пространства/отверстий
- Рендер OpenSCAD (F6) завершается ошибкой "ERROR: CGAL error in CGAL_Nef_polyhedron3()"
- Создание "куска пирога" в OpenSCAD?
- Можно ли использовать функцию `рендеринг` для ускорения рендеринга?
- OpenSCAD не рендеринг многогранника
- Существуют ли какие-либо "лучшие" или "распространенные" методы обработки разрешений в коде OpenSCAD?
- Модель разделения, выдалбливания и нарезания резьбы OpenSCAD / FreeCAD
- Как добавить отверстие 2х2 мм в файл SCAD?
Вы хотите создать выпуклую оболочку или просто удалить все внутренние ребра?, @Mick
Если вы не можете найти решение здесь, подумайте о том, чтобы присоединиться к списку рассылки / форуму OpenSCAD, так как есть довольно опытные и талантливые мозги, которые действительно на высоте., @fred_dot_u
@Mick - Я не уверен, что достаточно хорошо осведомлен, чтобы понять ваш вопрос (мне не хватает терминологии), но я уже пробовал функцию "hull()" (если это то, к чему вы стремились), и она не делает то, что я хочу, так как не очерчивает мою фигуру он "оборачивает" его, проводя прямую линию между наиболее выступающими точками каждой его стороны..., @mac
@fred_dot_u - Спасибо за предложение! :), @mac