diff options
Diffstat (limited to 'share/extensions/hpgl_encoder.py')
| -rw-r--r-- | share/extensions/hpgl_encoder.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/share/extensions/hpgl_encoder.py b/share/extensions/hpgl_encoder.py index 04387a91b..353b8aa0a 100644 --- a/share/extensions/hpgl_encoder.py +++ b/share/extensions/hpgl_encoder.py @@ -22,6 +22,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import math import re import string +from subprocess import Popen, PIPE +from shutil import copy2 # local libraries import bezmisc import cspsubdiv @@ -52,9 +54,13 @@ class hpglEncoder: "precut":bool "autoAlign":bool "debug":bool + "convertObjects":bool ''' self.options = effect.options - self.doc = effect.document.getroot() + if self.options.convertObjects: + self.doc = self.convertObjectsToPaths(effect.args[-1], effect.document) + else: + self.doc = effect.document.getroot() self.docWidth = effect.unittouu(self.doc.get('width')) self.docHeight = effect.unittouu(self.doc.get('height')) self.hpgl = '' @@ -104,6 +110,24 @@ class hpglEncoder: self.viewBoxTransformX = self.docWidth / effect.unittouu(effect.addDocumentUnit(viewBox2[2])) self.viewBoxTransformY = self.docHeight / effect.unittouu(effect.addDocumentUnit(viewBox2[3])) + def convertObjectsToPaths(self, file, document): + tempfile = inkex.os.path.splitext(file)[0] + "-prepare.svg" + # tempfile is needed here only because we want to force the extension to be .svg + # so that we can open and close it silently + copy2(file, tempfile) + + # Unfortunately this briefly pops up the GUI and cannot be done with -z, see https://bugs.launchpad.net/inkscape/+bug/843260 + p = Popen('inkscape --verb=EditSelectAllInAllLayers --verb=EditUnlinkClone --verb=ObjectToPath --verb=FileSave --verb=FileQuit ' + tempfile, shell=True, stdout=PIPE, stderr=PIPE) + (out, err) = p.communicate() + + if p.returncode != 0: + inkex.errormsg(_("Failed to convert objects to paths. Continued without converting.")) + inkex.errormsg(out) + inkex.errormsg(err) + return document.getroot() + else: + return inkex.etree.parse(tempfile).getroot() + def getHpgl(self): # dryRun to find edges groupmat = [[self.mirrorX * self.scaleX * self.viewBoxTransformX, 0.0, 0.0], [0.0, self.mirrorY * self.scaleY * self.viewBoxTransformY, 0.0]] |
