Commit graph

86 commits

Author SHA1 Message Date
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
5c05570730 Only convert SVG to Asymptote/DXF if necessary.
Instead of always converting all SVG files to both Asymptote and DXF, only the formats which may be used as dependencies are compiled.
2015-09-29 23:08:56 +02:00
Michael Schwarz
883883e41f Added some missing comments in the make file. 2015-09-16 01:54:54 +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
e595de1b87 Convert all SVG file to DXF and Asymptote.
Currently, the user has to configure which SVG files are exported to DXF and which to Asymptote, without a possibility to do both.

With this change, all SVG files are exported to both file formats, if necessary.
2015-09-16 01:50:15 +02:00
Michael Schwarz
365d639ae4 Ignore $PYTHONPATH.
We only use standard library features and thus can safely ignore PYTHONPATH.
2015-09-16 01:41:46 +02:00
Michael Schwarz
4a1b8166e1 Only print abstract information about commands being executed.
Most commands only show the python wrapper being called, which does not tell the user much anyways.
2015-09-16 01:41:46 +02:00
Michael Schwarz
a6b45d8e86 Remove targets when commands fail.
The make file now removes targets when commands fail. In some cases (e.g. generating files), an error would lead to a half-written file being left behind and that file would not get updated in the next invocation of `make`.
2015-09-16 01:41:45 +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
853c56a38b Fixed automatism which clobbered file name extensions. 2015-08-27 15:30:31 +02:00
Michael Schwarz
478c3df1f1 Fixed make warning.
This fixes a bug producing warnings like the following:

    Makefile:91: target 'src/cube.pdf' given more than once in the same rule
2015-08-27 15:30:31 +02:00
Michael Schwarz
75af06b93e Makefile: Fixed a potential bug which would include too many files. 2015-08-27 15:30:31 +02:00
Michael Schwarz
55e6362bb6 Updated readme for new features. 2015-08-14 16:07:35 +02:00
Michael Schwarz
7dc8da588e Asymptote export: Call variable with all paths all. 2015-08-10 21:38:10 +02:00
Michael Schwarz
a2ce9df576 Makefile: Fixed missing dependencies.
Asymptote and OpenSCAD targets would not include intermediate files in their dependencies.
2015-08-08 21:56:03 +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
3971ddf256 Reworked make file.
This time to remove duplicate functionality in generating list of different products.
2015-08-07 02:03:38 +02:00
Michael Schwarz
6c1fefff1b Makefile: Fix duplicate dependency warning. 2015-08-07 02:03:36 +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
4a103f6dba Integrated Asymptote compilation into makefile. 2015-08-06 16:32:59 +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
7a1f69c474 Simplified makefile. 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
e03689f0ff Moved .gitignore rules to top level.
This moves all ignore rules to the .gitignore files in the root directory. This is so that users can edit the .gitignore file in src without the risk of merge conflicts if we ever need to edit the default rules.

src/.gitignore is now empty but is left in the repository so that the src directory is automatically created on checkout.
2015-03-14 16:26:44 +01:00
Michael Schwarz
7e904b6055 Grammar and convoluted language in readme.
This fixes #1.
2015-03-09 22:51:58 +01:00
Michael Schwarz
8aed3f708b Converted readme to Markdown.
This fixes #5.
2015-03-09 22:15:44 +01:00
Michael Schwarz
dc6284662b Added makefile targets to build the project to a certain step. 2015-03-09 18:29:49 +01:00
Michael Schwarz
ff502f1d22 Fixed failure when settings.mk or config.mk doesn't exist. 2015-03-08 14:06:50 +01:00