#!/usr/bin/env python import math, tempfile, cPickle, inkex def findend(d): end = [] subPathStart = [] for cmd,params in d: if cmd == 'M': subPathStart = params[-2:] if cmd == 'Z': end = subPathStart[:] else: end = params[-2:] return end class LoadKochify(inkex.Effect): def effect(self): for id, node in self.selected.iteritems(): if node.tagName == 'path': d = inkex.parsePath(node.attributes.getNamedItem('d').value) start = d[0][1][-2:] end = findend(d) while start == end and len(d): d = d[:-1] end = findend(d) if not end: break dx = end[0]-start[0] dy = end[1]-start[1] length = math.sqrt((dx**2) + (dy**2)) angle = math.atan2(dy,dx) path = {'start': start, 'end': end, 'length': length, 'angle': angle, 'path': d} f = open(tempfile.gettempdir() + '/kochify.bin', 'w') cPickle.dump(path, f) f.close() break e = LoadKochify() e.affect()