Commit graph

42 commits

Author SHA1 Message Date
Michael Schwarz
215ffeb9bb Fixed asymptote export.
stdout was not being redirected into a pipe.
2015-10-02 00:25:49 +02:00
Michael Schwarz
b74aa3b7ce Reject documents without absolute size.
Reject document which do not have a viewBox and a height attribute with absolute measures. In documents without these, the size of a pixel cannot be determined and the scale out the exported shape depends on the Inkscape version.

This fixes #16.
2015-09-30 18:19:50 +02:00
Michael Schwarz
7a0be0c812 More robust document scale calculation.
Rewrite of the code which calculates the document scale and simplified code path which applies the necessary transformations.
2015-09-30 18:16:57 +02:00
Michael Schwarz
39be44f16d Include input file path in error messages. 2015-09-30 18:14:50 +02:00
Michael Schwarz
9f3e7bf14d Workaround for LayerMoveToPrev/Next not selecting correct layer.
Inkscape does not reliably select the previous or next layer when using LayerMoveToPrev or LayerMoveToNext.
2015-09-30 18:09:55 +02:00
Michael Schwarz
24a60718eb Implemented Asymptote dependency tracking. 2015-09-16 01:50:24 +02:00
Michael Schwarz
a1f09b7f86 Abstraction which allows a running process to be used as a context manager. 2015-09-16 01:50:24 +02:00
Michael Schwarz
2bd7e1e3d7 Separate module for make file stuff. 2015-09-16 01:50:23 +02:00
Michael Schwarz
096db19a9a Wrap all Python main functions with decorator.
This decorator check if a module was called as the main module and catches exceptions.
2015-09-16 01:50:23 +02:00
Michael Schwarz
93f9696491 Check for Asymptote not writing a PDF file.
If no drawing commands are called in an Asymptote script, no PDF output is created and no error is generated. This confuses the build process, which expect a target to exist after its commands were called.

With this change, the Python wrapper checks whether a PDF was actually written and throws an error otherwise.
2015-09-16 01:50:23 +02:00
Michael Schwarz
0c5b944686 Fixed layer mixup when no layer was selected in Inkscape.
The Inkscape export would put objects into the wrong layers or miss objects completely when no layer was selected.
2015-09-16 01:50:23 +02:00
Michael Schwarz
2ca55c2d17 Fixed empty layers missing from Asymptote export.
Empty layers would not be included in the exported Asymptote file, making it hard to work with a set of SVG files with the same layers if some of the SVG files had empty layers.
2015-09-16 01:50:22 +02:00
Michael Schwarz
57c9e9dc90 Prevent Python stack trace when an external command failed.
This catches the OSError thrown by the subprocess module and wraps it so that in the end only an error message is printed, explaining which command failed.
2015-09-16 01:41:45 +02:00
Michael Schwarz
ab26e5a8d5 Compile Asymptote files in separate working dir.
Asymptote leaves a trail of partially cleaned-up temporary files behind it when PDFLaTeX is used.

With this changes, Asymptote files are compiled in a temporary directory outside the project root.
2015-09-16 01:41:26 +02:00
Michael Schwarz
987fa08ce6 New workaround for temp dir on different device.
Currently, on setups where the project dir is on a different file system as the system temporary directory, a temporary directory is instead created on the project dir. This is not very nice.

