1

我正在使用 CAD 软件(特别是 FreeCAD,但这应该与系统无关),并且我想将 2D 字符绘制为多边形 - 而不是笔画。例如,字母“O”可能由两个同心圆组成。有没有办法直接从 .tff 文件生成这样的多边形?

(是的,FreeCAD 确实支持文本,但我希望能够在不使用文本功能的情况下直接与多边形交互。这将使系统在某些其他程序之间更具可移植性。)

看起来您可以通过在矢量图形程序(如inkscape)中编写文本来做到这一点。但这会很痛苦:我必须安装字体,写下每个字母,然后手动提取多边形。

我也试过这个 webapp。它可以给我 .svg 文件,但我仍然找不到将它们解析为多边形的系统方法。

我的目标是有一个函数,它接受一个字母和一个比例并输出一个多边形或多边形列表来描述那个字母。

例如在python中:

>>> get_letter('O',1)
[[(0,0),(1,0),(1,1),(0,1)], [(.25,.25),(.75,.25),(.75,.75),(.25,.75)]]

主要是从现有字体中获取多边形。

4

1 回答 1

1

这在 FreeCAD 中是可能的。我将首先使用 GUI 进行操作。然后,您可以检查 Python 控制台以了解幕后发生的情况,如果您想更全面地自动化该过程,则可以将 python 修改为宏。

首先,在 Draft 工作台中,创建所需文本的 shapestring。Shapestrings 可以使用 truetype 字体、大小和位置。

然后在树中选择 shapestring 并使用 Draft 工具栏上的 Downgrade 工具。这会将其分解为一组面。每个面可以进一步降级为一组线。电线是您要寻找的多边形。

在视图面板菜单下,打开选择视图面板。然后选择树中的一根电线。它将像“Unnamed.Wire001 (Wire001)”一样出现在选择面板中。右键单击它并选择“到 python 控制台”这将为您提供一个可以在 python 中与之交互的引用。
尝试查看 Obj.Shape.Wires[0].Vertexes 以获取该线中的顶点列表。

于 2019-08-20T19:28:38.537 回答