我正在使用 CAD 软件(特别是 FreeCAD,但这应该与系统无关),并且我想将 2D 字符绘制为多边形 - 而不是笔划。例如字母“O”可能由两个同心圆组成。有没有办法直接从 .tff 文件生成此类多边形?
(是的,FreeCAD 确实支持文本,但我希望能够直接与多边形交互,而不使用文本功能。这将使系统在某些其他程序之间更具可移植性。)
看起来您可以通过在矢量图形程序(例如 inkscape)中编写文本来完成此操作。但这会很痛苦:我必须安装字体,写下每个字母,然后手动提取多边形。
我也尝试过this webapp 。它可以给我 .svg 文件,但我仍然找不到系统的方法将它们解析为多边形。
我的目标是拥有一个函数,它接受一个字母和一个比例并输出描述该字母的多边形或多边形列表。
例如在Python中:
>>> get_letter('O',1)
[[(0,0),(1,0),(1,1),(0,1)], [(.25,.25),(.75,.25),(.75,.75),(.25,.75)]]
主要是从现有字体中获取多边形。
最佳答案
这在 FreeCAD 中是可能的。我首先会使用 GUI 来完成它。然后,您可以检查 Python 控制台,了解幕后发生的情况,如果您想更全面地自动化该过程,则可以将 Python 修改为宏。
首先,在草稿工作台中,创建所需文本的形状字符串。 Shapestrings 可以使用 truetype 字体、大小和位置。
然后在树中选择 shapestring,并使用“草稿”工具栏上的“降级”工具。这会将其分解为一组面孔。每个面都可以进一步降级为一组线。电线是您正在寻找的多边形。
在 View 面板菜单下,打开选择 View 面板。然后选择树中的一根电线。它将出现在选择面板中,如“Unnamed.Wire001 (Wire001)”。右键单击它并选择“到 python 控制台”,这将为您提供对它的引用,您可以在 python 中与之交互。
尝试查看 Obj.Shape.Wires[0].Vertexes 以获取该线中的顶点列表。
关于fonts - 将字体转换为多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57549659/