With this change, we still create temporary files in the system temporary directory but copy instead of move files from and to the temporary directory, if necessary, which solves the problems.
2015-09-16 01:40:00 +02:00
Michael Schwarz
63632560b6 Revert "support: Workaround for tempdir on different mount."
This reverts commit 3d21efd489.
2015-09-15 18:59:35 +02:00
Michael Schwarz
7dc8da588e Asymptote export: Call variable with all paths all. 2015-08-10 21:38:10 +02:00
Michael Schwarz
2034cdd369 Inkscape export: Removed stray semicolon in exported Asymptote files. 2015-08-07 02:03:50 +02:00
Michael Schwarz
51d896929e Inkscape export: Fix elliptical arcs not being closed. 2015-08-07 02:03:47 +02:00
Michael Schwarz
5a1604ce20 Use Python script to run Asymptote. 2015-08-07 02:03:33 +02:00
Michael Schwarz
6bce36b6ed Inkscape export: Fix wrong units in Asymptote export.
The generate asymptote file would use the Inkscape document coordinates but Asymptote always uses PostScript points.
2015-08-07 02:03:28 +02:00
Michael Schwarz
0b1113d503 Inkscape export: Use original file name for temp file.
Because we can.
2015-08-07 02:03:20 +02:00
Michael Schwarz
e2d477640f Inkscape export: Support to export to Asymptote. 2015-08-06 16:32:59 +02:00
Michael Schwarz
b34b948f0a Reworked Inkscape command line generation.
The old version was brittle and made conditional operations hard.
2015-08-06 16:32:59 +02:00
Michael Schwarz
14f078c821 Inkscape export: Renamed module to inkscape.
This module will later be used for other export types than just DXF.
2015-08-06 16:32:59 +02:00
Michael Schwarz
c451c40dd2 DXF export: Not tied to exporting to DXF anymore. 2015-08-06 16:32:58 +02:00
Michael Schwarz
ac795218d3 Inkscape export: Optionally don't transform strokes to shapes. 2015-08-06 16:32:58 +02:00
Michael Schwarz
3d21efd489 support: Workaround for tempdir on different mount.
This adds a workaround for setups where the user has checked out the project on a different mount point than where the temporary directory is located.
2015-07-12 18:57:21 +02:00
Michael Schwarz
8d697f0784 dxf export: Use different colors for layers.
With this change, different colors are assigned to shapes. Shapes on the same layer get the same color. This allows them to be grouped by color by software that doesn’t support layers (e.g. Lasercut 5.3).
2015-03-21 12:45:45 +01:00
Michael Schwarz
fb72dca77a Fix make jobserver warning.
When running the make file with a number of jobs, the following warning was generated by the make process used to parse the dependency makefile generated by OpenSCAD:

make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.

With this change, the variables MAKELEVEL and MAKEFLAGS are removed from the environment before starting the child make process.
2015-03-15 16:34:59 +01:00
Michael Schwarz
e232c40ef7 Compile OpenSCAD files to DXF.
This adds support to selectively compile some OpenSCAD files to DXF instead of STL.
2015-03-15 12:12:01 +01:00
Michael Schwarz
b81d257127 Fixed text on path export.
This fixes exporting SVG files which contain text on a path where the path is on a different layer than the text (which is necessary unless the path should also be combined with the text in a single layer).
2015-03-15 12:12:01 +01:00
Michael Schwarz
09b8f8c126 Support for setting the DXF export quality. 2015-03-07 12:24:55 +01:00
Michael Schwarz
72eca42f2d Workaround for OpenSCAD sometimes writing an empty STL file when it crashes. 2014-12-21 19:33:33 +01:00
Michael Schwarz
dde79ab4b2 Removed some unused imports in the scripts copied from the Inkscape distribution. 2014-12-21 02:15:45 +01:00
Michael Schwarz
c74efa59dc Rewritten unit conversion methods of inkex.py to properly handle viewport settings. 2014-12-21 02:15:45 +01:00
Michael Schwarz
e309a206be Removed some unused imports in the scripts copied from the Inkscape distribution. 2014-12-21 02:14:39 +01:00
Michael Schwarz
eb74f4e6d9 Fixed DXF plugin to work with new inkex library. 2014-12-20 21:12:55 +01:00
Michael Schwarz
30487e03f4 Upgraded Python files copied from the Inkscape distribution to those from version 0.91.99.13724. 2014-12-20 21:12:50 +01:00
Michael Schwarz
f9fa53eef8 Added support for recording dependencies while compiling OpenSCAD files. 2014-12-12 11:44:29 +01:00
Michael Schwarz
60b25ad13d Extracted common functions to separate module. 2014-12-10 22:18:14 +01:00
Michael Schwarz
8e5a1520cd Moved DXF export scripts to separate directory. 2014-12-10 22:13:34 +01:00