diff --git a/extensions/fablabchemnitz/vektorkollektor/vektorkollektor.inx b/extensions/fablabchemnitz/vektorkollektor/vektorkollektor.inx index b04effd4..37010872 100644 --- a/extensions/fablabchemnitz/vektorkollektor/vektorkollektor.inx +++ b/extensions/fablabchemnitz/vektorkollektor/vektorkollektor.inx @@ -4,8 +4,16 @@ fablabchemnitz.de.vektorkollektor + + + + + http://www.vektorkollektor.com/vektordaten/vektorkollektor.js - 0 + C:\Users\ + false + + 0 diff --git a/extensions/fablabchemnitz/vektorkollektor/vektorkollektor.py b/extensions/fablabchemnitz/vektorkollektor/vektorkollektor.py index fca87d53..13ff55dc 100644 --- a/extensions/fablabchemnitz/vektorkollektor/vektorkollektor.py +++ b/extensions/fablabchemnitz/vektorkollektor/vektorkollektor.py @@ -13,28 +13,40 @@ from lxml import etree import inkex from inkex import PathElement, Path import re +import os from ast import literal_eval class Vektorkollektor(inkex.EffectExtension): def add_arguments(self, pars): pars.add_argument("--tab") + pars.add_argument("--vk_inputfile") + pars.add_argument("--download_or_local", default='local') + pars.add_argument("--showinfo", type=inkex.Boolean, default=False) pars.add_argument("--vk_url", default="http://www.vektorkollektor.com/vektordaten/vektorkollektor.js") pars.add_argument("--vk_id", type=int, default=1) def effect(self): - # Download the recent vektorkollektor data file and parse it - handler = urllib.request.HTTPBasicAuthHandler() - opener = urllib.request.build_opener(handler) - + + if self.options.download_or_local == "local": + if not os.path.exists(self.options.vk_inputfile): + self.msg("The input file does not exist. Please select a proper file and try again.") + exit(1) + with open(self.options.vk_inputfile, 'r') as file: + vkData = file.read() + else: + # Download the recent vektorkollektor data file and parse it + handler = urllib.request.HTTPBasicAuthHandler() + opener = urllib.request.build_opener(handler) + vkData = opener.open(self.options.vk_url).read().decode("utf-8") + urllib.request.install_opener(opener) + try: xP = [] #x-coordinate yP = [] #y-coordinate cP = [] #draw fN = [] #original vektorkollektor .PLT file number - - vkData = opener.open(self.options.vk_url).read().decode("utf-8") - urllib.request.install_opener(opener) + for match in re.compile(r"""^var xP = .*;""", re.MULTILINE).finditer(vkData): xP = literal_eval(match.group(0).split("var xP = ")[1].split(";")[0]) for match in re.compile(r"""^var yP = .*;""", re.MULTILINE).finditer(vkData): @@ -44,6 +56,9 @@ class Vektorkollektor(inkex.EffectExtension): for match in re.compile(r"""^var fN = .*;""", re.MULTILINE).finditer(vkData): fN = literal_eval(match.group(0).split("var fN = ")[1].split(";")[0]) + if self.options.showinfo is True: + self.msg("Input file contains {} drawings.".format(fN[-2])) #last number is always 0, so we use the second last + vkGroup = self.document.getroot().add(inkex.Group(id="vektorkollektor-{}".format(self.options.vk_id))) for move in range(0, len(fN)): begin = None @@ -62,6 +77,10 @@ class Vektorkollektor(inkex.EffectExtension): newLine.path = Path("M {},{} L {},{}".format(begin[0], begin[1], end[0], end[1])) newLine.style = "fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round" vkGroup.append(newLine) + + if self.options.showinfo is True: + self.msg("The drawing with id {} contains {} drawable vectors.".format(self.options.vk_id, len(vkGroup))) + except Exception as e: inkex.errormsg(e)