Может ли в OpenSCAD сгибать текст (проецировать его на изогнутую поверхность)?
Я хочу нанести рельефный текст на изогнутую поверхность, но не могу найти способ сделать это в OpenSCAD. Я знаю, что можно сгибать текст в Blender, а затем импортировать stl
, но мне не нравится этот рабочий процесс. Я нашел своего рода рабочее решение, но оно не идеально.
$fn=50;
module bend_text(caption, angle, text_height, text_width, text_depth, steps=10, k=1) {
dh = text_height / steps;
r = text_height / (angle * PI / 180);
h0 = - text_height / 2;
translate([0, 0, -r])
rotate([angle / 2, 0, 0])
for(i=[0:steps-1]) {
rotate([-i * angle/steps, 0, 0])
translate([0, -(dh * i + h0), r / k])
intersection() {
linear_extrude(text_depth)
text(caption, valign="center", halign="center");
translate([0, dh * i + h0, 0])
cube([text_width, dh, text_width], center=true);
}
}
}
bend_text("test", angle=90, text_height=9, text_width=30, text_depth=1, steps=10, k=1.1);
Есть ли лучший способ?
@mugiseyebrows, 👍3
Обсуждение3 ответа
Лучший ответ:
Другим способом может быть простое пересечение()
(вдохновлено этим обсуждением: Как создать изогнутый лист (куб) в OpenSCAD?)
$fn=200;
w = 30; // ширина прямоугольника
h = 1; // высота прямоугольника
l = 10; // длина хорды кривой
dh = 10; // дельта-высота кривой
module curve(width, height, length, dh) {
r = (pow(length/2, 2) + pow(dh, 2))/(2*dh);
a = 2*asin((length/2)/r);
translate([-(r -dh), 0, -width/2]) rotate([0, 0, -a/2]) rotate_extrude(angle = a) translate([r, 0, 0]) square(size = [height, width], center = true);
}
intersection(){
rotate([0,270,0]) curve(w, h, l, dh);
translate([2,-3,0]) linear_extrude (height = 15) text("TEST", size = 6 );
}
Рабочий процесс, который вы используете, - это единственный известный мне способ, и он, по крайней мере, респектабелен. Вы можете абстрагировать его как модуль для применения к произвольным дочерним элементам, чтобы сделать его несколько менее уродливым и более пригодным для повторного использования.
Теоретически, я думаю, что должно быть возможно выполнить преобразование openscad (в самом openscad, а не на языке scad), которое применяется к произвольным 3D-объектам, путем выполнения 2D-конформного отображения в каждом поперечном сечении, перпендикулярном заданной оси, для достижения подобных эффектов без возможности нарушения геометрии. Но я не знаю, чтобы кто-нибудь работал над этим. Вероятно, я предложу это в какой-то момент, и, надеюсь, это не будет отвергнуто как математически несостоятельное (что может быть; я не уверен).
Я не могу сказать, лучше ли это, чем ваш метод, но это библиотечный ресурс, соответствующий вашим требованиям.
Библиотека охватывает различные формы, в том числе цилиндрические:
Изображение со связанного сайта. Также с сайта: "Работает только с OpenSCAD v 2014.xx и более поздними версиями ..."
Насколько я могу судить, он не сгибает персонажей, он просто помещает каждого персонажа в его собственную плоскость, это не то, чего я хочу., @mugiseyebrows
Это различие, которое я упустил из виду, спасибо за разъяснение. Это делает ваше творение еще более впечатляющим. Есть ли способ удалить фрагменты из творения?, @fred_dot_u
да, фрагменты можно удалить, я использовал куб для разделения текста на части, мне следовало использовать треугольную призму, @mugiseyebrows
- Существует ли простой способ разделения моделей в OpenSCAD?
- 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?
Это стек 3D-печати, а не стек САПР, требуется указание на актуальность для 3D-печати, из [по теме] (https://3dprinting.stackexchange.com/help/on-topic ): `Если вопрос САПР связан с 3D-печатью, то он по теме. Однако общие вопросы САПР, не связанные с 3D-печатью, не по теме.- Однако очень интересный вопрос! Упоминая, что сгибание текста требуется, когда текст проецируется на небольшие радиусы, иначе под буквами могут быть пробелы, которые препятствуют правильной печати., @0scar