2017-09-20 33 views
1

프로젝트의 경우 추가 처리를 위해 .svg- 파일을 .dxf- 파일로 변환하는 작업을 자동화해야합니다..svg to .dxf (잉크 스케이프 사용)

상황 :합니다 (.dxf 파일이 동일한 diretory 또는 하위 폴더에 있다면 상관없이, DXF 이름 SVG 이름이어야합니다)

내가 할 수있는 .dxf로 변환해야 많은 .svg -files 함께 한 디렉토리 CAD 프로그램에서 .dxf 파일을 가져 오기 위해 사용할 수있는 Inkscape GUI를 사용했지만, 언급 한대로 자동화해야합니다. (필자는 지금까지 파이썬으로 만 작성했습니다).

제 생각에는 명령 줄을 통해 Inkscape에서 파일을 엽니 다. png -format에 내보내기 다음 코드를 사용하여 명령을 통해 가능할 것이다 :

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) 

하지만 난 정말 unterstand 잉크 스케이프 확장하지 않습니다. 확장 디렉터리에 dxf_outlines.py/.inx이 필요하다는 것을 알고 있습니다. 필자는 항상 동일한 내보내기 옵션을 필요로하므로 Python 코드를 다시 작성하고 Inkscape의 명령을 통해 실행할 수 있습니까?

아니면 Python의 Inkscape와 같은 추가 소프트웨어가없는 해결책이 있습니까? 지금까지 내가 본 것만 큼은 없습니다.

답변

0

약간 다른 해결책을 생각해 냈지만 여전히 필요한 .dxf 파일로 나아갔습니다. 필자는 파이썬에서 숫자를 .eps-files로 저장했으며 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)