index 219ee1dda6d650cf8c24520f51653d9641bcb654..6dd0de4774c04b17a586c65dbab9c09214621734 100755 (executable)
- toggle between LINE/LWPOLYLINE added Jan 2010
- support for transform elements added July 2010
- support for layers added July 2010
+- support for rectangle added Dec 2010
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
inkex.Effect.__init__(self)
self.OptionParser.add_option("-R", "--ROBO", action="store", type="string", dest="ROBO")
self.OptionParser.add_option("-P", "--POLY", action="store", type="string", dest="POLY")
+ self.OptionParser.add_option("--units", action="store", type="string", dest="units")
self.OptionParser.add_option("--tab", action="store", type="string", dest="tab")
self.OptionParser.add_option("--inputhelp", action="store", type="string", dest="inputhelp")
self.dxf = []
self.color = 7 # default is black
if hsl[2]:
self.color = 1 + (int(6*hsl[0] + 0.5) % 6) # use 6 hues
- d = node.get('d')
- if d:
+ if node.tag == inkex.addNS('path','svg'):
+ d = node.get('d')
+ if not d:
+ return
p = cubicsuperpath.parsePath(d)
- trans = node.get('transform')
- if trans:
- mat = simpletransform.composeTransform(mat, simpletransform.parseTransform(trans))
- simpletransform.applyTransformToPath(mat, p)
- for sub in p:
- for i in range(len(sub)-1):
- s = sub[i]
- e = sub[i+1]
- if s[1] == s[2] and e[0] == e[1]:
- if (self.options.POLY == 'true'):
- self.LWPOLY_line([s[1],e[1]])
- else:
- self.dxf_line([s[1],e[1]])
- elif (self.options.ROBO == 'true'):
- self.ROBO_spline([s[1],s[2],e[0],e[1]])
+ elif node.tag == inkex.addNS('rect','svg'):
+ x = float(node.get('x'))
+ y = float(node.get('y'))
+ width = float(node.get('width'))
+ height = float(node.get('height'))
+ p = [[[x, y],[x, y],[x, y]]]
+ p.append([[x + width, y],[x + width, y],[x + width, y]])
+ p.append([[x + width, y + height],[x + width, y + height],[x + width, y + height]])
+ p.append([[x, y + height],[x, y + height],[x, y + height]])
+ p.append([[x, y],[x, y],[x, y]])
+ p = [p]
+ else:
+ return
+ trans = node.get('transform')
+ if trans:
+ mat = simpletransform.composeTransform(mat, simpletransform.parseTransform(trans))
+ simpletransform.applyTransformToPath(mat, p)
+ for sub in p:
+ for i in range(len(sub)-1):
+ s = sub[i]
+ e = sub[i+1]
+ if s[1] == s[2] and e[0] == e[1]:
+ if (self.options.POLY == 'true'):
+ self.LWPOLY_line([s[1],e[1]])
else:
- self.dxf_spline([s[1],s[2],e[0],e[1]])
+ self.dxf_line([s[1],e[1]])
+ elif (self.options.ROBO == 'true'):
+ self.ROBO_spline([s[1],s[2],e[0],e[1]])
+ else:
+ self.dxf_spline([s[1],s[2],e[0],e[1]])
def process_group(self, group):
if group.get(inkex.addNS('groupmode', 'inkscape')) == 'layer':
if trans:
self.groupmat.append(simpletransform.composeTransform(self.groupmat[-1], simpletransform.parseTransform(trans)))
for node in group:
- if node.tag == inkex.addNS('path','svg'):
- self.process_path(node, self.groupmat[-1])
if node.tag == inkex.addNS('g','svg'):
self.process_group(node)
+ else:
+ self.process_path(node, self.groupmat[-1])
if trans:
self.groupmat.pop()
self.dxf_add(" 0\nLAYER\n 5\n%x\n100\nAcDbSymbolTableRecord\n100\nAcDbLayerTableRecord\n 2\n%s\n 70\n0\n 6\nCONTINUOUS\n" % (i + 80, self.layers[i]))
self.dxf_add(dxf_templates.r14_style)
- scale = 25.4/90.0
+ scale = eval(self.options.units)
+ if not scale:
+ scale = 25.4/90
h = inkex.unittouu(self.document.getroot().xpath('@height', namespaces=inkex.NSS)[0])
self.groupmat = [[[scale, 0.0, 0.0], [0.0, -scale, h*scale]]]
doc = self.document.getroot()
e.affect()
-# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 encoding=utf-8 textwidth=99
+# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99