3d 创建具有圆角/圆角或斜角的文本的三维模型

3d 创建具有圆角/圆角或斜角的文本的三维模型,3d,computational-geometry,mesh,3d,Computational Geometry,Mesh,我试图以编程方式创建带有斜角或圆角的文本的三维模型。有关示例,请参见下图。 另一个要求是速度。应该可以在10秒内为一个10个字母的单词创建一个模型 OpenScad就是要慢下来 我也尝试过Freecad,但Freecad圆角算法(来自Opencascade)要求图示符的最短直线比圆角半径长。这将排除几乎所有的字体。 使用freecad,我还尝试通过使用轮廓沿轮廓线路径扫掠来创建圆角。虽然结果看起来不错,速度也不错,但我无法用它创建一个有效的实体 有没有其他LIB可以做这项工作?是否有用于平滑网

我试图以编程方式创建带有斜角或圆角的文本的三维模型。有关示例,请参见下图。 另一个要求是速度。应该可以在10秒内为一个10个字母的单词创建一个模型

OpenScad就是要慢下来

我也尝试过Freecad,但Freecad圆角算法(来自Opencascade)要求图示符的最短直线比圆角半径长。这将排除几乎所有的字体。 使用freecad,我还尝试通过使用轮廓沿轮廓线路径扫掠来创建圆角。虽然结果看起来不错,速度也不错,但我无法用它创建一个有效的实体

有没有其他LIB可以做这项工作?是否有用于平滑网格中的角的库? 首选Python作为语言,但我也会使用其他语言。
作为输出格式,任何可以转换为STL的都可以。

您可以尝试另一种FreeCAD方法。如果问题是轮廓的短边,则可以使用单条边样条曲线近似这种多边导线。生成的实体可以随意填充(ok,仍然取决于字体和大小等)

假设您的示例“O”是一个名为“shapestring”的FreeCAD shapestring:

这当然需要一些调整来处理所有glyph。此外,根据需要,您可能需要增加离散化点的数量以获得准确的结果

其他近似方法:

  • FreeCAD Wire对象也有一个近似函数,但我不知道参数的含义

1。你为什么不自己编写代码呢?2.速度不是问题,您可以为每个角色创建网格,存储它,然后在运行时使用ti。。。3.我会为每个角色绘制体素贴图,然后平滑角点(通过过滤),然后使用边点作为某些曲面(如Bezier)的网格控制点,或者只是具有平滑法线的大块四边形/三角形…感谢您提供此方法的想法和源代码片段。freecad makeFillet算法似乎也存在半径过小的问题。但是,如果离散点的数量不是很高,半径是可以的。必须用不同的值进行一些试验。然后找到一个算法,它可以从“8”或“ö”等字形的样条曲线中创建正确的形状……您好@tobltobs,您最终为更多的角点情况(如8和ö)找到了一个很好的解决方案吗?在Blender下,我(手动)做的是创建文本,键入文本,选择字体,尝试使用文本斜面的滑块。。如果效果不好(例如,某个顶点在远离网格的地方弹出一个R字符..),则改为调整文本的“挤出”设置,然后将对象转换为网格(Alt+C),进入编辑模式并删除所有网格的双重对象,然后使法线一致,退出编辑模式,添加一个“删除断开的块”未切换的重新网格修改器,添加子曲面修改器,添加平滑修改器。
w1 = App.ActiveDocument.ShapeString.Shape.Wires[0]
w2 = App.ActiveDocument.ShapeString.Shape.Wires[1]

f1 = Draft.makeBSpline(w1.discretize(30), True)
f2 = Draft.makeBSpline(w2.discretize(30), True)

f = f1.Shape.cut(f2.Shape)
pad = f.extrude(App.Vector(0,0,3))
Part.show(pad)