From 8e5a1520cd5e901f514c382ad17e77d64727896a Mon Sep 17 00:00:00 2001 From: Michael Schwarz Date: Wed, 10 Dec 2014 22:13:34 +0100 Subject: Moved DXF export scripts to separate directory. --- dxf_export/__main__.py | 95 -------------------------------------------------- 1 file changed, 95 deletions(-) delete mode 100644 dxf_export/__main__.py (limited to 'dxf_export/__main__.py') diff --git a/dxf_export/__main__.py b/dxf_export/__main__.py deleted file mode 100644 index ea6c7ad..0000000 --- a/dxf_export/__main__.py +++ /dev/null @@ -1,95 +0,0 @@ -import sys, os, xml.etree.ElementTree, subprocess, tempfile, contextlib, shutil -import better_dxf_outlines - - -@contextlib.contextmanager -def TemporaryDirectory(): - dir = tempfile.mkdtemp() - - try: - yield dir - finally: - shutil.rmtree(dir) - - -def _export_dxf(in_path, out_path): - dxf_export = better_dxf_outlines.MyEffect() - dxf_export.affect(args = [in_path], output = False) - - with open(out_path, 'w') as file: - file.write(dxf_export.dxf) - - -def _get_inkscape_layer_count(svg_path): - document = xml.etree.ElementTree.parse(svg_path) - layers = document.findall( - '{http://www.w3.org/2000/svg}g[@{http://www.inkscape.org/namespaces/inkscape}groupmode="layer"]') - - return len(layers) - - -def _command(args): - process = subprocess.Popen(args) - process.wait() - - assert not process.returncode - - -def _inkscape(svg_path, verbs): - def iter_args(): - yield os.environ['INKSCAPE'] - - for i in verbs: - yield '--verb' - yield i - - yield svg_path - - _command(list(iter_args())) - - -def _unfuck_svg_document(temp_svg_path): - """ - Unfucks an SVG document so is can be processed by the better_dxf_export plugin. - """ - - layers_count = _get_inkscape_layer_count(temp_svg_path) - - def iter_inkscape_verbs(): - yield 'LayerUnlockAll' - yield 'LayerShowAll' - - # Go to the first layer - for _ in range(layers_count): - yield 'LayerPrev' - - for _ in range(layers_count): - yield 'EditSelectAll' - yield 'ObjectToPath' - yield 'EditSelectAll' - yield 'SelectionUnGroup' - yield 'EditSelectAll' - yield 'StrokeToPath' - yield 'EditSelectAll' - yield 'SelectionUnion' - yield 'LayerNext' - - yield 'FileSave' - yield 'FileClose' - yield 'FileQuit' - - _inkscape(temp_svg_path, list(iter_inkscape_verbs())) - - -def main(in_path, out_path): - with TemporaryDirectory() as temp_dir: - temp_svg_path = os.path.join(temp_dir, 'temp.svg') - - shutil.copyfile(in_path, temp_svg_path) - - _unfuck_svg_document(temp_svg_path) - - _export_dxf(temp_svg_path, out_path) - - -main(*sys.argv[1:]) -- cgit