From 10d76a620155b3ba6849608e4908a7a0b7837a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20W=C3=BCst?= Date: Wed, 19 Mar 2014 23:39:05 +0100 Subject: added closing commands to avoid errors on old pen plotters, better command language conversion (bzr r13168) --- share/extensions/hpgl_encoder.py | 9 +-------- share/extensions/plotter.py | 27 +++++++++++++++++++++------ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/share/extensions/hpgl_encoder.py b/share/extensions/hpgl_encoder.py index c7f0cd282..a16561e97 100644 --- a/share/extensions/hpgl_encoder.py +++ b/share/extensions/hpgl_encoder.py @@ -59,6 +59,7 @@ class hpglEncoder: self.doc = effect.document.getroot() self.docWidth = effect.unittouu(self.doc.get('width')) self.docHeight = effect.unittouu(self.doc.get('height')) + self.hpgl = '' self.divergenceX = 'False' self.divergenceY = 'False' self.sizeX = 'False' @@ -156,12 +157,6 @@ class hpglEncoder: [0.0, self.mirrorY * self.scaleY * self.viewBoxTransformY, -self.divergenceY + self.offsetY]] groupmat = simpletransform.composeTransform(groupmat, simpletransform.parseTransform('rotate(' + self.options.orientation + ')')) self.vData = [['', -1.0, -1.0], ['', -1.0, -1.0], ['', -1.0, -1.0], ['', -1.0, -1.0]] - # store initial hpgl commands - self.hpgl = 'IN;SP%d' % self.options.pen - if self.options.force > 0: - self.hpgl += ';FS%d' % self.options.force - if self.options.speed > 0: - self.hpgl += ';VS%d' % self.options.speed # add move to zero point and precut if self.toolOffset > 0.0 and self.options.precut: if self.options.center: @@ -185,8 +180,6 @@ class hpglEncoder: self.processGroups(self.doc, groupmat) # shift an empty node in in order to process last node in cache self.processOffset('PU', 0, 0) - # add return to zero point - self.hpgl += ';PU0,0;' if self.options.debug: return self.hpgl, self else: diff --git a/share/extensions/plotter.py b/share/extensions/plotter.py index be59f604b..398ab683e 100644 --- a/share/extensions/plotter.py +++ b/share/extensions/plotter.py @@ -83,6 +83,8 @@ class Plot(inkex.Effect): else: ''' # convert to other formats + if self.options.commandLanguage == 'HPGL': + self.convertToHpgl() if self.options.commandLanguage == 'DMPL': self.convertToDmpl() if self.options.commandLanguage == 'ZING': @@ -93,6 +95,15 @@ class Plot(inkex.Effect): else: self.sendHpglToSerial() + def convertToHpgl(self): + # convert raw HPGL to HPGL + hpglInit = 'IN;SP%d' % self.options.pen + if self.options.force > 0: + hpglInit += ';FS%d' % self.options.force + if self.options.speed > 0: + hpglInit += ';VS%d' % self.options.speed + self.hpgl = hpglInit + self.hpgl + ';PU0,0;SP0;IN;' + def convertToDmpl(self): # convert HPGL to DMPL # ;: = Initialise plotter @@ -109,16 +120,20 @@ class Plot(inkex.Effect): self.hpgl = self.hpgl.replace(';', ',') self.hpgl = self.hpgl.replace('PU', 'U') self.hpgl = self.hpgl.replace('PD', 'D') - velocity = '' + dmplInit = ';:HAL0P%d' % self.options.pen if self.options.speed > 0: - velocity = 'V' + str(self.options.speed) - self.hpgl = re.sub(r'IN,SP[0-9]+(,FS[0-9]+)?(,VS[0-9]+)?,', r';:HAL0P' + str(self.options.pen) + velocity + 'EC1', self.hpgl) - self.hpgl += 'Z' + dmplInit += 'V%d' % self.options.speed + dmplInit += 'EC1' + self.hpgl = dmplInit + self.hpgl[1:] + ',U0,0,P0Z' def convertToZing(self): # convert HPGL to Zing - self.hpgl = self.hpgl.replace('IN;', 'ZG;') - self.hpgl += '@' + hpglInit = 'ZG;SP%d' % self.options.pen + if self.options.force > 0: + hpglInit += ';FS%d' % self.options.force + if self.options.speed > 0: + hpglInit += ';VS%d' % self.options.speed + self.hpgl = hpglInit + self.hpgl + ';PU0,0;SP0;@' def sendHpglToSerial(self): # gracefully exit script when pySerial is missing -- cgit v1.2.3