This is an Inkscape extension that closes all open curves in the selection.
It may be useful when you want to use curves in other programs such OpenOffice. OpenOffice wont fill path if it isn't closed one. Also if you convert text to curve, you can see some trash in the outline because curves are not closed (see attached pictures). This extension works with paths. It modifies path's d parameter. It adds a 'z' just before each 'm' if it's not the first one in the line or there's already 'z' before it.
Instalation: Unpack files from attached archive to /usr/share/inkscape/extensions/. Extension appears at Extension->Modify path.
Any comments and contributions are welcome !
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <_name>Close curves</_name> <id>ru.cnc-club.filter.close_curves</id> <dependency type="executable" location="extensions">close_curves.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> <param name="help" type="description"> Select paths that you want to close, and press ok. </param> <effect needs-live-preview="false"> <effects-menu> <submenu _name="Modify Path"/> </effects-menu> <object-type>path</object-type> </effect> <script> <command reldir="extensions" interpreter="python">close_curves.py</command> </script> </inkscape-extension>
Код: Выделить всё
#!/usr/bin/env python """ Copyright (C) 2009 Nick Drobchenko, firstname.lastname@example.org based on gcode.py (C) 2007 hugomatic... based on addnodes.py (C) 2005,2007 Aaron Spike, email@example.com based on dots.py (C) 2005 Aaron Spike, firstname.lastname@example.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 """ # # This extension close paths by adding 'z' before each 'm' if it is not # the first 'm' and it is not prepended by 'z' already. # import inkex, re, simplepath class CloseCurves(inkex.Effect): def __init__(self): inkex.Effect.__init__(self) def effect(self): for id, node in self.selected.iteritems(): if node.tag == inkex.addNS('path','svg'): d = node.get('d') d = simplepath.formatPath( simplepath.parsePath(d) ) d = re.sub(r'(?i)(m[^mz]+)',r'\1 Z ',d) d = re.sub(r'(?i)\s*z\s*z\s*',r' Z ',d) node.set('d', d) e = CloseCurves() e.affect()