You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python的ezdxf插件text2path为单线字体生成单线条路径?

问题

为满足CNC加工需求,我使用一款单线连通字体,尝试通过ezdxf的text2path插件将文本转换为路径,以便在无对应字体的生产CNC设备上使用。但实际生成的DXF文件呈现双线效果,text2path将单线字体当作有宽度的字体处理,生成了环绕单线的闭合路径,无法满足单线条加工要求。

我的代码如下:

import ezdxf
from ezdxf.fonts.fonts import find_font_face
from ezdxf.path import render_lwpolylines
from ezdxf.addons.text2path import make_path_from_str

doc = ezdxf.new("AC1032")
doc.styles.add("IAmOnlineWithU", font="IAmOnlineWithU-o96q.ttf")
msp = doc.modelspace()

p = make_path_from_str("some text", find_font_face("IAmOnlineWithU-o96q.ttf"))
render_lwpolylines(msp, [p])

with open("out.dxf", "w") as f:
    doc.write(f)
解决方案

ezdxf的make_path_from_str默认会生成字体的轮廓闭合路径,针对单线字体,需要调用text2path模块的make_single_line_paths方法来提取核心的单线连通路径。

修改后的代码如下:

import ezdxf
from ezdxf.fonts.fonts import find_font_face
from ezdxf.path import render_lwpolylines
from ezdxf.addons.text2path import make_single_line_paths

doc = ezdxf.new("AC1032")
msp = doc.modelspace()

# 生成单线路径,可自定义文本高度
paths = make_single_line_paths(
    "some text",
    font_face=find_font_face("IAmOnlineWithU-o96q.ttf"),
    height=5.0  
)

# 将单线路径渲染为LWPolyline对象
render_lwpolylines(msp, paths)

# 用内置方法保存DXF文件,避免格式错误
doc.saveas("out.dxf")

关键说明:

  • make_single_line_paths是专门适配单线字体的方法,直接提取字体的中心线条结构,不会生成轮廓闭合路径。
  • 无需提前向文档添加字体样式,该方法直接读取指定字体文件解析单线逻辑。
  • 使用doc.saveas()替代手动文件写入,能规避编码或DXF格式兼容问题。

内容的提问来源于stack exchange,提问作者mmachenry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:47:26