summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c71757d)
raw | patch | inline | side by side (parent: c71757d)
author | acspike <acspike@users.sourceforge.net> | |
Sun, 29 Jan 2006 15:03:14 +0000 (15:03 +0000) | ||
committer | acspike <acspike@users.sourceforge.net> | |
Sun, 29 Jan 2006 15:03:14 +0000 (15:03 +0000) |
share/extensions/Makefile.am | patch | blob | history | |
share/extensions/dxf_outlines.inx | [new file with mode: 0644] | patch | blob |
share/extensions/dxf_outlines.py | [new file with mode: 0755] | patch | blob |
index 2e32312ca84b0cde5773e428ed7e524f0bfd535a..67d86bca8b640bcce0153b5209cd8d55c6363ac5 100644 (file)
ps2dxf.sh \
embedimage.py \
extractimage.py \
- svg_and_media_zip_output.py
+ svg_and_media_zip_output.py \
+ dxf_outlines.py
otherstuff =
dxf_input.inx \
embedimage.inx \
extractimage.inx \
- svg_and_media_zip_output.inx
+ svg_and_media_zip_output.inx \
+ dxf_outlines.py
extension_SCRIPTS = \
$(extensions)
diff --git a/share/extensions/dxf_outlines.inx b/share/extensions/dxf_outlines.inx
--- /dev/null
@@ -0,0 +1,18 @@
+<inkscape-extension>
+ <_name>Dxf Outlines</_name>
+ <id>org.ekips.output.dxf_outlines</id>
+ <dependency type="extension">org.inkscape.output.svg.inkscape</dependency>
+ <dependency type="executable" location="extensions">dxf_outlines.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <output>
+ <extension>.dxf</extension>
+ <mimetype>application/x-dxf</mimetype>
+ <_filetypename>Path outlines converted to DXF splines (*.DXF)</_filetypename>
+ <_filetypetooltip>Path outlines converted to DXF splines</_filetypetooltip>
+ <dataloss>TRUE</dataloss>
+ </output>
+ <script>
+ <command reldir="extensions" interpreter="python">dxf_outlines.py</command>
+ <helper_extension>org.inkscape.output.svg.inkscape</helper_extension>
+ </script>
+</inkscape-extension>
diff --git a/share/extensions/dxf_outlines.py b/share/extensions/dxf_outlines.py
--- /dev/null
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+'''
+Copyright (C) 2005 Aaron Spike, aaron@ekips.org
+
+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
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+'''
+import inkex, cubicsuperpath
+
+class MyEffect(inkex.Effect):
+ def __init__(self):
+ inkex.Effect.__init__(self)
+ self.dxf = ''
+ def output(self):
+ print self.dxf
+ def dxf_add(self, str):
+ self.dxf += str
+ def dxf_line(self,csp):
+ line = "\n0\nLINE\n8\n2\n62\n4\n10\n%f\n20\n%f\n30\n0\n11\n%f\n21\n%f\n31\n0" % (csp[0][0],csp[0][1],csp[1][0],csp[1][1])
+ self.dxf_add(line)
+ def dxf_spline(self,csp):
+ knots = 8
+ ctrls = 4
+ self.dxf_add("\n 0\nSPLINE\n 5\n43\n 8\n0\n 62\n256\n370\n-1\n 6\nByLayer")
+ self.dxf_add("\n100\nAcDbEntity\n100\nAcDbSpline\n 70\n8\n 71\n3\n 72\n%d\n 73\n%d\n 74\n0" % (knots, ctrls))
+ for i in range(2):
+ for j in range(4):
+ self.dxf_add("\n 40\n%d" % i)
+ for i in csp:
+ self.dxf_add("\n 10\n%f\n 20\n%f\n 30\n0" % (i[0],i[1]))
+ def effect(self):
+ #References: Minimum Requirements for Creating a DXF File of a 3D Model By Paul Bourke
+ # NURB Curves: A Guide for the Uninitiated By Philip J. Schneider
+ self.dxf_add("999\nDXF created by Inkscape\n0\nSECTION\n2\nENTITIES")
+
+ path = '//path'
+ for node in inkex.xml.xpath.Evaluate(path,self.document):
+ p = cubicsuperpath.parsePath(node.attributes.getNamedItem('d').value)
+ 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]:
+ self.dxf_line([s[1],e[1]])
+ else:
+ self.dxf_spline([s[1],s[2],e[0],e[1]])
+ self.dxf_add("\n0\nENDSEC\n0\nEOF\n")
+
+
+e = MyEffect()
+e.affect()