将.svg转为.dxf(使用Inkscape?)

4 人关注

对于一个项目,我需要将大量的 .svg 文件自动转换为 .dxf 文件,以便进一步处理。

情况是这样的。一个目录中有大量的 .svg 文件,这些文件应该被转换为 .dxf (不管这些 .dxf 文件是在同一个目录中还是在一个子文件夹中,dxf名称应该是svg名称)。

我可以用Inkscape GUI来做,它也可以在CAD程序中导入 .dxf 文件,但如前所述,我需要将其自动化。(到目前为止,我只用Python编写过)。

我的想法。我通过命令行在Inkscape中打开文件。通过以下代码的命令,可以导出 png 格式的文件。

from subprocess import call
import os
svg_dir = "C:\\temp\\layers\\"
files = [svg_dir + i for i in os.listdir(svg_dir) if ".svg" in i]
dir = r"C:\Program Files\Inkscape"
for i in files:
    cmdline = "Inkscape -z -f "+ i +" -e "+ i + ".png"
    rc = call("start cmd /K " + cmdline, cwd=dir, shell=True) 

但我并不真正了解Inkscape的扩展。我只知道我需要dxf_outlines.py/.inx在扩展目录中。我总是需要相同的导出选项,所以我可以重写Python代码,然后通过Inkscape的命令运行它吗?

或者有什么解决方案,不需要任何额外的软件,如Inkscape in Python?就我所见,没有。

python
svg
command
inkscape
dxf
C.Joe
C.Joe
发布于 2017-09-21
2 个回答
C.Joe
C.Joe
发布于 2022-08-23
已采纳
0 人赞同

我想出了一个稍有不同的解决方案,但仍能获得所需的 .dxf 文件。我在Python中把我的数字保存为 .eps -文件,只需用pstoedit的一个命令行就可以转换它们。

def eps_to_dxf():
    eps_list = [i for i in os.listdir(eps_directory) if ".eps" in i]
    work_directory = "C:\Program Files\pstoedit"
    for i in eps_list:
        input_file = i.split(".")[0]
        output_file = input_file + ".dxf"
        cmdline = "pstoedit -f dxf_s " + eps_directory + i + " " + eps_directory + output_file
        subprocess.check_call(cmdline, cwd=work_directory, shell=True)