diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cfe56aa --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# Byte-compiled / optimized +*.pyc +*.pyo +__pycache__/ + +# Virtual environments +venv/ +.venv/ +env/ + +# IDE +.idea/ +.vscode/ +*.swp +*~ + +# OS +.DS_Store +Thumbs.db diff --git a/Command.py b/Command.py index 8a055e9..698b451 100755 --- a/Command.py +++ b/Command.py @@ -1,82 +1,74 @@ # -*- coding: utf-8 -*- +import math + class Command: - inicoms= ("IN", "SP", "LT") # nicht benutzt - scalecoms=("PA", "PD", "PR", "PU", "CI" ) # Liste skalierbarer HPGL-Befehle - movecoms=("PA", "PD", "PU" ) # Liste verschiebbarer HPGL-Befehle - + inicoms = ("IN", "SP", "LT") # nicht benutzt + scalecoms = ("PA", "PD", "PR", "PU", "CI") # Liste skalierbarer HPGL-Befehle + movecoms = ("PA", "PD", "PU") # Liste verschiebbarer HPGL-Befehle + abscoms = ("PA", "PD", "PU") + relcoms = ("PR") + arccoms = ("CI", "AA") + def __init__(self, name, *args): - self.name = name # Befehlname - self.args = args # Argsliste + self.name = name + self.args = args @property - def scalable(self): - return True \ - if self.name in Command.scalecoms and self.args else \ - False - + def scalable(self): + return self.name in Command.scalecoms and self.args + @property - def movable(self): - return True \ - if self.name in Command.movecoms and self.args else \ - False + def movable(self): + return self.name in Command.movecoms and self.args @property def x(self): - #Baustelle da es Befehle gibt die mehrere Args haben - return self.args[0] \ - if self.movable else\ - None + return self.args[0] if self.args else None @property def y(self): - if len(self.args)<2 : - return None - return self.args[1] \ - if self.movable else\ - None + return self.args[-1] if self.args else None def __trunc__(self): - return Command(self.name,*[int(arg) for arg in self.args]) + return Command(self.name, *[int(arg) for arg in self.args]) def __len__(self): - return len(str(self)) # Byte-L�nge des Befehls - - def __str__(self): - return self.name + ",".join(str(int(arg)) for arg in self.args) + ";" + return len(str(self)) - def __mul__(self, factor): # multipliziert falls skalable mit factor + def __str__(self): + return self.name + ",".join(str(int(arg)) for arg in self.args) + ";" + + def __mul__(self, factor): if not self.scalable: return self if type(factor) == type(0) or type(factor) == type(0.0): -# Faktor kann skalar oder Tuple sein - factor = (factor, factor) - return Command(self.name,(self.args[0] * factor[0]),(self.args[1] * factor[1])) \ - if len(self.args)>1 else\ - Command(self.name,(self.args[0]*factor[0]) ) # wichtig f�r Befehle mit nur einem Argument + factor = (factor, factor) + return Command(self.name, (self.args[0] * factor[0]), (self.args[1] * factor[1])) \ + if len(self.args) > 1 else \ + Command(self.name, (self.args[0] * factor[0])) def __add__(self, addend): if not self.movable: return self - if type(addend) == type(0) or type(addend) == type(0.0): + if type(addend) == type(0) or type(addend) == type(0.0): addend = (addend, addend) - #print( "ADD ", self.name ) - return Command(self.name,(self.x + addend[0]),(self.y + addend[1])) + return Command(self.name, (self.x + addend[0]), (self.y + addend[1])) def __sub__(self, addend): if type(addend) == type(0) or type(addend) == type(0.0): addend = (addend, addend) return self + (-addend[0], -addend[1]) - def rotate(self, angl): # multiplikation mit Rot-Matrix + def rotate(self, angl): if not self.movable: return self - cosa=math.cos(angl*math.pi/180) - sina=math.sin(angl*math.pi/180) - return Command((self.name,self.x*cosa-self.y*sina),(self.y*cosa+self.x*sina)) - - def flip(self): # Spiegelung + cosa = math.cos(angl * math.pi / 180) + sina = math.sin(angl * math.pi / 180) + return Command(self.name, (self.x * cosa - self.y * sina), (self.y * cosa + self.x * sina)) + + def flip(self): if not self.movable: return self - return Command(self.name,self.y,-self.x) + return Command(self.name, self.x, -self.y) diff --git a/Fensterplott.zip b/Fensterplott.zip deleted file mode 100755 index 906e634..0000000 Binary files a/Fensterplott.zip and /dev/null differ diff --git a/Plotter.py b/Plotter.py index 6c063f3..51fb53c 100755 --- a/Plotter.py +++ b/Plotter.py @@ -1,89 +1,86 @@ from __future__ import division -import pyserial +import serial -class Plotter: - def __init__(self,boundaries=None): - self.__boundaries=boundaries - self.p0incenter = True +class Plotter: + + def __init__(self, boundaries=None): + self.boundaries = boundaries + self.p0incenter = False if not boundaries: - s=self.getoutput('OW;') + s = self.getoutput(b'OW;') print(s) if not s: - self.ser=None + self.ser = None else: - self.__boundaries = tuple(int(x) for x in "".join(s).split(",")) - - def getoutput(self,outstr): + self.boundaries = tuple(int(x) for x in "".join(s).split(",")) + + def getoutput(self, outstr): try: - self.ser = serial.Serial('/dev/ttyUSB0',timeout=15) + self.ser = serial.Serial('/dev/ttyUSB0', timeout=15) print('try to get Status') if not self.ser: print('Plotter not available') - return None + return None self.ser.write(outstr) print('device busy') s = [] while True: x = self.ser.read() - - if x == "\x0d" or not x: + if x == b"\x0d" or not x: break s.append(x) - return ''.join(s) + return b''.join(s).decode() except OSError: return None + @property def xmin(self): - return self.__boundaries[0] + return self.boundaries[0] @property def ymin(self): - return self.__boundaries[1] + return self.boundaries[1] @property def xmax(self): - return self.__boundaries[2] + return self.boundaries[2] @property def ymax(self): - return self.__boundaries[3] + return self.boundaries[3] @property def center(self): - return (self.xmin + self.xmax)/2, (self.ymin + self.ymax)/2 + return (self.xmin + self.xmax) / 2, (self.ymin + self.ymax) / 2 - def write(self,programm): - self.ser.write(str(programm)) + def write(self, programm): + self.ser.write(str(programm).encode()) @property def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin - + return self.xmax - self.xmin, self.ymax - self.ymin + def oob(self, prog): - return (prog.xmax > self.xmax or prog.xmin < self.xmin or prog.ymin < self.ymin or prog.ymax > self.ymax) + return (prog.xmax > self.xmax or prog.xmin < self.xmin or + prog.ymin < self.ymin or prog.ymax > self.ymax) - def full(self,prog): - arg = min(self.winsize[0]/prog.winsize[0],self.winsize[1]/prog.winsize[1]) - #print self.winsize[0]/prog.winsize[0],self.winsize[1]/prog.winsize[1]) - print('Scale Factor', arg) - return prog*arg + def full(self, prog): + """Scale program to fit plotter bounds.""" + arg = min(self.winsize[0] / prog.winsize[0], self.winsize[1] / prog.winsize[1]) + return prog * arg - def plot(self,prog): - if self.ready and (not self.oob(prog)) : + def plot(self, prog): + if self.ready and (not self.oob(prog)): self.write(prog) - if self.oob(prog): print('programm out of bound') if not self.ready: print('device not ready') - - - def centralize(self,prog): - return prog-prog.center \ - if self.p0incenter else \ - prog-(prog.xmin,prog.ymin) + + def centralize(self, prog): + return prog - prog.center if self.p0incenter else prog - (prog.xmin, prog.ymin) + @property def ready(self): - return bool(self.getoutput('OS;')) - + return bool(self.getoutput('OS;')) diff --git a/Program.py b/Program.py index b0725df..cd8770a 100755 --- a/Program.py +++ b/Program.py @@ -1,75 +1,130 @@ - import math from Command import * +import tkinter as tk + class Program: - def __init__(self, commands=None): - self.commands = commands or [] - self.active=True - self.visible=False - self.filename='' - + def __init__(self, commands=None): + self.commands = commands if commands is not None else [] + self.active = True + self.visible = False + self.filename = '' + if self.commands: + self.xmin, self.ymin, self.xmax, self.ymax = self.__simulate() + else: + self.xmin = self.ymin = self.xmax = self.ymax = 0 - def parsefile(self, filename): - with open(filename) as file: - self.parse( file.read()) + def __simulate(self): + (x, y) = (0, 0) + xy = [] + for command in self.commands: + if not command.args: + continue + elif command.name in command.abscoms: + x, y = command.x, command.y + xy.append((x, y)) + elif command.name in command.relcoms: + x, y = x + command.x, y + command.y + xy.append((x, y)) + elif command.name in command.arccoms: + xy += [(x + command.x, y + command.x), (x - command.x, y - command.x)] + if not xy: + return [0, 0, 0, 0] + return [m([v[i] for v in xy]) for m, i in ((min, 0), (min, 1), (max, 0), (max, 1))] - def parse(self, code): - for command in code.strip().split(";")[:-1]: - name, args = command[:2], command[2:] - args = [float(arg) for arg in args.split(",")] if args else [] - # Experimental - #if name=='CI': - #self.commands.append(Command('PR',args[0])) - #self.commands.append(Command('PR',args[0])) - #self.commands.append(Command('PR',args[0])) - - self.commands.append(Command(name, *args)) - + @staticmethod + def parsefile(filename): + with open(filename) as file: + return Program.parse(file.read()) - def __trunc__ (self): - return Program([int(command) for command in self.commands]) - - def __str__(self): - return "".join(str(command) for command in self.commands) + @staticmethod + def parse(code): + commands = [] + for command in code.strip().split(";")[:-1]: + name, args = command[:2], command[2:] + args = [float(arg) for arg in args.split(",")] if args else [] + if name in Command.movecoms and len(args) > 2: + for i in range(0, len(args), 2): + commands.append(Command(name, args[i], args[i + 1])) + else: + commands.append(Command(name, *args)) + return Program(commands) - def __mul__(self, arg): - return Program([command * arg for command in self.commands]) + def show(self, w=None): + p = self.flip() + p = p.rotate(270) + p = p.fitin((0, 0, 1024, 600), (0, 0)) + win = tk.Tk() + win.title('HPGLPLOTTER') + canvas = tk.Canvas(win, width=p.winsize[0], height=p.winsize[1]) + canvas.grid(row=0, column=0) + x = y = 0 + for command in p.commands: + if command.name == 'PU': + x, y = command.x, command.y + elif command.name == 'PD': + canvas.create_line(x, y, command.x, command.y) + x, y = command.x, command.y + elif command.name == 'CI': + r = command.args[0] + canvas.create_oval(x - r, y - r, x + r, y + r) + win.mainloop() - def __add__(self, arg): - if type(arg)== type(self): - return Program( self.commands + arg.commands ) - return Program([command + arg for command in self.commands]) + def __str__(self): + return "".join(str(command) for command in self.commands) - def __sub__(self, arg): - return Program([command - arg for command in self.commands]) + def __mul__(self, arg): + return Program([command * arg for command in self.commands]) - def __len__(self): - return len(str(self)) + def __add__(self, arg): + if type(arg) == type(self): + return Program(self.commands + arg.commands) + return Program([command + arg for command in self.commands]) - def rotate(self, angl): - return Program([command.rotate(angl) for command in self.commands]) + def __sub__(self, arg): + return Program([command - arg for command in self.commands]) - def flip(self): - return Program([command.flip() for command in self.commands if command]) + def __len__(self): + return len(str(self)) - @property - def xmax(self): - return max(command.x for command in self.commands if command.x and command.movable) - @property - def xmin(self): - return min(command.x for command in self.commands if command.x and command.movable) - @property - def ymax(self): - return max(command.y for command in self.commands if command.y and command.movable) - @property - def ymin(self): - return min(command.y for command in self.commands if command.y and command.movable) - @property - def center(self): - return ((self.xmin+self.xmax)/2),((self.ymin+self.ymax)/2) + def rotate(self, angl): + return Program([command.rotate(angl) for command in self.commands]) - @property - def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin + def flip(self): + return Program([command.flip() for command in self.commands if command]) + + def scaleto(self, ab): + a, b = ab + w, h = self.winsize + if w == 0 or h == 0: + return self + return self * min(a / w, b / h) + + def moveto(self, ab): + a, b = ab + return self - (self.xmin - a, self.ymin - b) + + def fitin(self, xys, fxy): + (x1, y1, x2, y2) = xys + (fx, fy) = fxy + p = self.scaleto((x2 - x1, y2 - y1)) + return p.moveto((x1 + fx * (x2 - x1 - p.winsize[0]), y1 + fy * (y2 - y1 - p.winsize[1]))) + + def multi(self, w, h): + dist = 40 + out = self + p = self.winsize + for i in range(w): + for j in range(h): + if w != 0 and h != 0: + out = out + (self + (i * p[0] + i * dist, j * p[1] + j * dist)) + return out + + @property + def center(self): + return ((self.xmin + self.xmax) / 2), ((self.ymin + self.ymax) / 2) + + @property + def winsize(self): + return self.xmax - self.xmin, self.ymax - self.ymin diff --git a/README.md b/README.md new file mode 100644 index 0000000..5215729 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# HPGL Plotter Manager + +Manage HPGL files and send them to a plotter. Single core library (refac version at root), generators, and unified output folder for all graphics. + +## Folder structure + +``` +mimaki/ +├── Command.py, Program.py, Plotter.py # Core HPGL library (parse, scale, send to plotter) +├── main.py # Main entry: load HPGL, scale, send to plotter +├── maintk.py, hpglView.py # Tk-based viewer / GUI +├── output/ # All HPGL and SVG files +│ ├── hpgl/ # HPGL plot files +│ └── svg/ # SVG and related assets +├── generators/ # Scripts that generate HPGL (or related graphics) +│ ├── hilbert.py, koche.py, koch.py, kochger.py +│ ├── mandelbrot.py, moebius.py, potter.py +│ ├── refac/ # hilbert, lorenz, K18650, Kleber +│ └── apollon/ # Apollonian gasket → SVG/HPGL +└── docs/ # HPGL / plotter documentation (PDFs) +``` + +## Usage + +- **Run main (load file and send to plotter):** + From project root: `python main.py` + Edit `main.py` to change the file (default: `output/hpgl/kreis.hpgl`). + +- **Load HPGL and show in window:** + `python show_hpgl.py` + +- **Run a generator:** + From project root, e.g. + `python generators/potter.py` + +- **Open/save files in GUI:** + `python maintk.py` — use File → Open and point to files under `output/hpgl/` or `output/svg/`. + +## Paths + +- All HPGL and SVG live under **`output/hpgl/`** and **`output/svg/`**. +- Run scripts from the project root so paths like `output/hpgl/...` resolve correctly. diff --git a/TUlogo.png b/TUlogo.png deleted file mode 100755 index 708f050..0000000 Binary files a/TUlogo.png and /dev/null differ diff --git a/apollon-master/.gitignore b/apollon-master/.gitignore deleted file mode 100755 index 2358b09..0000000 --- a/apollon-master/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*~ -*pyc -__pycache__/ -html/ \ No newline at end of file diff --git a/apollon.html b/apollon.html deleted file mode 100755 index 0ffda06..0000000 --- a/apollon.html +++ /dev/null @@ -1,1338 +0,0 @@ - - - - - - - - - - - - - apollon/apollon.py at master · lsandig/apollon · GitHub - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Skip to content - - - - - - - - - - - - -
- -
-
- - -
-
-
- -
- -
- - - -

- - /apollon - - - - - -

- -
-
-
- -
-
-
- - - -
- -
-

HTTPS clone URL

-
- - - - -
-
- - -
-

Subversion checkout URL

-
- - - - -
-
- - - -
You can clone with -
or
. - - - -
- - - - Download ZIP - -
-
-
- - - - - - - -
- -
- - Branch: - master - - - -
- -
- - - - -
- - -
- - -
- - - - -
- -
-
-
- -
- Raw - Blame - History -
- - - - -
- -
- executable file - - 196 lines (164 sloc) - - 6.25 KB -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#!/usr/bin/python3
-
# Generate Apollonian Gaskets -- the math part.
-
# Copyright (c) 2014 Ludger Sandig
# This file is part of apollon.
-
# Apollon 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 3 of the License, or
# (at your option) any later version.
-
# Apollon 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 Apollon. If not, see <http://www.gnu.org/licenses/>.
-
from cmath import *
import random
-
class Circle(object):
"""
A circle represented by center point as complex number and radius.
"""
def __init__ ( self, mx, my, r ):
"""
@param mx: x center coordinate
@type mx: int or float
@param my: y center coordinate
@type my: int or float
@param r: radius
@type r: int or float
"""
self.r = r
self.m = (mx +my*1j)
-
def __repr__ ( self ):
"""
Pretty printing
"""
return "Circle( self, %s, %s, %s )" % (self.m.real, self.m.imag, self.r)
-
def __str__ ( self ):
"""
Pretty printing
"""
return "Circle x:%.3f y:%.3f r:%.3f [cur:%.3f]" % (self.m.real, self.m.imag, self.r.real, self.curvature().real)
-
def curvature (self):
"""
Get circle's curvature.
@rtype: float
@return: Curvature of the circle.
"""
return 1/self.r
-
def outerTangentCircle( circle1, circle2, circle3 ):
"""
Takes three externally tangent circles and calculates the fourth one enclosing them.
@param circle1: first circle
@param circle2: second circle
@param circle3: third circle
@type circle1: L{Circle}
@type circle2: L{Circle}
@type circle3: L{Circle}
@return: The enclosing circle
@rtype: L{Circle}
"""
cur1 = circle1.curvature()
cur2 = circle2.curvature()
cur3 = circle3.curvature()
m1 = circle1.m
m2 = circle2.m
m3 = circle3.m
cur4 = -2 * sqrt( cur1*cur2 + cur2*cur3 + cur1 * cur3 ) + cur1 + cur2 + cur3
m4 = ( -2 * sqrt( cur1*m1*cur2*m2 + cur2*m2*cur3*m3 + cur1*m1*cur3*m3 ) + cur1*m1 + cur2*m2 + cur3*m3 ) / cur4
circle4 = Circle( m4.real, m4.imag, 1/cur4 )
return circle4
-
def tangentCirclesFromRadii( r2, r3, r4 ):
"""
Takes three radii and calculates the corresponding externally
tangent circles as well as a fourth one enclosing them. The enclosing
circle is the first one.
@param r2, r3, r4: Radii of the circles to calculate
@type r2: int or float
@type r3: int or float
@type r4: int or float
@return: The four circles, where the first one is the enclosing one.
@rtype: (L{Circle}, L{Circle}, L{Circle}, L{Circle})
"""
circle2 = Circle( 0, 0, r2 )
circle3 = Circle( r2 + r3, 0, r3 )
m4x = (r2*r2 + r2*r4 + r2*r3 - r3*r4) / (r2 + r3)
m4y = sqrt( (r2 + r4) * (r2 + r4) - m4x*m4x )
circle4 = Circle( m4x, m4y, r4 )
circle1 = outerTangentCircle( circle2, circle3, circle4 )
return ( circle1, circle2, circle3, circle4 )
-
def secondSolution( fixed, c1, c2, c3 ):
"""
If given four tangent circles, calculate the other one that is tangent
to the last three.
@param fixed: The fixed circle touches the other three, but not
the one to be calculated.
@param c1, c2, c3: Three circles to which the other tangent circle
is to be calculated.
@type fixed: L{Circle}
@type c1: L{Circle}
@type c2: L{Circle}
@type c3: L{Circle}
@return: The circle.
@rtype: L{Circle}
"""
curf = fixed.curvature()
cur1 = c1.curvature()
cur2 = c2.curvature()
cur3 = c3.curvature()
-
curn = 2 * (cur1 + cur2 + cur3) - curf
mn = (2 * (cur1*c1.m + cur2*c2.m + cur3*c3.m) - curf*fixed.m ) / curn
return Circle( mn.real, mn.imag, 1/curn )
-
class ApollonianGasket(object):
"""
Container for an Apollonian Gasket.
"""
def __init__(self, c1, c2, c3):
"""
Creates a basic apollonian Gasket with four circles.
@param c1, c2, c3: The curvatures of the three inner circles of the
starting set (i.e. depth 0 of the recursion). The fourth,
enclosing circle will be calculated from them.
@type c1: int or float
@type c2: int or float
@type c3: int or float
"""
self.start = tangentCirclesFromRadii( 1/c1, 1/c2, 1/c3 )
self.genCircles = list(self.start)
-
def recurse(self, circles, depth, maxDepth):
"""Recursively calculate the smaller circles of the AG up to the
given depth. Note that for depth n we get 2*3^{n+1} circles.
@param maxDepth: Maximal depth of the recursion.
@type maxDepth: int
@param circles: 4-Tuple of circles for which the second
solutions are calculated
@type circles: (L{Circle}, L{Circle}, L{Circle}, L{Circle})
@param depth: Current depth
@type depth: int
"""
if( depth == maxDepth ):
return
(c1, c2, c3, c4) = circles
if( depth == 0 ):
# First recursive step, this is the only time we need to
# calculate 4 new circles.
del self.genCircles[4:]
cspecial = secondSolution( c1, c2, c3, c4 )
self.genCircles.append( cspecial )
self.recurse( (cspecial, c2, c3, c4), 1, maxDepth )
-
cn2 = secondSolution( c2, c1, c3, c4 )
self.genCircles.append( cn2 )
cn3 = secondSolution( c3, c1, c2, c4 )
self.genCircles.append( cn3 )
cn4 = secondSolution( c4, c1, c2, c3 )
self.genCircles.append( cn4 )
-
self.recurse( (cn2, c1, c3, c4), depth+1, maxDepth )
self.recurse( (cn3, c1, c2, c4), depth+1, maxDepth )
self.recurse( (cn4, c1, c2, c3), depth+1, maxDepth )
-
def generate(self, depth):
"""
Wrapper for the recurse function. Generate the AG,
@param depth: Recursion depth of the Gasket
@type depth: int
"""
self.recurse(self.start, 0, depth)
-
- -
- -
- -Jump to Line - - -
-
- -
-
- - -
- -
- -
- - - - - - - -
- - - Something went wrong with that request. Please try again. -
- - - - - - - - - - diff --git a/docs/refac-vs-root-diff.md b/docs/refac-vs-root-diff.md new file mode 100644 index 0000000..67ae407 --- /dev/null +++ b/docs/refac-vs-root-diff.md @@ -0,0 +1,63 @@ +# refac vs root (historical) + +**The refac version is now the main version** (root Command.py, Program.py, Plotter.py). This doc is kept for reference. + +Original comparison of the core modules: **Command.py**, **Program.py**, **Plotter.py**. + +--- + +## Command.py + +| Aspect | Root | refac | +|--------|------|--------| +| **import math** | ❌ Missing (bug: `rotate()` uses `math.cos`/`math.sin`) | ✅ Present | +| **Class attributes** | `inicoms`, `scalecoms`, `movecoms` only | Same + **`abscoms`**, **`relcoms`**, **`arccoms`** (for PA/PD/PU, PR, CI/AA) | +| **scalable / movable** | `return True if ... else False` | `return self.name in ... and self.args` (shorter, same meaning) | +| **x** | `self.args[0] if self.movable else None` | `self.args[0] if self.args else None` | +| **y** | `self.args[1] if self.movable else None` (and `len(self.args)<2` check with wrong indent) | `self.args[-1] if self.args else None` (works for single-arg commands like CI) | +| **rotate()** | `Command((self.name, ...), (...))` → **bug**: first arg is a tuple, not name | ✅ `Command(self.name, ...)` | +| **flip()** | `Command(self.name, self.y, -self.x)` → **wrong**: swaps x/y | ✅ `Command(self.name, self.x, -self.y)` (mirror in y) | + +**Summary:** refac fixes missing `math`, corrects `rotate()` and `flip()`, and adds command-type sets used by Program parsing/simulation. + +--- + +## Program.py + +| Aspect | Root | refac | +|--------|------|--------| +| **__init__** | `commands or []`; no bounds | `commands` (can be None); if commands given, **computes bounds once** via `__simulate()` | +| **Bounds (xmin, xmax, …)** | **@property** – computed from commands each time | Set once in **__init__** from `__simulate()` (no property; no update if commands change) | +| **parsefile / parse** | **Instance methods**: `p.parsefile(f)` mutates `self.commands` | **@staticmethod**: `Program.parsefile(f)` / `Program.parse(code)` **return new Program** | +| **Parsing** | One Command per semicolon; all args in one list | **Multi-point PA/PD/PU**: if `len(args)>2`, splits into (x,y) pairs and creates one Command per point | +| **show()** | ❌ Not in Program (show in main.py) | ✅ **Program.show()**: flip, rotate 270°, fitin to 1024×600, Tk canvas | +| **fitin(), scaleto(), moveto()** | ❌ Not in root | ✅ Present (scale/move to rectangle with alignment fx, fy) | +| **multi(w, h)** | ❌ Not in root | ✅ Tile program in w×h grid with spacing | +| **Program.parse() return** | N/A (mutates self) | Returns **Program(commands)** | + +**Summary:** refac adds static parsing (return new Program), multi-point parsing, simulation for bounds, and helpers: show(), fitin(), scaleto(), moveto(), multi(). + +--- + +## Plotter.py + +| Aspect | Root | refac | +|--------|------|--------| +| **Import** | `import pyserial` (wrong name; should be `serial`) | `import serial` | +| **Boundaries storage** | `self.__boundaries` (private) | `self.boundaries` (public) | +| **p0incenter** | `True` | `False` | +| **getoutput()** | `self.ser.read()` → str; returns `''.join(s)` | **Bytes**: `outstr` used as-is; `x == b"\x0d"`; returns `b''.join(s).decode()` | +| **write()** | `self.ser.write(str(programm))` (str) | `self.ser.write(str(programm).encode())` (bytes) | +| **full(prog)** | ✅ Scale prog to fit plotter bounds | ❌ **Removed** (scaling done elsewhere, e.g. Program.fitin) | +| **centralize()** | Same logic | Same logic (behavior differs only if p0incenter differs) | + +**Summary:** refac uses proper `serial` and bytes for Python 3; drops `full()`; different default for `p0incenter`. + +--- + +## Overall + +- **refac** = cleaned-up, Python‑3‑friendly version: correct Command (math, rotate, flip), static Program parsing, multi-point parsing, bounds simulation, fitin/show/multi, and serial over bytes. +- **Root** = older version: Command has bugs (no math, wrong rotate/flip), instance-method parsing only, no fitin/show/multi, and broken `pyserial` import. + +Recommendation: use **refac** as the main implementation and, if needed, replace root with it (or make root a thin wrapper around refac). diff --git a/apollon-master/LICENSE b/generators/apollon/LICENSE similarity index 100% rename from apollon-master/LICENSE rename to generators/apollon/LICENSE diff --git a/apollon-master/README.rst b/generators/apollon/README.rst similarity index 100% rename from apollon-master/README.rst rename to generators/apollon/README.rst diff --git a/apollon-master/ag.py b/generators/apollon/ag.py similarity index 100% rename from apollon-master/ag.py rename to generators/apollon/ag.py diff --git a/apollon-master/apollon.py b/generators/apollon/apollon.py similarity index 100% rename from apollon-master/apollon.py rename to generators/apollon/apollon.py diff --git a/apollon-master/colorbrewer.json b/generators/apollon/colorbrewer.json similarity index 100% rename from apollon-master/colorbrewer.json rename to generators/apollon/colorbrewer.json diff --git a/apollon-master/coloring.py b/generators/apollon/coloring.py similarity index 100% rename from apollon-master/coloring.py rename to generators/apollon/coloring.py diff --git a/apollon-master/index.cgi b/generators/apollon/index.cgi similarity index 100% rename from apollon-master/index.cgi rename to generators/apollon/index.cgi diff --git a/hilbert.py b/generators/hilbert.py similarity index 80% rename from hilbert.py rename to generators/hilbert.py index 50409ae..66427be 100644 --- a/hilbert.py +++ b/generators/hilbert.py @@ -1,6 +1,9 @@ -import math +import math +import sys +import os +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from hilbertcurve.hilbertcurve import HilbertCurve -penthickness=28 +penthickness = 28 import Program import Command diff --git a/koch.py b/generators/koch.py similarity index 100% rename from koch.py rename to generators/koch.py diff --git a/koche.py b/generators/koche.py similarity index 85% rename from koche.py rename to generators/koche.py index 515a773..da23d42 100755 --- a/koche.py +++ b/generators/koche.py @@ -1,6 +1,11 @@ -import math +import math +import sys +import os +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +import Program +import Command -C = math.sqrt( 3 ) +C = math.sqrt(3) def koch( x, y, smin=1, nmax=None ): r=min(x,y) diff --git a/kochger.py b/generators/kochger.py similarity index 100% rename from kochger.py rename to generators/kochger.py diff --git a/mandelbrot.py b/generators/mandelbrot.py similarity index 100% rename from mandelbrot.py rename to generators/mandelbrot.py diff --git a/moebius.py b/generators/moebius.py similarity index 100% rename from moebius.py rename to generators/moebius.py diff --git a/potter.py b/generators/potter.py similarity index 80% rename from potter.py rename to generators/potter.py index fa0fe3a..e4b4529 100755 --- a/potter.py +++ b/generators/potter.py @@ -1,3 +1,6 @@ +import sys +import os +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from Plotter import * from Command import * from Program import * @@ -25,9 +28,8 @@ def show(p): canvas.create_oval(x-r,y-r,x+r,y+r) win.mainloop() -plt=Plotter() -p=Program() -p.parsefile('hpgl/Lars.plt') +plt = Plotter() +p = Program.parsefile('output/hpgl/Lars.plt') p=p.flip() p=plt.full(p) p=plt.centralize(p) diff --git a/refac/K18650.py b/generators/refac/K18650.py similarity index 86% rename from refac/K18650.py rename to generators/refac/K18650.py index 1f981d2..adaa62e 100755 --- a/refac/K18650.py +++ b/generators/refac/K18650.py @@ -1,3 +1,6 @@ +import sys +import os +sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), '..')) from Command import * from Program import * import math diff --git a/refac/Kleber.py b/generators/refac/Kleber.py similarity index 68% rename from refac/Kleber.py rename to generators/refac/Kleber.py index e85778a..9b5c6ea 100755 --- a/refac/Kleber.py +++ b/generators/refac/Kleber.py @@ -1,3 +1,6 @@ +import sys +import os +sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), '..')) from Command import * from Program import * diff --git a/refac/hilbert.py b/generators/refac/hilbert.py similarity index 83% rename from refac/hilbert.py rename to generators/refac/hilbert.py index 213babf..47e7cc4 100755 --- a/refac/hilbert.py +++ b/generators/refac/hilbert.py @@ -1,4 +1,7 @@ import math +import sys +import os +sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), '..')) from Program import Program from Command import Command diff --git a/refac/lorenz.py b/generators/refac/lorenz.py similarity index 90% rename from refac/lorenz.py rename to generators/refac/lorenz.py index e2f70e7..6c1cc1a 100644 --- a/refac/lorenz.py +++ b/generators/refac/lorenz.py @@ -1,4 +1,7 @@ import numpy as np +import sys +import os +sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), '..')) from scipy.integrate import odeint import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D diff --git a/hpgl/ag.hpgl b/hpgl/ag.hpgl deleted file mode 100755 index dfc8f04..0000000 --- a/hpgl/ag.hpgl +++ /dev/null @@ -1 +0,0 @@ -IN;SP1;PU0.1,0.057735026919;CI0.216470053838;PU0.0,0.0;CI0.099;PU0.2,0.0;CI0.099;PU0.1,0.173205080757;CI0.099;PU0.1,0.057735026919;CI0.0144700538379;PU0.118834516088,0.0686091398527;CI0.00527817202947;PU0.0811654839116,0.0686091398527;CI0.00527817202947;PU0.1,0.0359868010516;CI0.00527817202947;PU0.127218008394,0.073449351392;CI0.00240225104924;PU0.110920700283,0.0716061792646;CI0.00118414005657;PU0.117473120453,0.0602570546182;CI0.00118414005657;PU0.132012698227,0.0762175668575;CI0.00113417988177;PU0.072781991606,0.073449351392;CI0.00240225104924;PU0.0890792997172,0.0716061792646;CI0.00118414005657;PU0.0825268795475,0.0602570546182;CI0.00118414005657;PU0.0679873017735,0.0762175668575;CI0.00113417988177;PU0.1,0.0263063779729;CI0.00240225104924;PU0.10655242017,0.0413418468741;CI0.00118414005657;PU0.0934475798303,0.0413418468741;CI0.00118414005657;PU0.1,0.0207699470418;CI0.00113417988177;PU0.244801847548,0.14133641258;CI0.047267282516;PU-0.044801847548,0.14133641258;CI0.047267282516;PU0.1,-0.109467744403;CI0.047267282516;PU0.192940094373,0.111394015424;CI0.0106175117966;PU0.218612978474,0.208393744031;CI0.0227225956947;PU0.289780765558,0.0851275209394;CI0.0227225956947;PU0.17835519475,0.1029734197;CI0.00422367965001;PU0.193921978486,0.127454014927;CI0.003472475166;PU0.207339403984,0.104214352258;CI0.003472475166;PU0.171259982348,0.0988769969098;CI0.00196916593115;PU0.19466589382,0.134252557911;CI0.00136664734549;PU0.213599072584,0.101459330343;CI0.00136664734549;PU0.194202754186,0.236438407807;CI0.0124575363123;PU0.206393761187,0.180587960242;CI0.00564961007418;PU0.250288776208,0.198735083194;CI0.00839304851301;PU0.176805127242,0.249890024101;CI0.00753390302685;PU0.193180566749,0.219128502807;CI0.00288252361456;PU0.21233778446,0.236095214689;CI0.00368074101916;PU0.164414307029,0.257206611708;CI0.00485584609357;PU0.17850526323,0.239035166353;CI0.00145328947594;PU0.187986312099,0.251405913138;CI0.0017495722531;PU0.155300953359,0.261583156581;CI0.00325391948919;PU0.148371010211,0.26439494359;CI0.00222473401407;PU0.142945903331,0.266303293117;CI0.0015262296077;PU0.219158672429,0.234447070057;CI0.00133644455743;PU0.203108390604,0.171382554054;CI0.00212449668497;PU0.201467544889,0.188418651251;CI0.00160173192024;PU0.215242430317,0.182488617229;CI0.00140088396493;PU0.262622925613,0.191457703413;CI0.00392796744281;PU0.245941029305,0.21112978516;CI0.00274207767448;PU0.239816069982,0.192273102987;CI0.00191283479128;PU0.268909222679,0.186600457338;CI0.00201623611927;PU0.301863044684,0.0499653147064;CI0.0124575363123;PU0.25959064178,0.0884482602496;CI0.00564961007418;PU0.297254018773,0.117388896881;CI0.00839304851301;PU0.304813672644,0.0281727196602;CI0.00753390302685;PU0.286361133499,0.057735026919;CI0.00288252361456;PU0.310633345862,0.0658423081812;CI0.00368074101916;PU0.304954613275,0.013783660779;CI0.00485584609357;PU0.296263158075,0.0350725094897;CI0.00145328947594;PU0.311717063489,0.0370979652727;CI0.0017495722531;PU0.304188135481,0.00370299255068;CI0.00325391948919;PU0.303158242886,-0.00370440776689;CI0.00222473401407;PU0.302098368616,-0.009356862907;CI0.0015262296077;PU0.312616454726,0.0725734427549;CI0.00133644455743;PU0.249975840879,0.0902057489577;CI0.00212449668497;PU0.263909110975,0.0802666862866;CI0.00160173192024;PU0.26566099358,0.095161104012;CI0.00140088396493;PU0.297118697712,0.13170927349;CI0.00392796744281;PU0.305814272096,0.107426286631;CI0.00274207767448;PU0.286421426642,0.111550257346;CI0.00191283479128;PU0.296055347752,0.139581989483;CI0.00201623611927;PU0.00705990562715,0.111394015424;CI0.0106175117966;PU-0.0186129784736,0.208393744031;CI0.0227225956947;PU-0.0897807655578,0.0851275209394;CI0.0227225956947;PU0.0216448052499,0.1029734197;CI0.00422367965001;PU0.00607802151396,0.127454014927;CI0.003472475166;PU-0.00733940398404,0.104214352258;CI0.003472475166;PU0.0287400176525,0.0988769969098;CI0.00196916593115;PU0.00533410618031,0.134252557911;CI0.00136664734549;PU-0.0135990725836,0.101459330343;CI0.00136664734549;PU0.00579724581403,0.236438407807;CI0.0124575363123;PU-0.00639376118687,0.180587960242;CI0.00564961007418;PU-0.0502887762082,0.198735083194;CI0.00839304851301;PU0.0231948727584,0.249890024101;CI0.00753390302685;PU0.0068194332506,0.219128502807;CI0.00288252361456;PU-0.0123377844599,0.236095214689;CI0.00368074101916;PU0.0355856929707,0.257206611708;CI0.00485584609357;PU0.0214947367701,0.239035166353;CI0.00145328947594;PU0.0120136879008,0.251405913138;CI0.0017495722531;PU0.0446990466405,0.261583156581;CI0.00325391948919;PU0.051628989789,0.26439494359;CI0.00222473401407;PU0.057054096669,0.266303293117;CI0.0015262296077;PU-0.0191586724291,0.234447070057;CI0.00133644455743;PU-0.003108390604,0.171382554054;CI0.00212449668497;PU-0.00146754488923,0.188418651251;CI0.00160173192024;PU-0.0152424303166,0.182488617229;CI0.00140088396493;PU-0.0626229256127,0.191457703413;CI0.00392796744281;PU-0.0459410293046,0.21112978516;CI0.00274207767448;PU-0.0398160699816,0.192273102987;CI0.00191283479128;PU-0.068909222679,0.186600457338;CI0.00201623611927;PU-0.101863044684,0.0499653147064;CI0.0124575363123;PU-0.0595906417803,0.0884482602496;CI0.00564961007418;PU-0.0972540187732,0.117388896881;CI0.00839304851301;PU-0.104813672644,0.0281727196602;CI0.00753390302685;PU-0.0863611334988,0.057735026919;CI0.00288252361456;PU-0.110633345862,0.0658423081812;CI0.00368074101916;PU-0.104954613275,0.013783660779;CI0.00485584609357;PU-0.0962631580748,0.0350725094897;CI0.00145328947594;PU-0.111717063489,0.0370979652727;CI0.0017495722531;PU-0.104188135481,0.00370299255068;CI0.00325391948919;PU-0.103158242886,-0.00370440776689;CI0.00222473401407;PU-0.102098368616,-0.009356862907;CI0.0015262296077;PU-0.112616454726,0.0725734427549;CI0.00133644455743;PU-0.0499758408785,0.0902057489577;CI0.00212449668497;PU-0.0639091109749,0.0802666862866;CI0.00160173192024;PU-0.0656609935802,0.095161104012;CI0.00140088396493;PU-0.0971186977124,0.13170927349;CI0.00392796744281;PU-0.105814272096,0.107426286631;CI0.00274207767448;PU-0.0864214266422,0.111550257346;CI0.00191283479128;PU-0.0960553477524,0.139581989483;CI0.00201623611927;PU0.1,-0.0495829500904;CI0.0106175117966;PU0.171167787084,-0.120316184214;CI0.0227225956947;PU0.0288322129158,-0.120316184214;CI0.0227225956947;PU0.1,-0.0327417586438;CI0.00422367965001;PU0.113417425498,-0.0584632864276;CI0.003472475166;PU0.086582574502,-0.0584632864276;CI0.003472475166;PU0.1,-0.0245489130626;CI0.00196916593115;PU0.118933178764,-0.0625068074968;CI0.00136664734549;PU0.0810668212361,-0.0625068074968;CI0.00136664734549;PU0.207660290498,-0.113198641757;CI0.0124575363123;PU0.153196880593,-0.0958311397344;CI0.00564961007418;PU0.146965242565,-0.142918899318;CI0.00839304851301;PU0.228008545403,-0.104857663004;CI0.00753390302685;PU0.193180566749,-0.103658448969;CI0.00288252361456;PU0.198295561402,-0.128732442113;CI0.00368074101916;PU0.240540306246,-0.0977851917301;CI0.00485584609357;PU0.217757894845,-0.100902595086;CI0.00145328947594;PU0.22373075139,-0.115298797654;CI0.0017495722531;PU0.248887182122,-0.0920810683749;CI0.00325391948919;PU0.254787232675,-0.0874854550658;CI0.00222473401407;PU0.259152465285,-0.0837413494532;CI0.0015262296077;PU0.193457782297,-0.133815432055;CI0.00133644455743;PU0.146867450275,-0.0883832222551;CI0.00212449668497;PU0.162441566086,-0.0954802567808;CI0.00160173192024;PU0.150418563264,-0.104444640484;CI0.00140088396493;PU0.1344957721,-0.149961896146;CI0.00392796744281;PU0.159873242792,-0.145350991034;CI0.00274207767448;PU0.146605356661,-0.130618279577;CI0.00191283479128;PU0.127146125073,-0.152977366064;CI0.00201623611927;PU-0.00766029049825,-0.113198641757;CI0.0124575363123;PU0.0468031194066,-0.0958311397344;CI0.00564961007418;PU0.0530347574349,-0.142918899318;CI0.00839304851301;PU-0.0280085454027,-0.104857663004;CI0.00753390302685;PU0.0068194332506,-0.103658448969;CI0.00288252361456;PU0.0017044385976,-0.128732442113;CI0.00368074101916;PU-0.0405403062457,-0.0977851917301;CI0.00485584609357;PU-0.0177578948449,-0.100902595086;CI0.00145328947594;PU-0.0237307513895,-0.115298797654;CI0.0017495722531;PU-0.0488871821216,-0.0920810683749;CI0.00325391948919;PU-0.0547872326752,-0.0874854550658;CI0.00222473401407;PU-0.0591524652853,-0.0837413494532;CI0.0015262296077;PU0.0065422177027,-0.133815432055;CI0.00133644455743;PU0.0531325497255,-0.0883832222551;CI0.00212449668497;PU0.0375584339143,-0.0954802567808;CI0.00160173192024;PU0.0495814367365,-0.104444640484;CI0.00140088396493;PU0.0655042279003,-0.149961896146;CI0.00392796744281;PU0.0401267572084,-0.145350991034;CI0.00274207767448;PU0.0533946433395,-0.130618279577;CI0.00191283479128;PU0.0728538749266,-0.152977366064;CI0.00201623611927; \ No newline at end of file diff --git a/hpgl/neos.hpgl b/hpgl/neos.hpgl deleted file mode 100755 index d79eafe..0000000 --- a/hpgl/neos.hpgl +++ /dev/null @@ -1 +0,0 @@ -IN;SP1;PU0,0;PD0,90;PU1221,724;PD1216,722,1212,718,1211,713,1178,711,1178,710,1144,705,1145,705,1112,697,1112,696,1080,685,1081,684,1045,669,1046,668,1012,650,1012,649,980,628,981,627,951,604,951,603,922,575,896,544,872,511,873,511,851,477,852,476,841,455,830,429,831,429,811,376,811,375,791,313,796,313,801,315,804,320,804,323,1454,323,1453,328,1449,331,1447,332,1461,386,1460,386,1470,433,1473,456,1472,456,1473,476,1472,476,1471,512,1470,512,1465,549,1464,548,1455,583,1453,583,1447,599,1446,599,1438,615,1436,614,1417,640,1416,639,1392,662,1391,661,1364,680,1363,679,1334,695,1334,694,1305,705,1304,704,1274,711,1274,710,1242,714,1242,713,1211,714,1211,713,1178,711,1178,710,1171,710;PU1179,574;PD1181,569,1185,566,1191,566,1195,568,1198,573,1199,575,1219,574,1219,572,1228,570,1228,568,1237,564,1235,561,1248,551,1245,549,1254,535,1252,534,1260,511,1258,510,1261,485,1259,485,1257,467,1256,467,1251,447,1244,424,1240,427,1237,432,1237,434,1045,434,1046,439,1050,443,1055,444,1057,443,1064,464,1078,498,1079,497,1094,519,1095,518,1112,538,1113,537,1131,556,1132,555,1154,570,1155,568,1176,576,1176,574,1198,577,1199,575,1219,574,1219,572,1228,570,1228,568,1236,564;PU1333,121;PD1329,117,1324,115,1319,116,1316,119,1273,85,1273,86,1227,57,1226,58,1178,34,1178,35,1153,25,1152,26,1127,18,1126,19,1100,13,1100,14,1074,10,1074,11,1020,9,1020,10,972,14,972,15,949,18,949,19,926,26,903,34,904,35,882,45,882,46,861,58,862,59,844,74,845,75,825,97,826,98,810,122,811,123,798,149,799,149,789,176,790,177,786,194,787,194,785,215,786,215,784,258,785,258,787,307,792,305,796,301,797,297,1026,297,1024,292,1020,288,1015,287,1014,287,1010,266,1011,266,1008,247,1010,247,1010,230,1012,231,1017,206,1019,207,1029,184,1031,185,1046,167,1047,168,1056,161,1057,162,1066,156,1067,157,1078,153,1078,154,1089,152,1089,153,1112,152,1112,154,1136,158,1135,159,1158,167,1158,168,1181,178,1181,179,1202,193,1201,194,1223,213,1222,214,1241,236,1240,236,1256,260,1265,275,1268,271,1269,265,1268,262,1399,197,1395,193,1390,191,1385,193,1383,193,1360,164,1359,164,1338,139,1338,140,1317,118,1316,119,1285,94;PU764,537;PD762,542,763,548,766,552,771,554,773,554,778,600,777,600,776,622,774,622,770,644,768,644,761,659,759,659,750,673,748,672,737,685,736,684,722,695,721,693,701,704,701,702,679,710,679,709,657,713,656,712,634,715,634,714,609,714,609,713,584,710,585,709,560,704,560,703,537,696,537,695,495,677,495,676,450,651,451,651,401,620,399,625,401,631,404,634,410,635,412,635,431,701,425,701,421,698,418,694,418,692,189,692,191,686,194,683,196,682,91,313,97,313,101,316,104,320,104,323,333,323,331,328,328,331,325,332,341,389,357,437,374,480,375,480,389,505,390,505,407,528,409,526,429,544,430,542,454,554,455,552,474,557,474,555,493,555,493,554,511,553,511,551,519,549,518,547,526,543,524,540,533,529,530,527,536,514,533,513,534,500,532,500,531,488,530,488,526,462,525,462,515,418,514,418,500,369,482,313,487,313,492,315,495,320,495,323,724,323,722,328,718,331,717,332,742,414,761,487,769,522,768,522,774,554,773,554,777,593;PU317,307;PD311,306,307,303,306,298,307,292,310,288,313,287,236,18,231,21,229,26,229,28,0,28,1,33,5,37,10,38,13,37,89,307,94,304,96,299,97,297,326,297,324,292,320,288,315,287,313,287,302,249;PU398,18;PD403,18,408,21,411,25,410,31,407,35,404,37,480,307,485,304,487,299,488,297,716,297,715,292,711,288,706,287,704,287,627,18,622,21,620,26,620,28,391,28,392,33,396,37,401,38,404,37,415,76;PU1590,513;PD1593,511,1614,543,1615,543,1639,573,1640,573,1666,601,1667,600,1696,626,1696,625,1725,647,1725,646,1756,666,1756,665,1789,682,1789,681,1822,695,1823,694,1858,704,1894,711,1894,710,1931,714,1931,713,1967,714,1967,713,2002,711,2037,706,2037,705,2070,697,2070,695,2102,683,2101,681,2126,667,2125,666,2148,649,2147,648,2167,628,2166,626,2182,604,2181,603,2194,573,2193,572,2202,540,2200,540,2205,507,2204,506,2205,473,2204,473,2203,451,2202,451,2198,425,2186,373,2169,313,2164,316,2162,320,2162,323,1933,323,1934,328,1938,331,1943,333,1945,332,1960,384,1959,385,1970,431,1969,431,1976,473,1974,473,1975,500,1974,500,1973,513,1971,513,1968,526,1966,525,1958,543,1956,542,1950,549,1949,548,1941,554,1940,552,1931,556,1930,554,1921,556,1920,555,1900,555,1900,554,1875,551,1875,548,1851,540,1852,538,1840,531,1841,530,1830,521,1831,520,1813,500,1814,499,1804,485,1805,484,1797,469,1798,469,1784,437,1756,360,1740,313,1736,316,1734,321,1734,323,1505,323,1506,328,1510,331,1515,333,1518,332,1541,401,1542,401,1565,461,1566,461,1579,488,1592,512,1593,511,1614,543,1615,543,1616,544;PU2102,187;PD2097,189,2092,188,2087,185,2086,180,2087,175,2089,171,2068,146,2068,147,2046,123,2045,123,2021,101,2021,102,1995,82,1995,83,1966,64,1965,65,1935,49,1935,50,1903,36,1903,37,1871,25,1871,26,1840,18,1840,19,1808,13,1776,10,1776,11,1745,9,1745,10,1714,11,1714,12,1684,15,1684,16,1654,22,1654,23,1625,32,1626,33,1604,42,1605,43,1584,54,1585,55,1566,69,1567,70,1550,86,1551,87,1534,109,1536,110,1522,134,1523,135,1512,161,1513,161,1505,189,1507,189,1503,223,1504,224,1504,262,1505,262,1508,307,1513,305,1516,301,1517,297,1746,297,1745,292,1741,288,1736,287,1735,287,1731,268,1732,268,1729,236,1730,236,1732,211,1733,211,1735,198,1736,198,1740,186,1742,187,1751,170,1753,171,1766,157,1768,160,1785,151,1786,154,1805,151,1805,153,1817,154,1816,155,1827,158,1827,159,1848,167,1848,169,1867,181,1866,183,1883,198,1881,199,1899,223,1898,223,1913,249,1912,249,1930,284,1930,285,1940,306,1944,303,1946,298,1946,297,2174,297,2173,292,2169,288,2164,287,2160,288,2136,243,2135,243,2113,204,2090,171,2089,171,2068,146,2068,147,2063,141;PU2803,655;PD2800,660,2800,665,2801,668,2783,680,2782,679,2762,689,2761,688,2719,702,2718,701,2689,708,2659,712,2628,714,2628,713,2598,714,2598,713,2572,712,2572,711,2546,707,2546,706,2496,694,2496,693,2450,675,2450,674,2406,650,2407,649,2367,620,2368,619,2331,585,2332,584,2306,553,2307,552,2295,535,2296,534,2287,516,2279,496,2280,496,2273,476,2274,476,2269,455,2271,454,2269,433,2270,433,2271,415,2272,415,2274,397,2276,397,2281,380,2282,380,2290,364,2292,365,2307,348,2308,349,2328,333,2328,334,2352,317,2354,322,2354,323,2801,323,2800,328,2796,331,2791,333,2788,332,2780,351,2772,368,2771,367,2763,381,2761,380,2750,393,2749,392,2736,404,2735,403,2706,422,2705,420,2683,430,2683,429,2660,436,2660,435,2612,444,2564,454,2564,455,2541,462,2542,464,2520,474,2521,475,2502,487,2503,489,2495,496,2497,498,2492,507,2495,508,2493,518,2496,518,2497,529,2499,528,2501,538,2503,538,2507,547,2509,546,2516,555,2518,554,2527,562,2528,560,2549,572,2550,570,2564,575,2564,574,2578,576,2579,575,2608,576,2608,575,2646,571,2645,569,2664,564,2663,563,2680,556,2679,554,2697,541,2696,540,2714,524,2713,523,2732,503,2735,507,2735,512,2734,515,2875,595,2871,599,2866,600,2861,599,2841,628,2841,627,2822,651,2821,650,2802,670,2801,668,2783,680,2782,679,2766,687;PU2769,229;PD2768,224,2770,219,2773,216,2755,181,2754,182,2731,148,2731,149,2705,119,2704,119,2675,91,2675,92,2649,72,2649,73,2622,56,2621,56,2592,42,2562,30,2562,31,2528,21,2527,22,2492,15,2457,11,2457,12,2421,9,2421,10,2372,10,2373,11,2324,18,2324,19,2284,31,2285,32,2247,49,2247,50,2212,70,2213,71,2197,83,2198,83,2183,97,2185,98,2172,115,2173,116,2162,137,2150,161,2156,162,2161,161,2163,157,2316,245,2318,240,2316,235,2314,232,2344,196,2356,182,2357,183,2370,171,2371,172,2388,161,2389,162,2408,154,2409,156,2432,151,2432,153,2455,152,2455,153,2486,155,2485,156,2500,158,2500,160,2514,164,2514,166,2537,177,2536,179,2546,187,2545,188,2553,197,2552,199,2564,218,2561,220,2565,231,2562,231,2562,242,2558,241,2555,250,2553,248,2547,256,2545,254,2531,266,2529,264,2515,271,2514,270,2498,274,2465,281,2465,282,2404,300,2406,304,2411,307,2416,306,2421,303,2423,299,2423,297,2802,297,2801,292,2797,288,2792,287,2791,287,2788,259,2787,260,2783,236,2781,236,2775,216,2773,216,2755,181,2754,182,2754,181;SP0;PU0,0;IN; diff --git a/hpgl/tec.hpgl b/hpgl/tec.hpgl deleted file mode 100755 index a38b89a..0000000 --- a/hpgl/tec.hpgl +++ /dev/null @@ -1 +0,0 @@ -IN;SP1;PU0,0;PD0,90;PU736,445;PD739,444,745,465,746,465,759,499,761,498,776,520,777,519,794,539,794,538,813,557,814,556,836,571,837,569,858,577,858,575,880,578,880,576,901,575,900,573,910,571,909,569,919,565,917,562,929,552,927,550,936,536,934,535,942,512,940,511,943,486,940,486,938,468,937,468,933,448,932,448,926,425,921,428,919,433,919,435,726,435,728,440,732,444,737,445,739,444,745,465,746,465,753,482;PU945,276;PD940,277,935,275,932,270,931,265,934,260,936,259,927,244,910,221,909,222,890,200,889,201,868,182,867,183,845,170,845,171,822,161,821,162,798,154,798,156,774,152,774,154,751,156,751,157,740,160,741,162,731,166,731,167,722,174,723,175,714,182,715,184,701,202,703,203,692,226,694,227,689,251,691,251,692,276,693,276,696,303,697,303,703,333,707,331,710,327,711,324,1136,323,1134,329,1131,332,1128,333,1143,387,1142,387,1152,434,1151,434,1154,457,1155,477,1154,477,1152,513,1151,513,1147,550,1146,549,1136,584,1135,584,1129,600,1128,600,1119,616,1118,615,1099,641,1097,640,1073,663,1072,662,1045,681,1045,680,1016,696,1015,695,986,706,986,705,956,712,955,711,924,715,924,714,893,715,893,714,859,712,859,711,826,706,794,698,794,697,762,686,762,685,727,670,727,669,694,651,694,650,662,629,662,628,632,605,633,604,604,576,577,545,578,545,554,512,533,478,533,477,513,439,514,438,496,398,497,398,483,356,484,356,473,314,474,314,468,275,469,275,465,235,466,235,467,196,469,196,476,158,477,158,487,131,488,132,501,106,503,106,519,82,520,83,540,62,541,63,560,48,560,49,581,37,582,38,604,28,604,29,626,21,627,21,650,15,650,16,674,12,674,13,722,10,722,11,775,13,775,14,802,18,828,24,827,25,853,33,878,43,878,44,926,68,925,69,971,98,971,99,1013,133,1012,134,1033,155,1054,180,1054,181,1078,210,1073,212,1067,211,1063,208,1062,207,932,272,931,266,933,261,936,259,927,244,913,226;PU1796,241;PD1796,241,1769,197,1768,197,1743,161,1742,161,1717,130,1716,131,1692,107,1691,107,1665,85,1665,86,1637,65,1637,66,1608,48,1608,49,1586,38,1586,39,1564,30,1564,31,1518,18,1517,19,1468,11,1468,12,1418,10,1418,11,1363,15,1363,16,1335,20,1336,22,1309,29,1309,30,1289,39,1289,40,1269,50,1270,51,1251,64,1252,65,1235,80,1237,81,1220,102,1221,103,1207,127,1208,127,1197,153,1198,153,1190,179,1191,179,1188,197,1189,197,1187,217,1188,217,1187,259,1188,259,1190,308,1195,306,1198,302,1199,298,1428,298,1427,293,1423,289,1418,288,1416,288,1413,270,1414,270,1410,240,1412,240,1414,213,1415,213,1418,200,1420,201,1424,188,1426,189,1438,171,1440,173,1456,159,1458,161,1477,153,1478,155,1499,152,1499,155,1519,157,1518,159,1538,165,1537,166,1561,179,1560,180,1581,196,1580,198,1600,220,1599,221,1617,246,1616,246,1643,291,1647,287,1648,282,1648,281,1812,247,1809,242,1805,239,1799,239,1796,241,1775,207;PU1636,431;PD1632,435,1631,441,1633,446,1637,449,1642,450,1644,468,1643,468,1644,498,1643,498,1642,519,1641,519,1639,529,1638,529,1634,538,1632,537,1623,549,1621,547,1609,555,1608,553,1594,558,1593,555,1578,557,1578,555,1557,553,1558,551,1538,545,1539,542,1527,535,1528,534,1517,525,1518,524,1500,503,1501,502,1490,485,1480,467,1481,466,1463,429,1464,428,1437,357,1422,314,1418,317,1416,322,1415,324,1187,324,1188,329,1192,332,1197,334,1200,333,1223,399,1224,399,1247,455,1260,482,1260,481,1273,504,1274,504,1295,535,1319,565,1320,564,1346,593,1346,592,1374,618,1375,618,1401,639,1402,639,1430,659,1430,658,1460,676,1460,675,1492,689,1492,688,1528,701,1529,700,1566,709,1566,708,1605,714,1605,713,1643,715,1667,714,1667,713,1691,711,1691,710,1714,705,1714,704,1737,698,1737,697,1756,690,1756,689,1775,680,1775,679,1793,668,1792,667,1808,654,1807,653,1824,635,1823,635,1837,615,1836,614,1847,593,1846,592,1855,570,1854,569,1857,554,1856,554,1859,536,1858,536,1860,499,1859,499,1858,455,1853,457,1849,461,1848,464,1631,439,1632,444,1636,448,1641,450,1642,450,1644,468,1643,468,1644,490;PU203,21;PD198,19,194,16,193,11,127,10,127,12,95,15,95,17,79,20,80,21,65,27,65,28,49,37,50,38,35,50,36,51,23,64,24,65,14,81,15,82,10,95,12,96,9,110,11,110,10,139,12,139,18,167,19,167,24,184,23,184,124,535,118,535,114,533,111,528,111,526,17,526,18,531,22,535,27,536,29,535,77,702,81,699,84,695,84,693,178,693,177,698,173,701,172,702,236,857,241,854,243,849,243,848,452,848,450,843,446,839,441,838,439,838,395,683,400,683,404,686,407,690,407,693,550,693,549,687,545,684,540,683,538,683,490,516,485,519,483,524,483,526,340,526,341,521,345,517,347,516,282,288,282,289,273,262,273,261,267,238,268,237,265,216,266,215,267,203,269,203,273,191,276,192,288,178,290,180,306,170,307,173,330,168,330,170,354,170,354,171,403,175,402,170,398,166,393,164,390,165,348,19,344,22,341,27,286,18,286,19,237,13,193,10,193,11,153,11;SP0;PU0,0;IN; diff --git a/janos.hpgl~ b/janos.hpgl~ deleted file mode 100755 index c763787..0000000 --- a/janos.hpgl~ +++ /dev/null @@ -1,326 +0,0 @@ -##sK1 1 2 -document() -layout('A4',(595.276,841.89),0) -grid((0,0,2.83465,2.83465),0,("RGB",0.0,0.0,1.0),'Gitter') -page('','A4',(595.276,841.89),0) -layer('PLT_objects',1,1,0,0,("RGB",0.196,0.314,0.635)) -lw(0.85) -lc(2) -lj(1) -b() -bs(172.984,382.535,0) -bs(173.693,381.827,0) -bs(173.976,381.827,0) -bs(174.543,382.039,0) -bs(174.969,381.898,0) -bs(175.11,381.26,0) -bs(175.11,376.299,0) -bs(175.323,376.087,0) -bs(176.669,376.087,0) -bs(176.811,376.299,0) -bs(176.811,381.26,0) -bs(176.669,382.252,0) -bs(176.173,382.961,0) -bs(175.465,383.457,0) -bs(174.543,383.598,0) -bs(173.48,383.315,0) -bs(172.913,382.819,0) -bs(172.984,382.535,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(180.709,382.535,0) -bs(181.063,382.394,0) -bs(181.205,382.11,0) -bs(181.063,381.756,0) -bs(180.709,381.614,0) -bs(180.425,381.756,0) -bs(180.283,382.11,0) -bs(180.425,382.394,0) -bs(180.709,382.535,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(179.929,378,0) -bs(179.646,377.504,0) -bs(179.717,377.291,0) -bs(181.559,376.228,0) -bs(181.843,376.228,0) -bs(182.197,376.866,0) -bs(182.126,377.22,0) -bs(180.213,378.071,0) -bs(179.929,378,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(180.496,380.764,0) -bs(181.276,380.976,0) -bs(181.205,380.48,0) -bs(180.709,380.339,0) -bs(179.646,380.48,0) -bs(179.362,380.268,0) -bs(179.291,379.559,0) -bs(179.433,379.276,0) -bs(180.85,379.134,0) -bs(181.701,379.276,0) -bs(182.268,379.559,0) -bs(182.551,380.126,0) -bs(182.693,380.976,0) -bs(182.693,383.315,0) -bs(182.48,383.528,0) -bs(181.984,383.528,0) -bs(181.772,383.386,0) -bs(181.63,383.102,0) -bs(181.205,383.386,0) -bs(180.354,383.598,0) -bs(179.291,383.244,0) -bs(178.937,382.181,0) -bs(179.291,381.189,0) -bs(179.787,380.906,0) -bs(180.496,380.764,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(184.819,379.488,0) -bs(185.031,379.276,0) -bs(185.528,379.276,0) -bs(185.669,379.346,0) -bs(185.882,379.772,0) -bs(186.378,379.346,0) -bs(187.37,379.134,0) -bs(188.22,379.346,0) -bs(188.858,379.772,0) -bs(189.213,380.48,0) -bs(189.354,381.331,0) -bs(189.354,383.315,0) -bs(189.142,383.528,0) -bs(188.008,383.528,0) -bs(187.866,383.315,0) -bs(187.866,381.331,0) -bs(187.654,380.764,0) -bs(187.087,380.551,0) -bs(186.52,380.693,0) -bs(186.307,381.26,0) -bs(186.307,383.315,0) -bs(186.094,383.528,0) -bs(185.031,383.528,0) -bs(184.819,383.315,0) -bs(184.819,379.488,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(193.323,382.252,0) -bs(193.961,381.969,0) -bs(194.173,381.331,0) -bs(193.961,380.764,0) -bs(193.323,380.48,0) -bs(192.756,380.764,0) -bs(192.543,381.331,0) -bs(192.756,381.969,0) -bs(193.323,382.252,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(193.323,379.134,0) -bs(194.173,379.346,0) -bs(194.882,379.772,0) -bs(195.378,380.48,0) -bs(195.591,381.331,0) -bs(195.378,382.252,0) -bs(194.882,382.961,0) -bs(194.173,383.457,0) -bs(193.323,383.598,0) -bs(192.472,383.457,0) -bs(191.764,382.961,0) -bs(191.339,382.252,0) -bs(191.126,381.331,0) -bs(191.339,380.48,0) -bs(191.764,379.772,0) -bs(192.472,379.346,0) -bs(193.323,379.134,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(197.22,383.031,0) -bs(197.575,382.323,0) -bs(197.858,382.181,0) -bs(198.78,382.465,0) -bs(198.992,382.323,0) -bs(198.85,382.11,0) -bs(198.354,381.827,0) -bs(197.504,381.26,0) -bs(197.22,380.409,0) -bs(197.575,379.488,0) -bs(198.071,379.276,0) -bs(198.85,379.134,0) -bs(200.268,379.488,0) -bs(200.339,379.772,0) -bs(199.984,380.48,0) -bs(199.772,380.551,0) -bs(198.85,380.268,0) -bs(198.638,380.409,0) -bs(199.063,380.764,0) -bs(200.126,381.331,0) -bs(200.409,381.685,0) -bs(200.551,382.252,0) -bs(200.409,382.748,0) -bs(200.126,383.173,0) -bs(199.559,383.528,0) -bs(198.78,383.598,0) -bs(197.858,383.457,0) -bs(197.291,383.244,0) -bs(197.22,383.031,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(208.843,381.969,0) -bs(209.339,381.756,0) -bs(209.551,381.189,0) -bs(209.268,380.693,0) -bs(208.701,380.48,0) -bs(207.85,380.48,0) -bs(207.85,381.969,0) -bs(208.843,381.969,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(208.701,379.063,0) -bs(209.197,378.85,0) -bs(209.409,378.354,0) -bs(209.197,377.787,0) -bs(208.701,377.575,0) -bs(207.85,377.575,0) -bs(207.85,379.063,0) -bs(208.701,379.063,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(206.22,376.299,0) -bs(206.362,376.087,0) -bs(208.843,376.087,0) -bs(209.764,376.228,0) -bs(210.472,376.654,0) -bs(210.969,377.291,0) -bs(211.11,378.071,0) -bs(210.685,379.063,0) -bs(209.906,379.701,0) -bs(210.827,380.339,0) -bs(211.181,380.835,0) -bs(211.323,381.472,0) -bs(211.181,382.252,0) -bs(210.685,382.89,0) -bs(209.906,383.315,0) -bs(209.055,383.528,0) -bs(206.362,383.528,0) -bs(206.22,383.315,0) -bs(206.22,376.299,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(213.378,379.488,0) -bs(213.52,379.276,0) -bs(214.654,379.276,0) -bs(214.866,379.488,0) -bs(214.866,381.402,0) -bs(215.079,381.969,0) -bs(215.575,382.252,0) -bs(216,381.969,0) -bs(216.213,381.472,0) -bs(216.213,379.488,0) -bs(216.425,379.276,0) -bs(217.488,379.276,0) -bs(217.701,379.488,0) -bs(217.701,383.315,0) -bs(217.488,383.528,0) -bs(216.992,383.528,0) -bs(216.78,383.315,0) -bs(216.638,382.961,0) -bs(216.142,383.386,0) -bs(215.22,383.598,0) -bs(214.37,383.457,0) -bs(213.803,382.961,0) -bs(213.449,382.252,0) -bs(213.378,381.402,0) -bs(213.378,379.488,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(221.882,379.134,0) -bs(222.803,379.346,0) -bs(223.512,379.913,0) -bs(223.441,380.197,0) -bs(222.803,380.835,0) -bs(222.591,380.764,0) -bs(221.953,380.48,0) -bs(221.315,380.764,0) -bs(221.102,381.402,0) -bs(221.315,381.969,0) -bs(221.953,382.252,0) -bs(222.661,381.898,0) -bs(222.874,381.827,0) -bs(223.512,382.394,0) -bs(223.583,382.677,0) -bs(222.874,383.386,0) -bs(221.882,383.598,0) -bs(221.031,383.457,0) -bs(220.252,382.961,0) -bs(219.756,382.252,0) -bs(219.614,381.402,0) -bs(219.756,380.48,0) -bs(220.323,379.772,0) -bs(221.031,379.346,0) -bs(221.882,379.134,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(225.425,376.299,0) -bs(225.638,376.087,0) -bs(226.772,376.087,0) -bs(226.984,376.299,0) -bs(226.984,380.835,0) -bs(228.26,379.346,0) -bs(228.543,379.276,0) -bs(229.748,379.276,0) -bs(229.89,379.346,0) -bs(229.89,379.559,0) -bs(228.472,381.189,0) -bs(230.173,383.173,0) -bs(230.244,383.386,0) -bs(230.031,383.528,0) -bs(228.614,383.528,0) -bs(228.402,383.386,0) -bs(226.984,381.543,0) -bs(226.984,383.315,0) -bs(226.772,383.528,0) -bs(225.638,383.528,0) -bs(225.425,383.315,0) -bs(225.425,376.299,0) -bC() -masterlayer('MasterLayer 1',1,1,0,0,("RGB",0.196,0.314,0.635)) -guidelayer('Hilfslinien',1,0,0,1,("RGB",0.0,0.3,1.0)) diff --git a/kanamen.sk1 b/kanamen.sk1 deleted file mode 100755 index c763787..0000000 --- a/kanamen.sk1 +++ /dev/null @@ -1,326 +0,0 @@ -##sK1 1 2 -document() -layout('A4',(595.276,841.89),0) -grid((0,0,2.83465,2.83465),0,("RGB",0.0,0.0,1.0),'Gitter') -page('','A4',(595.276,841.89),0) -layer('PLT_objects',1,1,0,0,("RGB",0.196,0.314,0.635)) -lw(0.85) -lc(2) -lj(1) -b() -bs(172.984,382.535,0) -bs(173.693,381.827,0) -bs(173.976,381.827,0) -bs(174.543,382.039,0) -bs(174.969,381.898,0) -bs(175.11,381.26,0) -bs(175.11,376.299,0) -bs(175.323,376.087,0) -bs(176.669,376.087,0) -bs(176.811,376.299,0) -bs(176.811,381.26,0) -bs(176.669,382.252,0) -bs(176.173,382.961,0) -bs(175.465,383.457,0) -bs(174.543,383.598,0) -bs(173.48,383.315,0) -bs(172.913,382.819,0) -bs(172.984,382.535,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(180.709,382.535,0) -bs(181.063,382.394,0) -bs(181.205,382.11,0) -bs(181.063,381.756,0) -bs(180.709,381.614,0) -bs(180.425,381.756,0) -bs(180.283,382.11,0) -bs(180.425,382.394,0) -bs(180.709,382.535,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(179.929,378,0) -bs(179.646,377.504,0) -bs(179.717,377.291,0) -bs(181.559,376.228,0) -bs(181.843,376.228,0) -bs(182.197,376.866,0) -bs(182.126,377.22,0) -bs(180.213,378.071,0) -bs(179.929,378,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(180.496,380.764,0) -bs(181.276,380.976,0) -bs(181.205,380.48,0) -bs(180.709,380.339,0) -bs(179.646,380.48,0) -bs(179.362,380.268,0) -bs(179.291,379.559,0) -bs(179.433,379.276,0) -bs(180.85,379.134,0) -bs(181.701,379.276,0) -bs(182.268,379.559,0) -bs(182.551,380.126,0) -bs(182.693,380.976,0) -bs(182.693,383.315,0) -bs(182.48,383.528,0) -bs(181.984,383.528,0) -bs(181.772,383.386,0) -bs(181.63,383.102,0) -bs(181.205,383.386,0) -bs(180.354,383.598,0) -bs(179.291,383.244,0) -bs(178.937,382.181,0) -bs(179.291,381.189,0) -bs(179.787,380.906,0) -bs(180.496,380.764,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(184.819,379.488,0) -bs(185.031,379.276,0) -bs(185.528,379.276,0) -bs(185.669,379.346,0) -bs(185.882,379.772,0) -bs(186.378,379.346,0) -bs(187.37,379.134,0) -bs(188.22,379.346,0) -bs(188.858,379.772,0) -bs(189.213,380.48,0) -bs(189.354,381.331,0) -bs(189.354,383.315,0) -bs(189.142,383.528,0) -bs(188.008,383.528,0) -bs(187.866,383.315,0) -bs(187.866,381.331,0) -bs(187.654,380.764,0) -bs(187.087,380.551,0) -bs(186.52,380.693,0) -bs(186.307,381.26,0) -bs(186.307,383.315,0) -bs(186.094,383.528,0) -bs(185.031,383.528,0) -bs(184.819,383.315,0) -bs(184.819,379.488,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(193.323,382.252,0) -bs(193.961,381.969,0) -bs(194.173,381.331,0) -bs(193.961,380.764,0) -bs(193.323,380.48,0) -bs(192.756,380.764,0) -bs(192.543,381.331,0) -bs(192.756,381.969,0) -bs(193.323,382.252,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(193.323,379.134,0) -bs(194.173,379.346,0) -bs(194.882,379.772,0) -bs(195.378,380.48,0) -bs(195.591,381.331,0) -bs(195.378,382.252,0) -bs(194.882,382.961,0) -bs(194.173,383.457,0) -bs(193.323,383.598,0) -bs(192.472,383.457,0) -bs(191.764,382.961,0) -bs(191.339,382.252,0) -bs(191.126,381.331,0) -bs(191.339,380.48,0) -bs(191.764,379.772,0) -bs(192.472,379.346,0) -bs(193.323,379.134,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(197.22,383.031,0) -bs(197.575,382.323,0) -bs(197.858,382.181,0) -bs(198.78,382.465,0) -bs(198.992,382.323,0) -bs(198.85,382.11,0) -bs(198.354,381.827,0) -bs(197.504,381.26,0) -bs(197.22,380.409,0) -bs(197.575,379.488,0) -bs(198.071,379.276,0) -bs(198.85,379.134,0) -bs(200.268,379.488,0) -bs(200.339,379.772,0) -bs(199.984,380.48,0) -bs(199.772,380.551,0) -bs(198.85,380.268,0) -bs(198.638,380.409,0) -bs(199.063,380.764,0) -bs(200.126,381.331,0) -bs(200.409,381.685,0) -bs(200.551,382.252,0) -bs(200.409,382.748,0) -bs(200.126,383.173,0) -bs(199.559,383.528,0) -bs(198.78,383.598,0) -bs(197.858,383.457,0) -bs(197.291,383.244,0) -bs(197.22,383.031,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(208.843,381.969,0) -bs(209.339,381.756,0) -bs(209.551,381.189,0) -bs(209.268,380.693,0) -bs(208.701,380.48,0) -bs(207.85,380.48,0) -bs(207.85,381.969,0) -bs(208.843,381.969,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(208.701,379.063,0) -bs(209.197,378.85,0) -bs(209.409,378.354,0) -bs(209.197,377.787,0) -bs(208.701,377.575,0) -bs(207.85,377.575,0) -bs(207.85,379.063,0) -bs(208.701,379.063,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(206.22,376.299,0) -bs(206.362,376.087,0) -bs(208.843,376.087,0) -bs(209.764,376.228,0) -bs(210.472,376.654,0) -bs(210.969,377.291,0) -bs(211.11,378.071,0) -bs(210.685,379.063,0) -bs(209.906,379.701,0) -bs(210.827,380.339,0) -bs(211.181,380.835,0) -bs(211.323,381.472,0) -bs(211.181,382.252,0) -bs(210.685,382.89,0) -bs(209.906,383.315,0) -bs(209.055,383.528,0) -bs(206.362,383.528,0) -bs(206.22,383.315,0) -bs(206.22,376.299,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(213.378,379.488,0) -bs(213.52,379.276,0) -bs(214.654,379.276,0) -bs(214.866,379.488,0) -bs(214.866,381.402,0) -bs(215.079,381.969,0) -bs(215.575,382.252,0) -bs(216,381.969,0) -bs(216.213,381.472,0) -bs(216.213,379.488,0) -bs(216.425,379.276,0) -bs(217.488,379.276,0) -bs(217.701,379.488,0) -bs(217.701,383.315,0) -bs(217.488,383.528,0) -bs(216.992,383.528,0) -bs(216.78,383.315,0) -bs(216.638,382.961,0) -bs(216.142,383.386,0) -bs(215.22,383.598,0) -bs(214.37,383.457,0) -bs(213.803,382.961,0) -bs(213.449,382.252,0) -bs(213.378,381.402,0) -bs(213.378,379.488,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(221.882,379.134,0) -bs(222.803,379.346,0) -bs(223.512,379.913,0) -bs(223.441,380.197,0) -bs(222.803,380.835,0) -bs(222.591,380.764,0) -bs(221.953,380.48,0) -bs(221.315,380.764,0) -bs(221.102,381.402,0) -bs(221.315,381.969,0) -bs(221.953,382.252,0) -bs(222.661,381.898,0) -bs(222.874,381.827,0) -bs(223.512,382.394,0) -bs(223.583,382.677,0) -bs(222.874,383.386,0) -bs(221.882,383.598,0) -bs(221.031,383.457,0) -bs(220.252,382.961,0) -bs(219.756,382.252,0) -bs(219.614,381.402,0) -bs(219.756,380.48,0) -bs(220.323,379.772,0) -bs(221.031,379.346,0) -bs(221.882,379.134,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(225.425,376.299,0) -bs(225.638,376.087,0) -bs(226.772,376.087,0) -bs(226.984,376.299,0) -bs(226.984,380.835,0) -bs(228.26,379.346,0) -bs(228.543,379.276,0) -bs(229.748,379.276,0) -bs(229.89,379.346,0) -bs(229.89,379.559,0) -bs(228.472,381.189,0) -bs(230.173,383.173,0) -bs(230.244,383.386,0) -bs(230.031,383.528,0) -bs(228.614,383.528,0) -bs(228.402,383.386,0) -bs(226.984,381.543,0) -bs(226.984,383.315,0) -bs(226.772,383.528,0) -bs(225.638,383.528,0) -bs(225.425,383.315,0) -bs(225.425,376.299,0) -bC() -masterlayer('MasterLayer 1',1,1,0,0,("RGB",0.196,0.314,0.635)) -guidelayer('Hilfslinien',1,0,0,1,("RGB",0.0,0.3,1.0)) diff --git a/koche.pyc b/koche.pyc deleted file mode 100755 index c737f49..0000000 Binary files a/koche.pyc and /dev/null differ diff --git a/m2/r0.png b/m2/r0.png deleted file mode 100755 index a01af1e..0000000 Binary files a/m2/r0.png and /dev/null differ diff --git a/m2/r1.png b/m2/r1.png deleted file mode 100755 index 8946b37..0000000 Binary files a/m2/r1.png and /dev/null differ diff --git a/m2/r10.png b/m2/r10.png deleted file mode 100755 index 16ad4b8..0000000 Binary files a/m2/r10.png and /dev/null differ diff --git a/m2/r11.png b/m2/r11.png deleted file mode 100755 index eb32251..0000000 Binary files a/m2/r11.png and /dev/null differ diff --git a/m2/r12.png b/m2/r12.png deleted file mode 100755 index c4371fc..0000000 Binary files a/m2/r12.png and /dev/null differ diff --git a/m2/r13.png b/m2/r13.png deleted file mode 100755 index c2a2eb1..0000000 Binary files a/m2/r13.png and /dev/null differ diff --git a/m2/r14.png b/m2/r14.png deleted file mode 100755 index b939194..0000000 Binary files a/m2/r14.png and /dev/null differ diff --git a/m2/r15.png b/m2/r15.png deleted file mode 100755 index 2e07249..0000000 Binary files a/m2/r15.png and /dev/null differ diff --git a/m2/r16.png b/m2/r16.png deleted file mode 100755 index f743466..0000000 Binary files a/m2/r16.png and /dev/null differ diff --git a/m2/r17.png b/m2/r17.png deleted file mode 100755 index 3f988e2..0000000 Binary files a/m2/r17.png and /dev/null differ diff --git a/m2/r18.png b/m2/r18.png deleted file mode 100755 index 7985d56..0000000 Binary files a/m2/r18.png and /dev/null differ diff --git a/m2/r19.png b/m2/r19.png deleted file mode 100755 index 871c03d..0000000 Binary files a/m2/r19.png and /dev/null differ diff --git a/m2/r2.png b/m2/r2.png deleted file mode 100755 index 1fa5c98..0000000 Binary files a/m2/r2.png and /dev/null differ diff --git a/m2/r20.png b/m2/r20.png deleted file mode 100755 index 387a4ff..0000000 Binary files a/m2/r20.png and /dev/null differ diff --git a/m2/r21.png b/m2/r21.png deleted file mode 100755 index b7daa0f..0000000 Binary files a/m2/r21.png and /dev/null differ diff --git a/m2/r22.png b/m2/r22.png deleted file mode 100755 index 8113a29..0000000 Binary files a/m2/r22.png and /dev/null differ diff --git a/m2/r23.png b/m2/r23.png deleted file mode 100755 index af055ec..0000000 Binary files a/m2/r23.png and /dev/null differ diff --git a/m2/r24.png b/m2/r24.png deleted file mode 100755 index 1f2f9d3..0000000 Binary files a/m2/r24.png and /dev/null differ diff --git a/m2/r25.png b/m2/r25.png deleted file mode 100755 index 7e74c10..0000000 Binary files a/m2/r25.png and /dev/null differ diff --git a/m2/r26.png b/m2/r26.png deleted file mode 100755 index 808031f..0000000 Binary files a/m2/r26.png and /dev/null differ diff --git a/m2/r27.png b/m2/r27.png deleted file mode 100755 index 0488cf4..0000000 Binary files a/m2/r27.png and /dev/null differ diff --git a/m2/r28.png b/m2/r28.png deleted file mode 100755 index 6c39028..0000000 Binary files a/m2/r28.png and /dev/null differ diff --git a/m2/r29.png b/m2/r29.png deleted file mode 100755 index ead5ea7..0000000 Binary files a/m2/r29.png and /dev/null differ diff --git a/m2/r3.png b/m2/r3.png deleted file mode 100755 index 8ae9267..0000000 Binary files a/m2/r3.png and /dev/null differ diff --git a/m2/r30.png b/m2/r30.png deleted file mode 100755 index 5e4982b..0000000 Binary files a/m2/r30.png and /dev/null differ diff --git a/m2/r31.png b/m2/r31.png deleted file mode 100755 index 69f9e99..0000000 Binary files a/m2/r31.png and /dev/null differ diff --git a/m2/r32.png b/m2/r32.png deleted file mode 100755 index 317c1f4..0000000 Binary files a/m2/r32.png and /dev/null differ diff --git a/m2/r33.png b/m2/r33.png deleted file mode 100755 index 51f2a91..0000000 Binary files a/m2/r33.png and /dev/null differ diff --git a/m2/r34.png b/m2/r34.png deleted file mode 100755 index 938c79a..0000000 Binary files a/m2/r34.png and /dev/null differ diff --git a/m2/r35.png b/m2/r35.png deleted file mode 100755 index e0609d3..0000000 Binary files a/m2/r35.png and /dev/null differ diff --git a/m2/r36.png b/m2/r36.png deleted file mode 100755 index aabb3e8..0000000 Binary files a/m2/r36.png and /dev/null differ diff --git a/m2/r37.png b/m2/r37.png deleted file mode 100755 index 22e3f00..0000000 Binary files a/m2/r37.png and /dev/null differ diff --git a/m2/r38.png b/m2/r38.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r38.png and /dev/null differ diff --git a/m2/r39.png b/m2/r39.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r39.png and /dev/null differ diff --git a/m2/r4.png b/m2/r4.png deleted file mode 100755 index f5072a5..0000000 Binary files a/m2/r4.png and /dev/null differ diff --git a/m2/r40.png b/m2/r40.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r40.png and /dev/null differ diff --git a/m2/r41.png b/m2/r41.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r41.png and /dev/null differ diff --git a/m2/r42.png b/m2/r42.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r42.png and /dev/null differ diff --git a/m2/r43.png b/m2/r43.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r43.png and /dev/null differ diff --git a/m2/r44.png b/m2/r44.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r44.png and /dev/null differ diff --git a/m2/r45.png b/m2/r45.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r45.png and /dev/null differ diff --git a/m2/r46.png b/m2/r46.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r46.png and /dev/null differ diff --git a/m2/r47.png b/m2/r47.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r47.png and /dev/null differ diff --git a/m2/r48.png b/m2/r48.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r48.png and /dev/null differ diff --git a/m2/r49.png b/m2/r49.png deleted file mode 100755 index 41091fd..0000000 Binary files a/m2/r49.png and /dev/null differ diff --git a/m2/r5.png b/m2/r5.png deleted file mode 100755 index 3040b2a..0000000 Binary files a/m2/r5.png and /dev/null differ diff --git a/m2/r50.png b/m2/r50.png deleted file mode 100755 index 5a263c3..0000000 Binary files a/m2/r50.png and /dev/null differ diff --git a/m2/r51.png b/m2/r51.png deleted file mode 100755 index 5a263c3..0000000 Binary files a/m2/r51.png and /dev/null differ diff --git a/m2/r52.png b/m2/r52.png deleted file mode 100755 index 5a263c3..0000000 Binary files a/m2/r52.png and /dev/null differ diff --git a/m2/r53.png b/m2/r53.png deleted file mode 100755 index 5a263c3..0000000 Binary files a/m2/r53.png and /dev/null differ diff --git a/m2/r54.png b/m2/r54.png deleted file mode 100755 index 5a263c3..0000000 Binary files a/m2/r54.png and /dev/null differ diff --git a/m2/r55.png b/m2/r55.png deleted file mode 100755 index 82b70b2..0000000 Binary files a/m2/r55.png and /dev/null differ diff --git a/m2/r56.png b/m2/r56.png deleted file mode 100755 index 82b70b2..0000000 Binary files a/m2/r56.png and /dev/null differ diff --git a/m2/r57.png b/m2/r57.png deleted file mode 100755 index 82b70b2..0000000 Binary files a/m2/r57.png and /dev/null differ diff --git a/m2/r58.png b/m2/r58.png deleted file mode 100755 index 1bcead5..0000000 Binary files a/m2/r58.png and /dev/null differ diff --git a/m2/r59.png b/m2/r59.png deleted file mode 100755 index 35e53dd..0000000 Binary files a/m2/r59.png and /dev/null differ diff --git a/m2/r6.png b/m2/r6.png deleted file mode 100755 index 7a1cc28..0000000 Binary files a/m2/r6.png and /dev/null differ diff --git a/m2/r60.png b/m2/r60.png deleted file mode 100755 index 5a6d2c5..0000000 Binary files a/m2/r60.png and /dev/null differ diff --git a/m2/r61.png b/m2/r61.png deleted file mode 100755 index f3c5272..0000000 Binary files a/m2/r61.png and /dev/null differ diff --git a/m2/r62.png b/m2/r62.png deleted file mode 100755 index 90327cc..0000000 Binary files a/m2/r62.png and /dev/null differ diff --git a/m2/r63.png b/m2/r63.png deleted file mode 100755 index a615948..0000000 Binary files a/m2/r63.png and /dev/null differ diff --git a/m2/r64.png b/m2/r64.png deleted file mode 100755 index 783c142..0000000 Binary files a/m2/r64.png and /dev/null differ diff --git a/m2/r65.png b/m2/r65.png deleted file mode 100755 index d623991..0000000 Binary files a/m2/r65.png and /dev/null differ diff --git a/m2/r66.png b/m2/r66.png deleted file mode 100755 index 0cbad58..0000000 Binary files a/m2/r66.png and /dev/null differ diff --git a/m2/r67.png b/m2/r67.png deleted file mode 100755 index 7e0a9e2..0000000 Binary files a/m2/r67.png and /dev/null differ diff --git a/m2/r68.png b/m2/r68.png deleted file mode 100755 index 65d8384..0000000 Binary files a/m2/r68.png and /dev/null differ diff --git a/m2/r69.png b/m2/r69.png deleted file mode 100755 index 20b8246..0000000 Binary files a/m2/r69.png and /dev/null differ diff --git a/m2/r7.png b/m2/r7.png deleted file mode 100755 index 59c52bc..0000000 Binary files a/m2/r7.png and /dev/null differ diff --git a/m2/r70.png b/m2/r70.png deleted file mode 100755 index ab27a09..0000000 Binary files a/m2/r70.png and /dev/null differ diff --git a/m2/r71.png b/m2/r71.png deleted file mode 100755 index 34ffe7a..0000000 Binary files a/m2/r71.png and /dev/null differ diff --git a/m2/r72.png b/m2/r72.png deleted file mode 100755 index 349580e..0000000 Binary files a/m2/r72.png and /dev/null differ diff --git a/m2/r73.png b/m2/r73.png deleted file mode 100755 index 199a30f..0000000 Binary files a/m2/r73.png and /dev/null differ diff --git a/m2/r74.png b/m2/r74.png deleted file mode 100755 index 05925a7..0000000 Binary files a/m2/r74.png and /dev/null differ diff --git a/m2/r75.png b/m2/r75.png deleted file mode 100755 index be916ba..0000000 Binary files a/m2/r75.png and /dev/null differ diff --git a/m2/r76.png b/m2/r76.png deleted file mode 100755 index b48001e..0000000 Binary files a/m2/r76.png and /dev/null differ diff --git a/m2/r77.png b/m2/r77.png deleted file mode 100755 index 3fcac19..0000000 Binary files a/m2/r77.png and /dev/null differ diff --git a/m2/r78.png b/m2/r78.png deleted file mode 100755 index 1d78a30..0000000 Binary files a/m2/r78.png and /dev/null differ diff --git a/m2/r79.png b/m2/r79.png deleted file mode 100755 index 92e6fc3..0000000 Binary files a/m2/r79.png and /dev/null differ diff --git a/m2/r8.png b/m2/r8.png deleted file mode 100755 index ea7d3e6..0000000 Binary files a/m2/r8.png and /dev/null differ diff --git a/m2/r80.png b/m2/r80.png deleted file mode 100755 index bac264e..0000000 Binary files a/m2/r80.png and /dev/null differ diff --git a/m2/r81.png b/m2/r81.png deleted file mode 100755 index 265ed73..0000000 Binary files a/m2/r81.png and /dev/null differ diff --git a/m2/r82.png b/m2/r82.png deleted file mode 100755 index 86a20ae..0000000 Binary files a/m2/r82.png and /dev/null differ diff --git a/m2/r83.png b/m2/r83.png deleted file mode 100755 index f5683cb..0000000 Binary files a/m2/r83.png and /dev/null differ diff --git a/m2/r84.png b/m2/r84.png deleted file mode 100755 index 54e73b4..0000000 Binary files a/m2/r84.png and /dev/null differ diff --git a/m2/r85.png b/m2/r85.png deleted file mode 100755 index eea8e31..0000000 Binary files a/m2/r85.png and /dev/null differ diff --git a/m2/r86.png b/m2/r86.png deleted file mode 100755 index 133f9aa..0000000 Binary files a/m2/r86.png and /dev/null differ diff --git a/m2/r87.png b/m2/r87.png deleted file mode 100755 index ea94bb7..0000000 Binary files a/m2/r87.png and /dev/null differ diff --git a/m2/r88.png b/m2/r88.png deleted file mode 100755 index 53a08dd..0000000 Binary files a/m2/r88.png and /dev/null differ diff --git a/m2/r89.png b/m2/r89.png deleted file mode 100755 index df4dc43..0000000 Binary files a/m2/r89.png and /dev/null differ diff --git a/m2/r9.png b/m2/r9.png deleted file mode 100755 index e41cfe7..0000000 Binary files a/m2/r9.png and /dev/null differ diff --git a/m2/r90.png b/m2/r90.png deleted file mode 100755 index 373b996..0000000 Binary files a/m2/r90.png and /dev/null differ diff --git a/m2/r91.png b/m2/r91.png deleted file mode 100755 index af7bdea..0000000 Binary files a/m2/r91.png and /dev/null differ diff --git a/m2/r92.png b/m2/r92.png deleted file mode 100755 index 44c3fb2..0000000 Binary files a/m2/r92.png and /dev/null differ diff --git a/m2/r93.png b/m2/r93.png deleted file mode 100755 index b13fa9c..0000000 Binary files a/m2/r93.png and /dev/null differ diff --git a/m2/r94.png b/m2/r94.png deleted file mode 100755 index 4586b0c..0000000 Binary files a/m2/r94.png and /dev/null differ diff --git a/m2/r95.png b/m2/r95.png deleted file mode 100755 index 3bad686..0000000 Binary files a/m2/r95.png and /dev/null differ diff --git a/m2/r96.png b/m2/r96.png deleted file mode 100755 index a3a8da6..0000000 Binary files a/m2/r96.png and /dev/null differ diff --git a/m2/r97.png b/m2/r97.png deleted file mode 100755 index 1ec5678..0000000 Binary files a/m2/r97.png and /dev/null differ diff --git a/m2/r98.png b/m2/r98.png deleted file mode 100755 index 181885a..0000000 Binary files a/m2/r98.png and /dev/null differ diff --git a/m2/r99.png b/m2/r99.png deleted file mode 100755 index a2321f1..0000000 Binary files a/m2/r99.png and /dev/null differ diff --git a/main.py b/main.py index a00cee7..2fda078 100755 --- a/main.py +++ b/main.py @@ -1,73 +1,42 @@ from Plotter import * from Command import * from Program import * +import sys +import os +sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'generators')) import tkinter as tk from koche import koche def show(p): - win=tk.Tk() + win = tk.Tk() win.title('HPGLPLOTTER') - plt=Plotter() - p=plt.full(p) - canvas=tk.Canvas(win,width=600,height=600) - canvas.grid(row=0,column=0) + plt = Plotter() + p = plt.full(p) + canvas = tk.Canvas(win, width=600, height=600) + canvas.grid(row=0, column=0) x = y = 0 for command in p.commands: if command.name == 'PU': - x,y = command.x,command.y - elif command.name=='PD': - canvas.create_line(x,y,command.x,command.y) - x,y = command.x,command.y + x, y = command.x, command.y + elif command.name == 'PD': + canvas.create_line(x, y, command.x, command.y) + x, y = command.x, command.y elif command.name == 'CI': - r=command.args[0] - canvas.create_oval(x-r,y-r,x+r,y+r) - + r = command.args[0] + canvas.create_oval(x - r, y - r, x + r, y + r) win.mainloop() -plt=Plotter() -p=Program() -#p.parsefile('hpgl/luz.hpgl') -p.parsefile('hpgl/kreis.hpgl') -#p=p*10000 +plt = Plotter() +p = Program.parsefile('output/hpgl/kreis.hpgl') - -print(plt.winsize[0]*0.025, plt.winsize[1]*0.025) -p=plt.full(p) -#p=p.flip() -#q=q.flip() +print(plt.winsize[0] * 0.025, plt.winsize[1] * 0.025) +p = plt.full(p) print(p.center) print(plt.center) -#q=q+(p.xmax,0) -#p=p.rotate(90) -p=plt.centralize(p) -#p=p-p.center -#p=p+(120,120) -#q=plt.centralize(q) -#q=q+(0,p.ymax*1.05) -#p=p+120 -#p=p.flip() -#p=p*0.7 -#p=p+(959,9128.35) - -#out=out.flip() -#out=plt.full(out) -#p=p+100 -#out=plt.centralize(out) -#=out+(40,40) -#out=p +p = plt.centralize(p) print(str(p)) print('p.xmin,q.xmin,p.ymin,q.ymin,p.xmax,q.xmax,pymax,q,ymax') - - print(len(p)) -#print str(out) -#show(p+q) -#show(p) plt.write(p) - - - - - diff --git a/maintk.py b/maintk.py index 088782b..a650de6 100755 --- a/maintk.py +++ b/maintk.py @@ -75,8 +75,7 @@ class App: def file_open(self): filename = tkFileDialog.askopenfilename() if filename: - p=Program() - p.parsefile(filename) + p = Program.parsefile(filename) self.programs.append(p) self.filename = filename self.listBox.insert(tk.END, os.path.basename(filename)) diff --git a/mandel/r0.png b/mandel/r0.png deleted file mode 100755 index 1a822e6..0000000 Binary files a/mandel/r0.png and /dev/null differ diff --git a/mandel/r1.png b/mandel/r1.png deleted file mode 100755 index 2b2f24b..0000000 Binary files a/mandel/r1.png and /dev/null differ diff --git a/mandel/r10.png b/mandel/r10.png deleted file mode 100755 index 8e1cefc..0000000 Binary files a/mandel/r10.png and /dev/null differ diff --git a/mandel/r11.png b/mandel/r11.png deleted file mode 100755 index 80a0e47..0000000 Binary files a/mandel/r11.png and /dev/null differ diff --git a/mandel/r12.png b/mandel/r12.png deleted file mode 100755 index 2ce2343..0000000 Binary files a/mandel/r12.png and /dev/null differ diff --git a/mandel/r13.png b/mandel/r13.png deleted file mode 100755 index b1896a6..0000000 Binary files a/mandel/r13.png and /dev/null differ diff --git a/mandel/r14.png b/mandel/r14.png deleted file mode 100755 index 98bc949..0000000 Binary files a/mandel/r14.png and /dev/null differ diff --git a/mandel/r15.png b/mandel/r15.png deleted file mode 100755 index 6774618..0000000 Binary files a/mandel/r15.png and /dev/null differ diff --git a/mandel/r16.png b/mandel/r16.png deleted file mode 100755 index e3883cb..0000000 Binary files a/mandel/r16.png and /dev/null differ diff --git a/mandel/r17.png b/mandel/r17.png deleted file mode 100755 index ec52d18..0000000 Binary files a/mandel/r17.png and /dev/null differ diff --git a/mandel/r18.png b/mandel/r18.png deleted file mode 100755 index b43ea29..0000000 Binary files a/mandel/r18.png and /dev/null differ diff --git a/mandel/r19.png b/mandel/r19.png deleted file mode 100755 index 1d25b73..0000000 Binary files a/mandel/r19.png and /dev/null differ diff --git a/mandel/r2.png b/mandel/r2.png deleted file mode 100755 index 2ab0363..0000000 Binary files a/mandel/r2.png and /dev/null differ diff --git a/mandel/r20.png b/mandel/r20.png deleted file mode 100755 index ec5c848..0000000 Binary files a/mandel/r20.png and /dev/null differ diff --git a/mandel/r21.png b/mandel/r21.png deleted file mode 100755 index a8f04df..0000000 Binary files a/mandel/r21.png and /dev/null differ diff --git a/mandel/r22.png b/mandel/r22.png deleted file mode 100755 index 34118e4..0000000 Binary files a/mandel/r22.png and /dev/null differ diff --git a/mandel/r23.png b/mandel/r23.png deleted file mode 100755 index 10afaa1..0000000 Binary files a/mandel/r23.png and /dev/null differ diff --git a/mandel/r24.png b/mandel/r24.png deleted file mode 100755 index 74df57d..0000000 Binary files a/mandel/r24.png and /dev/null differ diff --git a/mandel/r25.png b/mandel/r25.png deleted file mode 100755 index 08ef107..0000000 Binary files a/mandel/r25.png and /dev/null differ diff --git a/mandel/r26.png b/mandel/r26.png deleted file mode 100755 index 48096b5..0000000 Binary files a/mandel/r26.png and /dev/null differ diff --git a/mandel/r27.png b/mandel/r27.png deleted file mode 100755 index ba3a965..0000000 Binary files a/mandel/r27.png and /dev/null differ diff --git a/mandel/r28.png b/mandel/r28.png deleted file mode 100755 index f31a598..0000000 Binary files a/mandel/r28.png and /dev/null differ diff --git a/mandel/r29.png b/mandel/r29.png deleted file mode 100755 index 1518ce1..0000000 Binary files a/mandel/r29.png and /dev/null differ diff --git a/mandel/r3.png b/mandel/r3.png deleted file mode 100755 index 9c538b5..0000000 Binary files a/mandel/r3.png and /dev/null differ diff --git a/mandel/r30.png b/mandel/r30.png deleted file mode 100755 index acc2e5b..0000000 Binary files a/mandel/r30.png and /dev/null differ diff --git a/mandel/r31.png b/mandel/r31.png deleted file mode 100755 index a0eb201..0000000 Binary files a/mandel/r31.png and /dev/null differ diff --git a/mandel/r32.png b/mandel/r32.png deleted file mode 100755 index 69f0f5e..0000000 Binary files a/mandel/r32.png and /dev/null differ diff --git a/mandel/r33.png b/mandel/r33.png deleted file mode 100755 index 1d2fab0..0000000 Binary files a/mandel/r33.png and /dev/null differ diff --git a/mandel/r34.png b/mandel/r34.png deleted file mode 100755 index aa29e18..0000000 Binary files a/mandel/r34.png and /dev/null differ diff --git a/mandel/r35.png b/mandel/r35.png deleted file mode 100755 index ffdec98..0000000 Binary files a/mandel/r35.png and /dev/null differ diff --git a/mandel/r36.png b/mandel/r36.png deleted file mode 100755 index ca59c48..0000000 Binary files a/mandel/r36.png and /dev/null differ diff --git a/mandel/r37.png b/mandel/r37.png deleted file mode 100755 index f857db0..0000000 Binary files a/mandel/r37.png and /dev/null differ diff --git a/mandel/r38.png b/mandel/r38.png deleted file mode 100755 index b138c3a..0000000 Binary files a/mandel/r38.png and /dev/null differ diff --git a/mandel/r39.png b/mandel/r39.png deleted file mode 100755 index f90f309..0000000 Binary files a/mandel/r39.png and /dev/null differ diff --git a/mandel/r4.png b/mandel/r4.png deleted file mode 100755 index 7095421..0000000 Binary files a/mandel/r4.png and /dev/null differ diff --git a/mandel/r40.png b/mandel/r40.png deleted file mode 100755 index d06a570..0000000 Binary files a/mandel/r40.png and /dev/null differ diff --git a/mandel/r41.png b/mandel/r41.png deleted file mode 100755 index 29afe77..0000000 Binary files a/mandel/r41.png and /dev/null differ diff --git a/mandel/r42.png b/mandel/r42.png deleted file mode 100755 index 3c0cfeb..0000000 Binary files a/mandel/r42.png and /dev/null differ diff --git a/mandel/r43.png b/mandel/r43.png deleted file mode 100755 index 8888705..0000000 Binary files a/mandel/r43.png and /dev/null differ diff --git a/mandel/r44.png b/mandel/r44.png deleted file mode 100755 index 669fa87..0000000 Binary files a/mandel/r44.png and /dev/null differ diff --git a/mandel/r45.png b/mandel/r45.png deleted file mode 100755 index 128cfb9..0000000 Binary files a/mandel/r45.png and /dev/null differ diff --git a/mandel/r46.png b/mandel/r46.png deleted file mode 100755 index 9addfd8..0000000 Binary files a/mandel/r46.png and /dev/null differ diff --git a/mandel/r47.png b/mandel/r47.png deleted file mode 100755 index 84e7cfe..0000000 Binary files a/mandel/r47.png and /dev/null differ diff --git a/mandel/r48.png b/mandel/r48.png deleted file mode 100755 index 52466f2..0000000 Binary files a/mandel/r48.png and /dev/null differ diff --git a/mandel/r49.png b/mandel/r49.png deleted file mode 100755 index 67a1bc5..0000000 Binary files a/mandel/r49.png and /dev/null differ diff --git a/mandel/r5.png b/mandel/r5.png deleted file mode 100755 index 0166d31..0000000 Binary files a/mandel/r5.png and /dev/null differ diff --git a/mandel/r50.png b/mandel/r50.png deleted file mode 100755 index 70956ba..0000000 Binary files a/mandel/r50.png and /dev/null differ diff --git a/mandel/r51.png b/mandel/r51.png deleted file mode 100755 index 99ed118..0000000 Binary files a/mandel/r51.png and /dev/null differ diff --git a/mandel/r52.png b/mandel/r52.png deleted file mode 100755 index 8abe671..0000000 Binary files a/mandel/r52.png and /dev/null differ diff --git a/mandel/r53.png b/mandel/r53.png deleted file mode 100755 index 1788fdd..0000000 Binary files a/mandel/r53.png and /dev/null differ diff --git a/mandel/r54.png b/mandel/r54.png deleted file mode 100755 index 7f14e32..0000000 Binary files a/mandel/r54.png and /dev/null differ diff --git a/mandel/r55.png b/mandel/r55.png deleted file mode 100755 index 001e257..0000000 Binary files a/mandel/r55.png and /dev/null differ diff --git a/mandel/r56.png b/mandel/r56.png deleted file mode 100755 index 84b4dfe..0000000 Binary files a/mandel/r56.png and /dev/null differ diff --git a/mandel/r57.png b/mandel/r57.png deleted file mode 100755 index 1206d1d..0000000 Binary files a/mandel/r57.png and /dev/null differ diff --git a/mandel/r58.png b/mandel/r58.png deleted file mode 100755 index ffacacc..0000000 Binary files a/mandel/r58.png and /dev/null differ diff --git a/mandel/r59.png b/mandel/r59.png deleted file mode 100755 index 9391203..0000000 Binary files a/mandel/r59.png and /dev/null differ diff --git a/mandel/r6.png b/mandel/r6.png deleted file mode 100755 index e0f39f1..0000000 Binary files a/mandel/r6.png and /dev/null differ diff --git a/mandel/r60.png b/mandel/r60.png deleted file mode 100755 index ed84942..0000000 Binary files a/mandel/r60.png and /dev/null differ diff --git a/mandel/r61.png b/mandel/r61.png deleted file mode 100755 index 69de953..0000000 Binary files a/mandel/r61.png and /dev/null differ diff --git a/mandel/r62.png b/mandel/r62.png deleted file mode 100755 index bb09452..0000000 Binary files a/mandel/r62.png and /dev/null differ diff --git a/mandel/r63.png b/mandel/r63.png deleted file mode 100755 index 8be5691..0000000 Binary files a/mandel/r63.png and /dev/null differ diff --git a/mandel/r64.png b/mandel/r64.png deleted file mode 100755 index a3a3a15..0000000 Binary files a/mandel/r64.png and /dev/null differ diff --git a/mandel/r65.png b/mandel/r65.png deleted file mode 100755 index 5d4246e..0000000 Binary files a/mandel/r65.png and /dev/null differ diff --git a/mandel/r66.png b/mandel/r66.png deleted file mode 100755 index 0375d22..0000000 Binary files a/mandel/r66.png and /dev/null differ diff --git a/mandel/r67.png b/mandel/r67.png deleted file mode 100755 index 5eb7cd7..0000000 Binary files a/mandel/r67.png and /dev/null differ diff --git a/mandel/r68.png b/mandel/r68.png deleted file mode 100755 index b3b85e2..0000000 Binary files a/mandel/r68.png and /dev/null differ diff --git a/mandel/r69.png b/mandel/r69.png deleted file mode 100755 index cbb3453..0000000 Binary files a/mandel/r69.png and /dev/null differ diff --git a/mandel/r7.png b/mandel/r7.png deleted file mode 100755 index ae8e9e2..0000000 Binary files a/mandel/r7.png and /dev/null differ diff --git a/mandel/r70.png b/mandel/r70.png deleted file mode 100755 index 6fdbd91..0000000 Binary files a/mandel/r70.png and /dev/null differ diff --git a/mandel/r71.png b/mandel/r71.png deleted file mode 100755 index 6237c44..0000000 Binary files a/mandel/r71.png and /dev/null differ diff --git a/mandel/r72.png b/mandel/r72.png deleted file mode 100755 index 487e37e..0000000 Binary files a/mandel/r72.png and /dev/null differ diff --git a/mandel/r73.png b/mandel/r73.png deleted file mode 100755 index a04fa6b..0000000 Binary files a/mandel/r73.png and /dev/null differ diff --git a/mandel/r74.png b/mandel/r74.png deleted file mode 100755 index e59c83c..0000000 Binary files a/mandel/r74.png and /dev/null differ diff --git a/mandel/r75.png b/mandel/r75.png deleted file mode 100755 index e04d368..0000000 Binary files a/mandel/r75.png and /dev/null differ diff --git a/mandel/r76.png b/mandel/r76.png deleted file mode 100755 index 601b9b1..0000000 Binary files a/mandel/r76.png and /dev/null differ diff --git a/mandel/r77.png b/mandel/r77.png deleted file mode 100755 index d408d09..0000000 Binary files a/mandel/r77.png and /dev/null differ diff --git a/mandel/r78.png b/mandel/r78.png deleted file mode 100755 index 46a863b..0000000 Binary files a/mandel/r78.png and /dev/null differ diff --git a/mandel/r79.png b/mandel/r79.png deleted file mode 100755 index 50c4a89..0000000 Binary files a/mandel/r79.png and /dev/null differ diff --git a/mandel/r8.png b/mandel/r8.png deleted file mode 100755 index d2f0b3a..0000000 Binary files a/mandel/r8.png and /dev/null differ diff --git a/mandel/r80.png b/mandel/r80.png deleted file mode 100755 index 67e87a7..0000000 Binary files a/mandel/r80.png and /dev/null differ diff --git a/mandel/r81.png b/mandel/r81.png deleted file mode 100755 index 75ed888..0000000 Binary files a/mandel/r81.png and /dev/null differ diff --git a/mandel/r82.png b/mandel/r82.png deleted file mode 100755 index a8fe490..0000000 Binary files a/mandel/r82.png and /dev/null differ diff --git a/mandel/r83.png b/mandel/r83.png deleted file mode 100755 index ca2988b..0000000 Binary files a/mandel/r83.png and /dev/null differ diff --git a/mandel/r84.png b/mandel/r84.png deleted file mode 100755 index 2d9b267..0000000 Binary files a/mandel/r84.png and /dev/null differ diff --git a/mandel/r85.png b/mandel/r85.png deleted file mode 100755 index 86dd1f8..0000000 Binary files a/mandel/r85.png and /dev/null differ diff --git a/mandel/r86.png b/mandel/r86.png deleted file mode 100755 index f2f9382..0000000 Binary files a/mandel/r86.png and /dev/null differ diff --git a/mandel/r87.png b/mandel/r87.png deleted file mode 100755 index 1d64162..0000000 Binary files a/mandel/r87.png and /dev/null differ diff --git a/mandel/r88.png b/mandel/r88.png deleted file mode 100755 index 36c734e..0000000 Binary files a/mandel/r88.png and /dev/null differ diff --git a/mandel/r89.png b/mandel/r89.png deleted file mode 100755 index 6eff587..0000000 Binary files a/mandel/r89.png and /dev/null differ diff --git a/mandel/r9.png b/mandel/r9.png deleted file mode 100755 index 0f9f188..0000000 Binary files a/mandel/r9.png and /dev/null differ diff --git a/mandel/r90.png b/mandel/r90.png deleted file mode 100755 index c3825b3..0000000 Binary files a/mandel/r90.png and /dev/null differ diff --git a/mandel/r91.png b/mandel/r91.png deleted file mode 100755 index 4fbd971..0000000 Binary files a/mandel/r91.png and /dev/null differ diff --git a/mandel/r92.png b/mandel/r92.png deleted file mode 100755 index 0056790..0000000 Binary files a/mandel/r92.png and /dev/null differ diff --git a/mandel/r93.png b/mandel/r93.png deleted file mode 100755 index 931cfa5..0000000 Binary files a/mandel/r93.png and /dev/null differ diff --git a/mandel/r94.png b/mandel/r94.png deleted file mode 100755 index ef8853f..0000000 Binary files a/mandel/r94.png and /dev/null differ diff --git a/mandel/r95.png b/mandel/r95.png deleted file mode 100755 index 5f914cb..0000000 Binary files a/mandel/r95.png and /dev/null differ diff --git a/mandel/r96.png b/mandel/r96.png deleted file mode 100755 index 7eca3ec..0000000 Binary files a/mandel/r96.png and /dev/null differ diff --git a/mandel/r97.png b/mandel/r97.png deleted file mode 100755 index 4b27e72..0000000 Binary files a/mandel/r97.png and /dev/null differ diff --git a/mandel/r98.png b/mandel/r98.png deleted file mode 100755 index 9049c62..0000000 Binary files a/mandel/r98.png and /dev/null differ diff --git a/mandel/r99.png b/mandel/r99.png deleted file mode 100755 index 07a8e74..0000000 Binary files a/mandel/r99.png and /dev/null differ diff --git a/moritz.hpgl~ b/moritz.hpgl~ deleted file mode 100755 index 1d4acd5..0000000 --- a/moritz.hpgl~ +++ /dev/null @@ -1,425 +0,0 @@ -##sK1 1 2 -document() -layout('A4',(595.276,841.89),0) -grid((0,0,2.83465,2.83465),0,("RGB",0.0,0.0,1.0),'Gitter') -page('','A4',(595.276,841.89),0) -layer('PLT_objects',1,1,0,0,("RGB",0.196,0.314,0.635)) -lw(0.85) -lc(2) -lj(1) -b() -bs(68.9528,376.157,0) -bs(69.0945,375.945,0) -bs(69.3071,375.945,0) -bs(69.4488,376.087,0) -bs(71.9291,380.622,0) -bs(71.9291,380.622,0) -bs(74.4094,376.087,0) -bs(74.622,375.945,0) -bs(74.7638,375.945,0) -bs(74.9764,376.157,0) -bs(76.1811,383.244,0) -bs(75.9685,383.528,0) -bs(74.6929,383.528,0) -bs(74.4803,383.315,0) -bs(74.0551,380.055,0) -bs(73.9843,380.055,0) -bs(72.2126,383.457,0) -bs(72.0709,383.598,0) -bs(71.8583,383.598,0) -bs(71.6457,383.457,0) -bs(69.874,380.055,0) -bs(69.874,380.055,0) -bs(69.378,383.315,0) -bs(69.1654,383.528,0) -bs(67.9606,383.528,0) -bs(67.748,383.244,0) -bs(68.9528,376.157,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(80.1496,382.252,0) -bs(80.7874,381.969,0) -bs(81,381.331,0) -bs(80.7874,380.764,0) -bs(80.1496,380.48,0) -bs(79.5827,380.764,0) -bs(79.3701,381.331,0) -bs(79.5827,381.969,0) -bs(80.1496,382.252,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(80.1496,379.134,0) -bs(81,379.346,0) -bs(81.7087,379.772,0) -bs(82.2047,380.48,0) -bs(82.4173,381.331,0) -bs(82.2047,382.252,0) -bs(81.7087,382.961,0) -bs(81,383.457,0) -bs(80.1496,383.598,0) -bs(79.2992,383.457,0) -bs(78.5906,382.961,0) -bs(78.1654,382.252,0) -bs(77.9528,381.331,0) -bs(78.1654,380.48,0) -bs(78.5906,379.772,0) -bs(79.2992,379.346,0) -bs(80.1496,379.134,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(84.2598,379.488,0) -bs(84.4724,379.276,0) -bs(84.9685,379.276,0) -bs(85.1811,379.346,0) -bs(85.3228,379.843,0) -bs(85.8189,379.346,0) -bs(86.5276,379.134,0) -bs(87.2362,379.276,0) -bs(87.378,379.63,0) -bs(86.811,380.48,0) -bs(86.5984,380.551,0) -bs(86.315,380.48,0) -bs(85.9606,380.693,0) -bs(85.8189,381.118,0) -bs(85.8189,383.315,0) -bs(85.5354,383.528,0) -bs(84.4724,383.528,0) -bs(84.2598,383.315,0) -bs(84.2598,379.488,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(89.0079,379.488,0) -bs(89.2205,379.276,0) -bs(90.3543,379.276,0) -bs(90.5669,379.488,0) -bs(90.5669,383.315,0) -bs(90.3543,383.528,0) -bs(89.2205,383.528,0) -bs(89.0079,383.315,0) -bs(89.0079,379.488,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(88.937,377.15,0) -bs(89.1496,376.512,0) -bs(89.7874,376.299,0) -bs(90.3543,376.512,0) -bs(90.6378,377.15,0) -bs(90.3543,377.717,0) -bs(89.7874,378,0) -bs(89.1496,377.717,0) -bs(88.937,377.15,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(92.9055,380.622,0) -bs(92.622,380.622,0) -bs(92.4094,380.409,0) -bs(92.4094,379.488,0) -bs(92.622,379.276,0) -bs(92.9055,379.276,0) -bs(92.9055,378.071,0) -bs(93.1181,377.858,0) -bs(94.252,377.858,0) -bs(94.4646,378.071,0) -bs(94.4646,379.276,0) -bs(95.2441,379.276,0) -bs(95.4567,379.488,0) -bs(95.4567,380.409,0) -bs(95.2441,380.622,0) -bs(94.4646,380.622,0) -bs(94.4646,381.898,0) -bs(94.5354,382.11,0) -bs(94.748,382.181,0) -bs(95.1024,382.11,0) -bs(95.3858,382.252,0) -bs(95.5984,383.102,0) -bs(95.4567,383.386,0) -bs(94.1811,383.598,0) -bs(93.2598,383.244,0) -bs(92.9055,382.11,0) -bs(92.9055,380.622,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(97.2283,383.173,0) -bs(98.4331,380.622,0) -bs(98.4331,380.622,0) -bs(97.5118,380.622,0) -bs(97.2992,380.409,0) -bs(97.2992,379.488,0) -bs(97.5118,379.276,0) -bs(100.346,379.276,0) -bs(100.559,379.559,0) -bs(99.2126,382.11,0) -bs(99.2126,382.11,0) -bs(100.205,382.11,0) -bs(100.346,382.323,0) -bs(100.346,383.315,0) -bs(100.205,383.528,0) -bs(97.4409,383.528,0) -bs(97.2283,383.315,0) -bs(97.2283,383.173,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(106.157,376.299,0) -bs(106.37,376.087,0) -bs(107.646,376.087,0) -bs(107.858,376.299,0) -bs(107.858,378.921,0) -bs(110.906,378.921,0) -bs(110.906,376.299,0) -bs(111.118,376.087,0) -bs(112.323,376.087,0) -bs(112.535,376.299,0) -bs(112.535,383.315,0) -bs(112.323,383.528,0) -bs(111.118,383.528,0) -bs(110.906,383.315,0) -bs(110.906,380.48,0) -bs(107.858,380.48,0) -bs(107.858,383.315,0) -bs(107.646,383.528,0) -bs(106.37,383.528,0) -bs(106.157,383.315,0) -bs(106.157,376.299,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(117.567,377.079,0) -bs(117.78,376.512,0) -bs(118.276,376.299,0) -bs(118.772,376.512,0) -bs(119.055,377.079,0) -bs(118.772,377.575,0) -bs(118.276,377.787,0) -bs(117.78,377.575,0) -bs(117.567,377.079,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(115.37,377.079,0) -bs(115.583,376.512,0) -bs(116.079,376.299,0) -bs(116.646,376.512,0) -bs(116.858,377.079,0) -bs(116.646,377.575,0) -bs(116.079,377.787,0) -bs(115.583,377.575,0) -bs(115.37,377.079,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(115.016,379.488,0) -bs(115.157,379.276,0) -bs(116.291,379.276,0) -bs(116.504,379.488,0) -bs(116.504,381.402,0) -bs(116.717,381.969,0) -bs(117.213,382.252,0) -bs(117.709,381.969,0) -bs(117.85,381.472,0) -bs(117.85,379.488,0) -bs(118.063,379.276,0) -bs(119.126,379.276,0) -bs(119.339,379.488,0) -bs(119.339,383.315,0) -bs(119.126,383.528,0) -bs(118.63,383.528,0) -bs(118.417,383.315,0) -bs(118.276,382.961,0) -bs(117.78,383.386,0) -bs(116.858,383.598,0) -bs(116.008,383.457,0) -bs(115.441,382.961,0) -bs(115.087,382.252,0) -bs(115.016,381.402,0) -bs(115.016,379.488,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(121.748,380.622,0) -bs(121.465,380.622,0) -bs(121.252,380.409,0) -bs(121.252,379.488,0) -bs(121.465,379.276,0) -bs(121.748,379.276,0) -bs(121.748,378.071,0) -bs(121.961,377.858,0) -bs(123.094,377.858,0) -bs(123.236,378.071,0) -bs(123.236,379.276,0) -bs(124.016,379.276,0) -bs(124.228,379.488,0) -bs(124.228,380.409,0) -bs(124.016,380.622,0) -bs(123.236,380.622,0) -bs(123.236,381.898,0) -bs(123.378,382.11,0) -bs(123.52,382.181,0) -bs(123.945,382.11,0) -bs(124.157,382.252,0) -bs(124.441,383.102,0) -bs(124.299,383.386,0) -bs(123.024,383.598,0) -bs(122.031,383.244,0) -bs(121.748,382.11,0) -bs(121.748,380.622,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(126.425,380.622,0) -bs(126.142,380.622,0) -bs(126,380.409,0) -bs(126,379.488,0) -bs(126.142,379.276,0) -bs(126.425,379.276,0) -bs(126.425,378.071,0) -bs(126.638,377.858,0) -bs(127.772,377.858,0) -bs(127.984,378.071,0) -bs(127.984,379.276,0) -bs(128.764,379.276,0) -bs(128.976,379.488,0) -bs(128.976,380.409,0) -bs(128.764,380.622,0) -bs(127.984,380.622,0) -bs(127.984,381.898,0) -bs(128.055,382.11,0) -bs(128.268,382.181,0) -bs(128.693,382.11,0) -bs(128.906,382.252,0) -bs(129.118,383.102,0) -bs(128.976,383.386,0) -bs(127.701,383.598,0) -bs(126.78,383.244,0) -bs(126.425,382.11,0) -bs(126.425,380.622,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(130.961,379.488,0) -bs(131.173,379.276,0) -bs(131.669,379.276,0) -bs(131.882,379.346,0) -bs(132.024,379.772,0) -bs(132.591,379.346,0) -bs(133.583,379.134,0) -bs(134.433,379.346,0) -bs(135.071,379.772,0) -bs(135.425,380.48,0) -bs(135.567,381.331,0) -bs(135.567,383.315,0) -bs(135.354,383.528,0) -bs(134.22,383.528,0) -bs(134.008,383.315,0) -bs(134.008,381.331,0) -bs(133.866,380.764,0) -bs(133.299,380.551,0) -bs(132.732,380.693,0) -bs(132.52,381.26,0) -bs(132.52,383.315,0) -bs(132.307,383.528,0) -bs(131.173,383.528,0) -bs(130.961,383.315,0) -bs(130.961,379.488,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(140.102,380.764,0) -bs(139.89,380.409,0) -bs(139.535,380.268,0) -bs(139.11,380.409,0) -bs(138.898,380.764,0) -bs(140.102,380.764,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(139.535,379.134,0) -bs(140.315,379.276,0) -bs(140.953,379.701,0) -bs(141.378,380.339,0) -bs(141.591,381.118,0) -bs(141.52,381.402,0) -bs(141.307,381.614,0) -bs(138.827,381.614,0) -bs(139.039,382.039,0) -bs(139.606,382.323,0) -bs(140.386,382.039,0) -bs(140.598,382.039,0) -bs(141.165,382.677,0) -bs(141.165,383.031,0) -bs(140.457,383.457,0) -bs(139.535,383.598,0) -bs(138.685,383.457,0) -bs(137.976,382.961,0) -bs(137.551,382.252,0) -bs(137.339,381.402,0) -bs(137.551,380.551,0) -bs(137.976,379.843,0) -bs(138.685,379.346,0) -bs(139.535,379.134,0) -bC() -lw(0.85) -lc(2) -lj(1) -b() -bs(143.433,379.488,0) -bs(143.646,379.276,0) -bs(144.142,379.276,0) -bs(144.283,379.346,0) -bs(144.496,379.843,0) -bs(144.992,379.346,0) -bs(145.63,379.134,0) -bs(146.339,379.276,0) -bs(146.48,379.63,0) -bs(145.984,380.48,0) -bs(145.772,380.551,0) -bs(145.488,380.48,0) -bs(145.134,380.693,0) -bs(144.921,381.118,0) -bs(144.921,383.315,0) -bs(144.709,383.528,0) -bs(143.646,383.528,0) -bs(143.433,383.315,0) -bs(143.433,379.488,0) -bC() -masterlayer('MasterLayer 1',1,1,0,0,("RGB",0.196,0.314,0.635)) -guidelayer('Hilfslinien',1,0,0,1,("RGB",0.0,0.3,1.0)) diff --git a/oldpy/backupcg5-class_backup.py b/oldpy/backupcg5-class_backup.py deleted file mode 100755 index 68f3c64..0000000 --- a/oldpy/backupcg5-class_backup.py +++ /dev/null @@ -1,165 +0,0 @@ -from __future__ import division -import serial - - - -class Command: - - def __init__(self, name, *args): - self.name = name # hpgl Command name e.g. PU, PA, - self.args = args # list of Position args - - @property - def x(self): - return self.args[0] \ - if self.name in ("PA", "PD", "PR", "PU" ) and self.args else \ - None # Only these Commads have args - - @property - def y(self): - return self.args[1] \ - if self.name in ("PA", "PD", "PR", "PU" ) and self.args else \ - None - - def __str__(self): - return self.name + ",".join(str(arg) for arg in self.args) + ";" - - def __mul__(self, factor): - if self.name not in ("PA", "PD", "PR", "PU" ) or not self.args: - return self - if type(factor) == type(0) or type(factor) == type(0.0): - factor = (factor, factor) - return Command(self.name, - int(self.x * factor[0]), - int(self.y * factor[1])) - - def __add__(self, addend): - if self.name not in ("PA", "PD", "PR", "PU" ) or not self.args: - return self - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return Command(self.name, - int(self.x + addend[0]), - int(self.y + addend[1])) - - def __sub__(self, addend): - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return self + (-addend[0], -addend[1]) - -class Program: - - def __init__(self, commands=[]): - self.commands = commands - - def parsefile(self, filename): - with open(filename) as file: - self.parse( file.read()) - - def parse(self, code): - for command in code.strip().split(";")[:-1]: - name, args = command[:2], command[2:] - args = [int(arg) for arg in args.split(",")] if args else [] - #print name , args - self.commands.append(Command(name, *args)) - - def __str__(self): - return "".join(str(command) for command in self.commands) - - - def __mul__(self, arg): - return Program([command * arg for command in self.commands]) - - - def __add__(self, arg): - return Program([command + arg for command in self.commands]) - - def __sub__(self, arg): - return Program([command - arg for command in self.commands]) - - @property - def xmax(self): - return max(command.x for command in self.commands if command.x) - @property - def xmin(self): - return min(command.x for command in self.commands if command.x) - @property - def ymax(self): - return max(command.y for command in self.commands if command.y) - @property - def ymin(self): - return min(command.y for command in self.commands if command.y) - @property - def center(self): - return (self.xmin+self.ymin)/2,(self.ymin+self.ymax)/2 - @property - def size(self): return self.xmax-self.xmin , self.yax - self.ymin - - - -class Plotter: - - def __init__(self): - try: - self.ser = serial.Serial('/dev/ttyUSB0', 9600) - self.ser.write('OW;') - s = [] - if not s: - print 'I/O Fehler ist der Plotter bereit' - while True: - x = self.ser.read() - if x == "\x0d": - break - s.append(x) - self.__boundaries = tuple(int(x) for x in "".join(s).split(",")) - - except OSError: - self.__boundaries = 0,0,0,0 - print "No such file or directory: '/dev/ttyUSB0'" - - - - - @property - def xmin(self): - return self.__boundaries[0] - - @property - def ymin(self): - return self.__boundaries[1] - - @property - def xmax(self): - return self.__boundaries[2] - - @property - def ymax(self): - return self.__boundaries[3] - - @property - def center(self): - return (self.xmin + self.xmax)/2, (self.ymin + self.ymax)/2 - - def write(self,programm): - self.ser.write(str(programm)) - @property - def winsize(self): return self.xmax-self.xmin , self.yax - self.ymin - - - - -p = Program() -p.parsefile("Clitoris.hpgl" ) -#print p - -p=p*(1.2,-1.2) -p= p-(4000,-4500) -plt=Plotter() -print p.xmax -print p.ymax -print p.xmin -print p.ymin -print p.center -#plt.write(p) -#print getWin() - diff --git a/oldpy/cg5-boolean_exp.py b/oldpy/cg5-boolean_exp.py deleted file mode 100755 index 429d5a3..0000000 --- a/oldpy/cg5-boolean_exp.py +++ /dev/null @@ -1,280 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import division -import serial -import time -import math - - - - - -class Command: - inicoms= ("IN", "SP", "LT") - scalecoms=("PA", "PD", "PR", "PU", "CI" ) - movecoms=("PA", "PD", "PR", "PU" ) - - def __init__(self, name, *args): - self.name = name # hpgl Command name e.g. PU, PA, - self.args = args # list of Position args - - @property - def scalable(self): - return True \ - if self.name in Command.scalecoms and self.args else \ - False - @property - def movable(self): - return True \ - if self.name in Command.movecoms and self.args else \ - False - - @property - def x(self): - return self.args[0] \ - if self.movable else\ - None - - @property - def y(self): - return self.args[1] \ - if self.movable else\ - None - - def __len__(self): - return len(str(self)) - - def __str__(self): - return self.name + ",".join(str(arg) for arg in self.args) + ";" - - def __mul__(self, factor): - if not self.scalable: - return self - if type(factor) == type(0) or type(factor) == type(0.0): - factor = (factor, factor) - return Command(self.name, - int(self.args[0] * factor[0]), - int(self.args[1] * factor[1])) \ - if len(self.args)>1 else\ - Command(self.name,int(self.args[0]*factor[0]) ) - - def __add__(self, addend): - if not self.movable: - return self - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return Command(self.name, - int(self.x + addend[0]), - int(self.y + addend[1])) - - def __sub__(self, addend): - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return self + (-addend[0], -addend[1]) - - def rotate(self, angl): - if not self.movable: - return self - cosa=math.cos(angl*math.pi/180) - sina=math.sin(angl*math.pi/180) - return Command(self.name,int(self.x*cosa-self.y*sina),int(self.y*cosa+self.x*sina)) - - def flip(self): - if not self.movable: - return self - return Command(self.name,self.y,-self.x) - -class Program: - - def __init__(self, commands=[]): - self.commands = commands - - def parsefile(self, filename): - with open(filename) as file: - self.parse( file.read()) - - def parse(self, code): - for command in code.strip().split(";")[:-1]: - name, args = command[:2], command[2:] - args = [int(arg) for arg in args.split(",")] if args else [] - #print name , args - self.commands.append(Command(name, *args)) - - def __str__(self): - return "".join(str(command) for command in self.commands) - - - def __mul__(self, arg): - return Program([command * arg for command in self.commands]) - - - def __add__(self, arg): - return Program([command + arg for command in self.commands]) - - def __sub__(self, arg): - return Program([command - arg for command in self.commands]) - - def __len__(self): - return len(str(self)) - - - def rotate(self, angl): - return Program([command.rotate(angl) for command in self.commands]) - - def flip(self): - return Program([command.flip() for command in self.commands]) - - - - @property - def xmax(self): - return max(command.x for command in self.commands if command.x and command.movable) - @property - def xmin(self): - return min(command.x for command in self.commands if command.x and command.movable) - @property - def ymax(self): - return max(command.y for command in self.commands if command.y and command.movable) - @property - def ymin(self): - return min(command.y for command in self.commands if command.y and command.movable) - @property - def center(self): - #return 42 - return int((self.xmin+self.xmax)/2),int((self.ymin+self.ymax)/2) - @property - def size(self): return self.xmax-self.xmin , self.yax - self.ymin - - @property - def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin - - def centralize(self): - return self-self.center - - @property - def oob(self, pltr): - return (self.xmax > pltr.xmax or self.xmin < pltr.xmin or self.ymin < pltr.ymin or self.ymax > pltr.ymax) - - def full(self,pltr): - arg = min(pltr.winsize[0]/self.winsize[0],pltr.winsize[1]/self.winsize[1]) - return self*arg - - - - - - -class Plotter: - - def __init__(self): - try: - print 'try to open Serial' - self.ser = serial.Serial('/dev/ttyUSB0', 9600,serial.EIGHTBITS,serial.PARITY_NONE,serial.STOPBITS_ONE,15) - print ' sending: OW;' - self.ser.write('OW;') - print 'OW; sent, start reading' - s = [] - - - while True: - x = self.ser.read() - if x == "\x0d": - break - s.append(x) - if not s: - print 'I/O Fehler ist der Plotter bereit' - print 'Gerät sagt:' + str(s) - self.__boundaries = tuple(int(x) for x in "".join(s).split(",")) - - except OSError: - self.__boundaries = -2000,-2000,2000,2000 - self.ser=None - print "No such file or directory: '/dev/ttyUSB0'" - - - - - @property - def xmin(self): - return self.__boundaries[0] - - @property - def ymin(self): - return self.__boundaries[1] - - @property - def xmax(self): - return self.__boundaries[2] - - @property - def ymax(self): - return self.__boundaries[3] - - @property - def center(self): - return (self.xmin + self.xmax)/2, (self.ymin + self.ymax)/2 - - def write(self,programm): - self.ser.write(str(programm)) - - @property - def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin - - - def oob(self,p): - return (p.xmax > self.xmax or p.xmin < self.xmin or p.ymin < self.ymin or p.ymax > self.ymax) - - @property - def ready(self): - try: - print 'try to get Status' - if not self.ser: - - return False - self.ser.write('OS;') - print 'OW; sent, start reading' - s = [] - while True: - x = self.ser.read() - if x == "\x0d": - break - s.append(x) - if not s: - return False - print s - return True - except OSError: - return False - - def plot(self,prog): - if (not self.oob(prog)) and self.ready: - self.write(prog) - - - - - - - - -plt=Plotter() -print "p" -p=Program() -#print plt.winsize -print "parsefile" -p.parsefile("sign") -#p=p.rotate(15) -#print str(p) -p=p*(-0.2,0.2) -#p=p.flip() -#p=p.full(plt) -p=p.centralize() - -#print str(p) -plt.plot(p) -print p.winsize -print len(p) -#print str(p) - - diff --git a/oldpy/cg5-class.py b/oldpy/cg5-class.py deleted file mode 100755 index aaad81e..0000000 --- a/oldpy/cg5-class.py +++ /dev/null @@ -1,183 +0,0 @@ -from __future__ import division -import serial - - - - - -class Command: - - def __init__(self, name, *args): - self.name = name # hpgl Command name e.g. PU, PA, - self.args = args # list of Position args - - @property - def x(self): - return self.args[0] \ - if self.name in ("PA", "PD", "PR", "PU" ) and self.args else \ - None # Only these Commads have args - - @property - def y(self): - return self.args[1] \ - if self.name in ("PA", "PD", "PR", "PU" ) and self.args else \ - None - - def __len__(self): - return len(str(self)) - - def __str__(self): - return self.name + ",".join(str(arg) for arg in self.args) + ";" - - def __mul__(self, factor): - if self.name not in ("PA", "PD", "PR", "PU" ) or not self.args: - return self - if type(factor) == type(0) or type(factor) == type(0.0): - factor = (factor, factor) - return Command(self.name, - int(self.x * factor[0]), - int(self.y * factor[1])) - - - def __add__(self, addend): - if self.name not in ("PA", "PD", "PR", "PU" ) or not self.args: - return self - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return Command(self.name, - int(self.x + addend[0]), - int(self.y + addend[1])) - - def __sub__(self, addend): - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return self + (-addend[0], -addend[1]) - -class Program: - - def __init__(self, commands=[]): - self.commands = commands - - def parsefile(self, filename): - with open(filename) as file: - self.parse( file.read()) - - def parse(self, code): - for command in code.strip().split(";")[:-1]: - name, args = command[:2], command[2:] - args = [int(arg) for arg in args.split(",")] if args else [] - #print name , args - self.commands.append(Command(name, *args)) - - def __str__(self): - return "".join(str(command) for command in self.commands) - - - def __mul__(self, arg): - return Program([command * arg for command in self.commands]) - - - def __add__(self, arg): - return Program([command + arg for command in self.commands]) - - def __sub__(self, arg): - return Program([command - arg for command in self.commands]) - - def __len__(self): - return len(str(self)) - - @property - def xmax(self): - return max(command.x for command in self.commands if command.x) - @property - def xmin(self): - return min(command.x for command in self.commands if command.x) - @property - def ymax(self): - return max(command.y for command in self.commands if command.y) - @property - def ymin(self): - return min(command.y for command in self.commands if command.y) - @property - def center(self): - return (self.xmin+self.xmax)/2,(self.ymin+self.ymax)/2 - @property - def size(self): return self.xmax-self.xmin , self.yax - self.ymin - - @property - def winsize(self): return self.xmax-self.xmin , self.ymax - self.ymin - - def centralize(self): - return self-self.center - #arg= self.center - #return Program([command - arg for command in self.commands]) - - def oob(self, pltr): - - return (self.xmax > pltr.xmax or self.xmin < pltr.xmin or self.ymin < pltr.ymin or self.ymax > pltr.ymax) - - def full(self,pltr): - arg = min(pltr.winsize[0]/self.winsize[0],pltr.winsize[1]/self.winsize[1]) - return Program([command * arg for command in self.commands]) - - -class Plotter: - - def __init__(self): - try: - self.ser = serial.Serial('/dev/ttyUSB0', 9600) - self.ser.write('OW;') - s = [] - while True: - x = self.ser.read() - if x == "\x0d": - break - s.append(x) - if not s: - print 'I/O Fehler ist der Plotter bereit' - self.__boundaries = tuple(int(x) for x in "".join(s).split(",")) - - except OSError: - self.__boundaries = -1000,-1000,1000,1000 - - print "No such file or directory: '/dev/ttyUSB0'" - - - - - @property - def xmin(self): - return self.__boundaries[0] - - @property - def ymin(self): - return self.__boundaries[1] - - @property - def xmax(self): - return self.__boundaries[2] - - @property - def ymax(self): - return self.__boundaries[3] - - @property - def center(self): - return (self.xmin + self.xmax)/2, (self.ymin + self.ymax)/2 - - def write(self,programm): - self.ser.write(str(programm)) - @property - def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin - - -plt=Plotter() -p=Program() -p.parsefile("kreis.hpgl" ) - - -print len(p) -plt.write(p) - - diff --git a/oldpy/cg5-class_1.py b/oldpy/cg5-class_1.py deleted file mode 100755 index 7094b81..0000000 --- a/oldpy/cg5-class_1.py +++ /dev/null @@ -1,2769 +0,0 @@ -Python 2.7.9 (default, Mar 1 2015, 12:57:24) -[GCC 4.9.2] on linux2 -Type "copyright", "credits" or "license()" for more information. ->>> ================================ RESTART ================================ ->>> - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 82, in - print p*2 - File "/home/lukas/mimaki/cg5-class.py", line 68, in __mul__ - return Program([command * arg for command in self.commands]) - File "/home/lukas/mimaki/cg5-class.py", line 26, in __mul__ - int(self.x * factor[0]), - File "/home/lukas/mimaki/cg5-class.py", line 11, in x - return self.args[0] -IndexError: tuple index out of range - ->>> ================================ RESTART ================================ ->>> - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 82, in - print p*2 - File "/home/lukas/mimaki/cg5-class.py", line 68, in __mul__ - return Program([command * arg for command in self.commands]) - File "/home/lukas/mimaki/cg5-class.py", line 26, in __mul__ - int(self.x * factor[0]), - File "/home/lukas/mimaki/cg5-class.py", line 11, in x - return self.args[0] -IndexError: tuple index out of range ->>> ================================ RESTART ================================ ->>> - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 82, in - print p*2 - File "/home/lukas/mimaki/cg5-class.py", line 68, in __mul__ - return Program([command * arg for command in self.commands]) - File "/home/lukas/mimaki/cg5-class.py", line 26, in __mul__ - int(self.x * factor[0]), - File "/home/lukas/mimaki/cg5-class.py", line 11, in x - return self.args[0] -IndexError: tuple index out of range ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 83, in - print p*2 - File "/home/lukas/mimaki/cg5-class.py", line 69, in __mul__ - return Program([command * arg for command in self.commands]) - File "/home/lukas/mimaki/cg5-class.py", line 26, in __mul__ - int(self.x * factor[0]), - File "/home/lukas/mimaki/cg5-class.py", line 11, in x - return self.args[0] -IndexError: tuple index out of range ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -IN;SP1;PU812,3172;PD812,338;PD1552,338;PD2124,336;PD2306,336;PD2396,344;PD2490,376;PD2562,414;PD2616,452;PD2654,492;PD2680,534;PD2698,572;PD2726,640;PD2748,696;PD2764,766;PD2778,978;PD2776,1840;PD2778,2466;PD2778,2680;PD2772,2784;PD2744,2870;PD2700,2936;PD2638,2984;PD2558,3016;PD2476,3036;PD2438,3048;PD2482,3060;PD2568,3074;PD2646,3106;PD2702,3146;PD2734,3188;PD2754,3238;PD2768,3314;PD2776,3430;PD2778,3838;PD2776,4584;PD2748,5720;PD2770,5806;PD2782,5828;PD2800,5848;PD2850,5878;PD2902,5894;PD2942,5898;PD2972,5900;PD2990,5906;PD3000,5922;PD3002,5948;PD3002,6004;PD2540,6004;PD2076,6004;PD2076,4722;PD2070,3618;PD2058,3450;PD2048,3418;PD2034,3400;PD2004,3382;PD1952,3370;PD1742,3364;PD1490,3364;PD1490,4684;PD1490,6004;PD1150,6004;PD812,6004;PD812,3172;PU2026,2740;PD2078,2686;PD2076,1866;PD2070,1162;PD2058,1036;PD2050,1006;PD2038,988;PD2010,968;PD1962,954;PD1746,948;PD1490,948;PD1490,1872;PD1490,2798;PD1730,2798;PD1860,2796;PD1940,2784;PD1990,2766;PD2026,2740;PD2026,2740;PU3448,5956;PD3398,5928;PD3358,5888;PD3324,5840;PD3296,5786;PD3276,5726;PD3262,5664;PD3252,5536;PD3262,5456;PD3288,5370;PD3328,5292;PD3384,5228;PD3470,5168;PD3564,5130;PD3660,5114;PD3756,5118;PD3848,5142;PD3932,5188;PD4006,5256;PD4066,5344;PD4092,5406;PD4104,5470;PD4106,5540;PD4102,5616;PD4086,5728;PD4054,5822;PD4032,5862;PD4002,5898;PD3964,5932;PD3918,5962;PD3868,5982;PD3810,5994;PD3680,6002;PD3550,5986;PD3448,5956;PD3448,5956;PU; ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -IN;SP1;PU408,1588;PD408,171;PD778,171;PD1064,170;PD1155,170;PD1200,174;PD1247,190;PD1283,209;PD1310,228;PD1329,248;PD1342,269;PD1351,288;PD1365,322;PD1376,350;PD1384,385;PD1391,491;PD1390,922;PD1391,1235;PD1391,1342;PD1388,1394;PD1374,1437;PD1352,1470;PD1321,1494;PD1281,1510;PD1240,1520;PD1221,1526;PD1243,1532;PD1286,1539;PD1325,1555;PD1353,1575;PD1369,1596;PD1379,1621;PD1386,1659;PD1390,1717;PD1391,1921;PD1390,2294;PD1376,2862;PD1387,2905;PD1393,2916;PD1402,2926;PD1427,2941;PD1453,2949;PD1473,2951;PD1488,2952;PD1497,2955;PD1502,2963;PD1503,2976;PD1503,3004;PD1272,3004;PD1040,3004;PD1040,2363;PD1037,1811;PD1031,1727;PD1026,1711;PD1019,1702;PD1004,1693;PD978,1687;PD873,1684;PD747,1684;PD747,2344;PD747,3004;PD577,3004;PD408,3004;PD408,1588;PU1015,1372;PD1041,1345;PD1040,935;PD1037,583;PD1031,520;PD1027,505;PD1021,496;PD1007,486;PD983,479;PD875,476;PD747,476;PD747,938;PD747,1401;PD867,1401;PD932,1400;PD972,1394;PD997,1385;PD1015,1372;PD1015,1372;PU1726,2980;PD1701,2966;PD1681,2946;PD1664,2922;PD1650,2895;PD1640,2865;PD1633,2834;PD1628,2770;PD1633,2730;PD1646,2687;PD1666,2648;PD1694,2616;PD1737,2586;PD1784,2567;PD1832,2559;PD1880,2561;PD1926,2573;PD1968,2596;PD2005,2630;PD2035,2674;PD2048,2705;PD2054,2737;PD2055,2772;PD2053,2810;PD2045,2866;PD2029,2913;PD2018,2933;PD2003,2951;PD1984,2968;PD1961,2983;PD1936,2993;PD1907,2999;PD1842,3003;PD1777,2995;PD1726,2980;PD1726,2980;PU; ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -IN;SP1;PU404,1584;PD404,167;PD774,167;PD1060,166;PD1151,166;PD1196,170;PD1243,186;PD1279,205;PD1306,224;PD1325,244;PD1338,265;PD1347,284;PD1361,318;PD1372,346;PD1380,381;PD1387,487;PD1386,918;PD1387,1231;PD1387,1338;PD1384,1390;PD1370,1433;PD1348,1466;PD1317,1490;PD1277,1506;PD1236,1516;PD1217,1522;PD1239,1528;PD1282,1535;PD1321,1551;PD1349,1571;PD1365,1592;PD1375,1617;PD1382,1655;PD1386,1713;PD1387,1917;PD1386,2290;PD1372,2858;PD1383,2901;PD1389,2912;PD1398,2922;PD1423,2937;PD1449,2945;PD1469,2947;PD1484,2948;PD1493,2951;PD1498,2959;PD1499,2972;PD1499,3000;PD1268,3000;PD1036,3000;PD1036,2359;PD1033,1807;PD1027,1723;PD1022,1707;PD1015,1698;PD1000,1689;PD974,1683;PD869,1680;PD743,1680;PD743,2340;PD743,3000;PD573,3000;PD404,3000;PD404,1584;PU1011,1368;PD1037,1341;PD1036,931;PD1033,579;PD1027,516;PD1023,501;PD1017,492;PD1003,482;PD979,475;PD871,472;PD743,472;PD743,934;PD743,1397;PD863,1397;PD928,1396;PD968,1390;PD993,1381;PD1011,1368;PD1011,1368;PU1722,2976;PD1697,2962;PD1677,2942;PD1660,2918;PD1646,2891;PD1636,2861;PD1629,2830;PD1624,2766;PD1629,2726;PD1642,2683;PD1662,2644;PD1690,2612;PD1733,2582;PD1780,2563;PD1828,2555;PD1876,2557;PD1922,2569;PD1964,2592;PD2001,2626;PD2031,2670;PD2044,2701;PD2050,2733;PD2051,2768;PD2049,2806;PD2041,2862;PD2025,2909;PD2014,2929;PD1999,2947;PD1980,2964;PD1957,2979;PD1932,2989;PD1903,2995;PD1838,2999;PD1773,2991;PD1722,2976;PD1722,2976;PU; ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -IN;SP1;PU0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PU0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PU0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PD0,0;PU; ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 84, in - print p/2 -TypeError: unsupported operand type(s) for /: 'instance' and 'int' ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 85, in - print p/2 -TypeError: unsupported operand type(s) for /: 'instance' and 'int' ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 88, in - print p/2 -TypeError: unsupported operand type(s) for /: 'instance' and 'int' ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 94, in - print p/2 -TypeError: unsupported operand type(s) for /: 'instance' and 'int' ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -IN;SP1;PU211,824;PD211,87;PD403,87;PD552,87;PD599,87;PD622,89;PD647,97;PD666,107;PD680,117;PD690,127;PD696,138;PD701,148;PD708,166;PD714,180;PD718,199;PD722,254;PD721,478;PD722,641;PD722,696;PD720,723;PD713,746;PD702,763;PD685,775;PD665,784;PD643,789;PD633,792;PD645,795;PD667,799;PD687,807;PD702,817;PD710,828;PD716,841;PD719,861;PD721,891;PD722,997;PD721,1191;PD714,1487;PD720,1509;PD723,1515;PD728,1520;PD741,1528;PD754,1532;PD764,1533;PD772,1534;PD777,1535;PD780,1539;PD780,1546;PD780,1561;PD660,1561;PD539,1561;PD539,1227;PD538,940;PD535,897;PD532,888;PD528,884;PD521,879;PD507,876;PD452,874;PD387,874;PD387,1217;PD387,1561;PD299,1561;PD211,1561;PD211,824;PU526,712;PD540,698;PD539,485;PD538,302;PD535,269;PD533,261;PD529,256;PD522,251;PD510,248;PD453,246;PD387,246;PD387,486;PD387,727;PD449,727;PD483,726;PD504,723;PD517,719;PD526,712;PD526,712;PU896,1548;PD883,1541;PD873,1530;PD864,1518;PD856,1504;PD851,1488;PD848,1472;PD845,1439;PD848,1418;PD854,1396;PD865,1375;PD879,1359;PD902,1343;PD926,1333;PD951,1329;PD976,1330;PD1000,1336;PD1022,1348;PD1041,1366;PD1057,1389;PD1063,1405;PD1067,1422;PD1067,1440;PD1066,1460;PD1062,1489;PD1054,1513;PD1048,1524;PD1040,1533;PD1030,1542;PD1018,1550;PD1005,1555;PD990,1558;PD956,1560;PD923,1556;PD896,1548;PD896,1548;PU; ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -IN;SP1;PU-116,1064;PD-116,-353;PD254,-353;PD540,-354;PD631,-354;PD676,-350;PD723,-334;PD759,-315;PD786,-296;PD805,-276;PD818,-255;PD827,-236;PD841,-202;PD852,-174;PD860,-139;PD867,-33;PD866,398;PD867,711;PD867,818;PD864,870;PD850,913;PD828,946;PD797,970;PD757,986;PD716,996;PD697,1002;PD719,1008;PD762,1015;PD801,1031;PD829,1051;PD845,1072;PD855,1097;PD862,1135;PD866,1193;PD867,1397;PD866,1770;PD852,2338;PD863,2381;PD869,2392;PD878,2402;PD903,2417;PD929,2425;PD949,2427;PD964,2428;PD973,2431;PD978,2439;PD979,2452;PD979,2480;PD748,2480;PD516,2480;PD516,1839;PD513,1287;PD507,1203;PD502,1187;PD495,1178;PD480,1169;PD454,1163;PD349,1160;PD223,1160;PD223,1820;PD223,2480;PD53,2480;PD-116,2480;PD-116,1064;PU491,848;PD517,821;PD516,411;PD513,59;PD507,-4;PD503,-19;PD497,-28;PD483,-38;PD459,-45;PD351,-48;PD223,-48;PD223,414;PD223,877;PD343,877;PD408,876;PD448,870;PD473,861;PD491,848;PD491,848;PU1202,2456;PD1177,2442;PD1157,2422;PD1140,2398;PD1126,2371;PD1116,2341;PD1109,2310;PD1104,2246;PD1109,2206;PD1122,2163;PD1142,2124;PD1170,2092;PD1213,2062;PD1260,2043;PD1308,2035;PD1356,2037;PD1402,2049;PD1444,2072;PD1481,2106;PD1511,2150;PD1524,2181;PD1530,2213;PD1531,2248;PD1529,2286;PD1521,2342;PD1505,2389;PD1494,2409;PD1479,2427;PD1460,2444;PD1437,2459;PD1412,2469;PD1383,2475;PD1318,2479;PD1253,2471;PD1202,2456;PD1202,2456;PU; ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -IN;SP1;PU-116,1064;PD-116,-353;PD254,-353;PD540,-354;PD631,-354;PD676,-350;PD723,-334;PD759,-315;PD786,-296;PD805,-276;PD818,-255;PD827,-236;PD841,-202;PD852,-174;PD860,-139;PD867,-33;PD866,398;PD867,711;PD867,818;PD864,870;PD850,913;PD828,946;PD797,970;PD757,986;PD716,996;PD697,1002;PD719,1008;PD762,1015;PD801,1031;PD829,1051;PD845,1072;PD855,1097;PD862,1135;PD866,1193;PD867,1397;PD866,1770;PD852,2338;PD863,2381;PD869,2392;PD878,2402;PD903,2417;PD929,2425;PD949,2427;PD964,2428;PD973,2431;PD978,2439;PD979,2452;PD979,2480;PD748,2480;PD516,2480;PD516,1839;PD513,1287;PD507,1203;PD502,1187;PD495,1178;PD480,1169;PD454,1163;PD349,1160;PD223,1160;PD223,1820;PD223,2480;PD53,2480;PD-116,2480;PD-116,1064;PU491,848;PD517,821;PD516,411;PD513,59;PD507,-4;PD503,-19;PD497,-28;PD483,-38;PD459,-45;PD351,-48;PD223,-48;PD223,414;PD223,877;PD343,877;PD408,876;PD448,870;PD473,861;PD491,848;PD491,848;PU1202,2456;PD1177,2442;PD1157,2422;PD1140,2398;PD1126,2371;PD1116,2341;PD1109,2310;PD1104,2246;PD1109,2206;PD1122,2163;PD1142,2124;PD1170,2092;PD1213,2062;PD1260,2043;PD1308,2035;PD1356,2037;PD1402,2049;PD1444,2072;PD1481,2106;PD1511,2150;PD1524,2181;PD1530,2213;PD1531,2248;PD1529,2286;PD1521,2342;PD1505,2389;PD1494,2409;PD1479,2427;PD1460,2444;PD1437,2459;PD1412,2469;PD1383,2475;PD1318,2479;PD1253,2471;PD1202,2456;PD1202,2456;PU; ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -xmax 2053 -IN;SP1;PU-116,1064;PD-116,-353;PD254,-353;PD540,-354;PD631,-354;PD676,-350;PD723,-334;PD759,-315;PD786,-296;PD805,-276;PD818,-255;PD827,-236;PD841,-202;PD852,-174;PD860,-139;PD867,-33;PD866,398;PD867,711;PD867,818;PD864,870;PD850,913;PD828,946;PD797,970;PD757,986;PD716,996;PD697,1002;PD719,1008;PD762,1015;PD801,1031;PD829,1051;PD845,1072;PD855,1097;PD862,1135;PD866,1193;PD867,1397;PD866,1770;PD852,2338;PD863,2381;PD869,2392;PD878,2402;PD903,2417;PD929,2425;PD949,2427;PD964,2428;PD973,2431;PD978,2439;PD979,2452;PD979,2480;PD748,2480;PD516,2480;PD516,1839;PD513,1287;PD507,1203;PD502,1187;PD495,1178;PD480,1169;PD454,1163;PD349,1160;PD223,1160;PD223,1820;PD223,2480;PD53,2480;PD-116,2480;PD-116,1064;PU491,848;PD517,821;PD516,411;PD513,59;PD507,-4;PD503,-19;PD497,-28;PD483,-38;PD459,-45;PD351,-48;PD223,-48;PD223,414;PD223,877;PD343,877;PD408,876;PD448,870;PD473,861;PD491,848;PD491,848;PU1202,2456;PD1177,2442;PD1157,2422;PD1140,2398;PD1126,2371;PD1116,2341;PD1109,2310;PD1104,2246;PD1109,2206;PD1122,2163;PD1142,2124;PD1170,2092;PD1213,2062;PD1260,2043;PD1308,2035;PD1356,2037;PD1402,2049;PD1444,2072;PD1481,2106;PD1511,2150;PD1524,2181;PD1530,2213;PD1531,2248;PD1529,2286;PD1521,2342;PD1505,2389;PD1494,2409;PD1479,2427;PD1460,2444;PD1437,2459;PD1412,2469;PD1383,2475;PD1318,2479;PD1253,2471;PD1202,2456;PD1202,2456;PU; ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -xmax 2053 - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 98, in - print p.center - File "/home/lukas/mimaki/cg5-class.py", line 91, in center - return (self.xmin+self.ymin)/2,(self.ymin+self.ymax)/2 -TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType' ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -xmax 2053 -2053 -3002 - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 100, in - print p.center - File "/home/lukas/mimaki/cg5-class.py", line 91, in center - return (self.xmin+self.ymin)/2,(self.ymin+self.ymax)/2 -TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType' ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -xmax 2053 -2053 -3002 -None -None - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 102, in - print p.center - File "/home/lukas/mimaki/cg5-class.py", line 91, in center - return (self.xmin+self.ymin)/2,(self.ymin+self.ymax)/2 -TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType' ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -xmax 2053 -2053 - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 99, in - print p.ymax - File "/home/lukas/mimaki/cg5-class.py", line 85, in ymax - return max(command.y for command in self.commands if commad.x) - File "/home/lukas/mimaki/cg5-class.py", line 85, in - return max(command.y for command in self.commands if commad.x) -NameError: global name 'commad' is not defined ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -xmax 2053 -2053 -3002 -None -168 - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 102, in - print p.center - File "/home/lukas/mimaki/cg5-class.py", line 91, in center - return (self.xmin+self.ymin)/2,(self.ymin+self.ymax)/2 -TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -xmax 2053 -2053 -3002 -406 -168 -(287.0, 1585.0) ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -xmax 2053 -2053 -3002 -406 -168 -(287.0, 1585.0) - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 118, in - print getWin() -NameError: name 'getWin' is not defined ->>> ================================ RESTART ================================ ->>> -IN [] -SP [1] -PU [406, 1586] -PD [406, 169] -PD [776, 169] -PD [1062, 168] -PD [1153, 168] -PD [1198, 172] -PD [1245, 188] -PD [1281, 207] -PD [1308, 226] -PD [1327, 246] -PD [1340, 267] -PD [1349, 286] -PD [1363, 320] -PD [1374, 348] -PD [1382, 383] -PD [1389, 489] -PD [1388, 920] -PD [1389, 1233] -PD [1389, 1340] -PD [1386, 1392] -PD [1372, 1435] -PD [1350, 1468] -PD [1319, 1492] -PD [1279, 1508] -PD [1238, 1518] -PD [1219, 1524] -PD [1241, 1530] -PD [1284, 1537] -PD [1323, 1553] -PD [1351, 1573] -PD [1367, 1594] -PD [1377, 1619] -PD [1384, 1657] -PD [1388, 1715] -PD [1389, 1919] -PD [1388, 2292] -PD [1374, 2860] -PD [1385, 2903] -PD [1391, 2914] -PD [1400, 2924] -PD [1425, 2939] -PD [1451, 2947] -PD [1471, 2949] -PD [1486, 2950] -PD [1495, 2953] -PD [1500, 2961] -PD [1501, 2974] -PD [1501, 3002] -PD [1270, 3002] -PD [1038, 3002] -PD [1038, 2361] -PD [1035, 1809] -PD [1029, 1725] -PD [1024, 1709] -PD [1017, 1700] -PD [1002, 1691] -PD [976, 1685] -PD [871, 1682] -PD [745, 1682] -PD [745, 2342] -PD [745, 3002] -PD [575, 3002] -PD [406, 3002] -PD [406, 1586] -PU [1013, 1370] -PD [1039, 1343] -PD [1038, 933] -PD [1035, 581] -PD [1029, 518] -PD [1025, 503] -PD [1019, 494] -PD [1005, 484] -PD [981, 477] -PD [873, 474] -PD [745, 474] -PD [745, 936] -PD [745, 1399] -PD [865, 1399] -PD [930, 1398] -PD [970, 1392] -PD [995, 1383] -PD [1013, 1370] -PD [1013, 1370] -PU [1724, 2978] -PD [1699, 2964] -PD [1679, 2944] -PD [1662, 2920] -PD [1648, 2893] -PD [1638, 2863] -PD [1631, 2832] -PD [1626, 2768] -PD [1631, 2728] -PD [1644, 2685] -PD [1664, 2646] -PD [1692, 2614] -PD [1735, 2584] -PD [1782, 2565] -PD [1830, 2557] -PD [1878, 2559] -PD [1924, 2571] -PD [1966, 2594] -PD [2003, 2628] -PD [2033, 2672] -PD [2046, 2703] -PD [2052, 2735] -PD [2053, 2770] -PD [2051, 2808] -PD [2043, 2864] -PD [2027, 2911] -PD [2016, 2931] -PD [2001, 2949] -PD [1982, 2966] -PD [1959, 2981] -PD [1934, 2991] -PD [1905, 2997] -PD [1840, 3001] -PD [1775, 2993] -PD [1724, 2978] -PD [1724, 2978] -PU [] -IN;SP1;PU2406,2586;PD2406,1169;PD2776,1169;PD3062,1168;PD3153,1168;PD3198,1172;PD3245,1188;PD3281,1207;PD3308,1226;PD3327,1246;PD3340,1267;PD3349,1286;PD3363,1320;PD3374,1348;PD3382,1383;PD3389,1489;PD3388,1920;PD3389,2233;PD3389,2340;PD3386,2392;PD3372,2435;PD3350,2468;PD3319,2492;PD3279,2508;PD3238,2518;PD3219,2524;PD3241,2530;PD3284,2537;PD3323,2553;PD3351,2573;PD3367,2594;PD3377,2619;PD3384,2657;PD3388,2715;PD3389,2919;PD3388,3292;PD3374,3860;PD3385,3903;PD3391,3914;PD3400,3924;PD3425,3939;PD3451,3947;PD3471,3949;PD3486,3950;PD3495,3953;PD3500,3961;PD3501,3974;PD3501,4002;PD3270,4002;PD3038,4002;PD3038,3361;PD3035,2809;PD3029,2725;PD3024,2709;PD3017,2700;PD3002,2691;PD2976,2685;PD2871,2682;PD2745,2682;PD2745,3342;PD2745,4002;PD2575,4002;PD2406,4002;PD2406,2586;PU3013,2370;PD3039,2343;PD3038,1933;PD3035,1581;PD3029,1518;PD3025,1503;PD3019,1494;PD3005,1484;PD2981,1477;PD2873,1474;PD2745,1474;PD2745,1936;PD2745,2399;PD2865,2399;PD2930,2398;PD2970,2392;PD2995,2383;PD3013,2370;PD3013,2370;PU3724,3978;PD3699,3964;PD3679,3944;PD3662,3920;PD3648,3893;PD3638,3863;PD3631,3832;PD3626,3768;PD3631,3728;PD3644,3685;PD3664,3646;PD3692,3614;PD3735,3584;PD3782,3565;PD3830,3557;PD3878,3559;PD3924,3571;PD3966,3594;PD4003,3628;PD4033,3672;PD4046,3703;PD4052,3735;PD4053,3770;PD4051,3808;PD4043,3864;PD4027,3911;PD4016,3931;PD4001,3949;PD3982,3966;PD3959,3981;PD3934,3991;PD3905,3997;PD3840,4001;PD3775,3993;PD3724,3978;PD3724,3978;PU; -2053 -3002 -406 -168 -(287.0, 1585.0) - -Traceback (most recent call last): - File "/home/lukas/mimaki/cg5-class.py", line 119, in - print getWin() -NameError: name 'getWin' is not defined ->>> diff --git a/oldpy/old-cg5.py b/oldpy/old-cg5.py deleted file mode 100755 index 5ff5905..0000000 --- a/oldpy/old-cg5.py +++ /dev/null @@ -1,92 +0,0 @@ - -import serial - -def getWin(): - ser = serial.Serial('/dev/ttyUSB0', 9600) - ser.write('OW;') - s=[] - if not s: - print 'Datei Fehler' - while True: - x=ser.read() - if x == "\x0d": - break - s.append(x) - return tuple(int(x) for x in "".join(s).split(",")) - -def parse(filename): - with open(filename) as file: - contents = file.read() - commands = [] - for command in contents.split(";"): - name, args = command[:2], command[2:] - args = [int(arg) for arg in args.split(",")] if args else [] - commands.append((name, args)) - return commands - -def compile(commands): - return ";".join(name + ",".join(str(arg) for arg in args) - for name, args in commands) - -def scale(commands, factor): - for name,args in commands: - if name in ("PU","PD","PA","PR"): - for i in range(len(args)): - args[i] = int(args[i]*factor) - return commands - -def left(commands, left): - for name,args in commands: - if name in ("PU","PD","PA","PR"): - if len(args): - args[1] +=left - return commands - -def up(commands, up): - for name,args in commands: - if name in ("PU","PD","PA","PR"): - if len(args): - args[0] +=up - return commands - - -def oob(commands): - xmin, ymin, xmax, ymax = getWin() - for name,args in commands: - if name in ("PU","PD","PA","PR"): - if xmin < args[0] 1: - if args[0] > maxx: - maxx = args[0] - if args[0] < minx: - minx = args[0] - if args[1] < miny: - miny = args[1] - if args[1] > maxy: - maxy =args[1] - xcent= int((xmax-xmin)/2) - ycent= int((ymax-ymin)/2) - centy= int((maxy-miny)/2) - centx= int((maxx-minx)/2) - return up(left(command,centy-ycent),centx-xcent) - - - -out = center(scale(parse("vishnu.hpgl"),2.5)) -print out -print'test' -print oob(out) - - -# print name, args -ser = serial.Serial('/dev/ttyUSB0', 9600) -if not oob(out): - ser.write(compile(out)) diff --git a/oldpy/roll.py b/oldpy/roll.py deleted file mode 100755 index 773eaec..0000000 --- a/oldpy/roll.py +++ /dev/null @@ -1,255 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import division -import serial -import math - - - - - -class Command: - inicoms= ("IN", "SP", "LT") - scalecoms=("PA", "PD", "PR", "PU", "CI" ) - movecoms=("PA", "PD", "PR", "PU" ) - - def __init__(self, name, *args): - self.name = name # hpgl Command name e.g. PU, PA, - self.args = args # list of Position args - - @property - def scalable(self): - return True \ - if self.name in Command.scalecoms and self.args else \ - False - @property - def movable(self): - return True \ - if self.name in Command.movecoms and self.args else \ - False - - @property - def x(self): - return self.args[0] \ - if self.movable else\ - None - - @property - def y(self): - return self.args[1] \ - if self.movable else\ - None - - def __len__(self): - return len(str(self)) - - def __str__(self): - return self.name + ",".join(str(arg) for arg in self.args) + ";" - - def __mul__(self, factor): - if not self.scalable: - return self - if type(factor) == type(0) or type(factor) == type(0.0): - factor = (factor, factor) - return Command(self.name, - int(self.args[0] * factor[0]), - int(self.args[1] * factor[1])) \ - if len(self.args)>1 else\ - Command(self.name,int(self.args[0]*factor[0]) ) - - def __add__(self, addend): - if not self.movable: - return self - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return Command(self.name, - int(self.x + addend[0]), - int(self.y + addend[1])) - - def __sub__(self, addend): - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return self + (-addend[0], -addend[1]) - - def rotate(self, angl): - if not self.movable: - return self - cosa=math.cos(angl*math.pi/180) - sina=math.sin(angl*math.pi/180) - return Command(self.name,int(self.x*cosa-self.y*sina),int(self.y*cosa+self.x*sina)) - - def flip(self): - if not self.movable: - return self - return Command(self.name,self.y,-self.x) - -class Program: - - def __init__(self, commands=[]): - self.commands = commands - - def parsefile(self, filename): - with open(filename) as file: - self.parse( file.read()) - - def parse(self, code): - for command in code.strip().split(";")[:-1]: - name, args = command[:2], command[2:] - args = [int(arg) for arg in args.split(",")] if args else [] - #print name , args - self.commands.append(Command(name, *args)) - - def __str__(self): - return "".join(str(command) for command in self.commands) - - - def __mul__(self, arg): - return Program([command * arg for command in self.commands]) - - - def __add__(self, arg): - return Program([command + arg for command in self.commands]) - - def __sub__(self, arg): - return Program([command - arg for command in self.commands]) - - def __len__(self): - return len(str(self)) - - def rotate(self, angl): - return Program([command.rotate(angl) for command in self.commands]) - - def flip(self): - return Program([command.flip() for command in self.commands]) - - - - @property - def xmax(self): - return max(command.x for command in self.commands if command.x and command.movable) - @property - def xmin(self): - return min(command.x for command in self.commands if command.x and command.movable) - @property - def ymax(self): - return max(command.y for command in self.commands if command.y and command.movable) - @property - def ymin(self): - return min(command.y for command in self.commands if command.y and command.movable) - @property - def center(self): - return int((self.xmin+self.xmax)/2),int((self.ymin+self.ymax)/2) - @property - def size(self): return self.xmax-self.xmin , self.yax - self.ymin - - @property - def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin - -class Plotter: - - def __init__(self): - - self.p0incenter = False - s=self.getoutput('OW;') - print s - if not s: - self.__boundaries = -2000,-2000,2000,2000 - self.ser=None - else: - self.__boundaries = tuple(int(x) for x in "".join(s).split(",")) - - def getoutput(self,outstr): - try: - self.ser = serial.Serial('/dev/ttyUSB0',timeout=15) - print 'try to get Status' - if not self.ser: - print 'Plotter not available' - return None - self.ser.write(outstr) - print 'device busy' - s = [] - while True: - x = self.ser.read() - - if x == "\x0d" or not x: - break - s.append(x) - return ''.join(s) - except OSError: - return None - @property - def xmin(self): - return self.__boundaries[0] - - @property - def ymin(self): - return self.__boundaries[1] - - @property - def xmax(self): - return self.__boundaries[2] - - @property - def ymax(self): - return self.__boundaries[3] - - @property - def center(self): - return (self.xmin + self.xmax)/2, (self.ymin + self.ymax)/2 - - def write(self,programm): - self.ser.write(str(programm)) - - @property - def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin - - def oob(self, prog): - return (prog.xmax > self.xmax or prog.xmin < self.xmin or prog.ymin < self.ymin or prog.ymax > self.ymax) - - def full(self,prog): - arg = min(self.winsize[0]/prog.winsize[0],self.winsize[1]/prog.winsize[1]) - print arg - return prog*arg - - def plot(self,prog): - if (not self.oob(prog)) and self.ready: - self.write(prog) - - if self.oob(prog): - print 'programm out of bound' - if not self.ready: - print 'device not ready' - - def centralize(self,prog): - return prog-prog.center \ - if self.p0incenter else \ - prog-(prog.xmin,prog.ymin) - @property - def ready(self): - return bool(self.getoutput('OS;')) - - - - - -plt=Plotter() -p=Program() -p.parsefile("hpgl/nmk.hpgl") -print p.xmin,p.xmax,p.ymin,p.ymax -p=p.flip() -p=p*(1,-1) -p=plt.full(p) -p=plt.centralize(p) - -print 'Programm Größe' p.winsize -print 'Program Abmessung' p.xmin,p.xmax,p.ymin,p.ymax -print 'Programm Center' p.center -print ' Plotter bereit' plt.ready -#print str(p) -plt.plot(p) - -print len(p) -#print str(p) - - diff --git a/1.hpgl b/output/hpgl/1.hpgl similarity index 100% rename from 1.hpgl rename to output/hpgl/1.hpgl diff --git a/2.hpgl b/output/hpgl/2.hpgl similarity index 100% rename from 2.hpgl rename to output/hpgl/2.hpgl diff --git a/3.hpgl b/output/hpgl/3.hpgl similarity index 100% rename from 3.hpgl rename to output/hpgl/3.hpgl diff --git a/hpgl/ArsOpifex.hpgl b/output/hpgl/ArsOpifex.hpgl similarity index 100% rename from hpgl/ArsOpifex.hpgl rename to output/hpgl/ArsOpifex.hpgl diff --git a/hpgl/GT.hpgl b/output/hpgl/GT.hpgl similarity index 100% rename from hpgl/GT.hpgl rename to output/hpgl/GT.hpgl diff --git a/hpgl/Lars.hpgl b/output/hpgl/Lars.hpgl similarity index 100% rename from hpgl/Lars.hpgl rename to output/hpgl/Lars.hpgl diff --git a/hpgl/Lars.plt b/output/hpgl/Lars.plt similarity index 100% rename from hpgl/Lars.plt rename to output/hpgl/Lars.plt diff --git a/hpgl/Naked.hpgl b/output/hpgl/Naked.hpgl similarity index 100% rename from hpgl/Naked.hpgl rename to output/hpgl/Naked.hpgl diff --git a/hpgl/Suempfonie.hpgl b/output/hpgl/Suempfonie.hpgl similarity index 100% rename from hpgl/Suempfonie.hpgl rename to output/hpgl/Suempfonie.hpgl diff --git a/TU.hpgl b/output/hpgl/TU.hpgl similarity index 100% rename from TU.hpgl rename to output/hpgl/TU.hpgl diff --git a/hpgl/Woman.hpgl b/output/hpgl/Woman.hpgl similarity index 100% rename from hpgl/Woman.hpgl rename to output/hpgl/Woman.hpgl diff --git a/hpgl/Zaskar.hpgl b/output/hpgl/Zaskar.hpgl similarity index 100% rename from hpgl/Zaskar.hpgl rename to output/hpgl/Zaskar.hpgl diff --git a/refac/Zeichnung.hpgl b/output/hpgl/Zeichnung.hpgl similarity index 100% rename from refac/Zeichnung.hpgl rename to output/hpgl/Zeichnung.hpgl diff --git a/refac/Zeichnung2.hpgl b/output/hpgl/Zeichnung2.hpgl similarity index 100% rename from refac/Zeichnung2.hpgl rename to output/hpgl/Zeichnung2.hpgl diff --git a/ag.hpgl b/output/hpgl/ag.hpgl similarity index 100% rename from ag.hpgl rename to output/hpgl/ag.hpgl diff --git a/amag.hpgl b/output/hpgl/amag.hpgl similarity index 100% rename from amag.hpgl rename to output/hpgl/amag.hpgl diff --git a/hpgl/clit.hpgl b/output/hpgl/clit.hpgl similarity index 100% rename from hpgl/clit.hpgl rename to output/hpgl/clit.hpgl diff --git a/hpgl/cross.hpgl b/output/hpgl/cross.hpgl similarity index 100% rename from hpgl/cross.hpgl rename to output/hpgl/cross.hpgl diff --git a/devil.hpgl b/output/hpgl/devil.hpgl similarity index 100% rename from devil.hpgl rename to output/hpgl/devil.hpgl diff --git a/hpgl/dot.hpgl b/output/hpgl/dot.hpgl similarity index 100% rename from hpgl/dot.hpgl rename to output/hpgl/dot.hpgl diff --git a/hpgl/fhain.hpgl b/output/hpgl/fhain.hpgl similarity index 100% rename from hpgl/fhain.hpgl rename to output/hpgl/fhain.hpgl diff --git a/hpgl/fuu.hpgl b/output/hpgl/fuu.hpgl similarity index 100% rename from hpgl/fuu.hpgl rename to output/hpgl/fuu.hpgl diff --git a/hpgl/fuufuu.hpgl b/output/hpgl/fuufuu.hpgl similarity index 100% rename from hpgl/fuufuu.hpgl rename to output/hpgl/fuufuu.hpgl diff --git a/hpgl/janos.hpgl b/output/hpgl/janos.hpgl similarity index 100% rename from hpgl/janos.hpgl rename to output/hpgl/janos.hpgl diff --git a/hpgl/kamel.hpgl b/output/hpgl/kamel.hpgl similarity index 100% rename from hpgl/kamel.hpgl rename to output/hpgl/kamel.hpgl diff --git a/hpgl/kanamen.hpgl b/output/hpgl/kanamen.hpgl similarity index 100% rename from hpgl/kanamen.hpgl rename to output/hpgl/kanamen.hpgl diff --git a/hpgl/karmen.hpgl b/output/hpgl/karmen.hpgl similarity index 100% rename from hpgl/karmen.hpgl rename to output/hpgl/karmen.hpgl diff --git a/hpgl/kreis.hpgl b/output/hpgl/kreis.hpgl similarity index 100% rename from hpgl/kreis.hpgl rename to output/hpgl/kreis.hpgl diff --git a/hpgl/logo-neos.hpgl b/output/hpgl/logo-neos.hpgl similarity index 100% rename from hpgl/logo-neos.hpgl rename to output/hpgl/logo-neos.hpgl diff --git a/hpgl/logo-tec.hpgl b/output/hpgl/logo-tec.hpgl similarity index 100% rename from hpgl/logo-tec.hpgl rename to output/hpgl/logo-tec.hpgl diff --git a/hpgl/luz.hpgl b/output/hpgl/luz.hpgl similarity index 100% rename from hpgl/luz.hpgl rename to output/hpgl/luz.hpgl diff --git a/hpgl/moritz.hpgl b/output/hpgl/moritz.hpgl similarity index 100% rename from hpgl/moritz.hpgl rename to output/hpgl/moritz.hpgl diff --git a/neos.hpgl b/output/hpgl/neos.hpgl similarity index 100% rename from neos.hpgl rename to output/hpgl/neos.hpgl diff --git a/hpgl/nmk.hpgl b/output/hpgl/nmk.hpgl similarity index 100% rename from hpgl/nmk.hpgl rename to output/hpgl/nmk.hpgl diff --git a/hpgl/plane.hpgl b/output/hpgl/plane.hpgl similarity index 100% rename from hpgl/plane.hpgl rename to output/hpgl/plane.hpgl diff --git a/hpgl/r1.hpgl b/output/hpgl/r1.hpgl similarity index 100% rename from hpgl/r1.hpgl rename to output/hpgl/r1.hpgl diff --git a/hpgl/r2.hpgl b/output/hpgl/r2.hpgl similarity index 100% rename from hpgl/r2.hpgl rename to output/hpgl/r2.hpgl diff --git a/robert.hpgl b/output/hpgl/robert.hpgl similarity index 100% rename from robert.hpgl rename to output/hpgl/robert.hpgl diff --git a/hpgl/sign b/output/hpgl/sign similarity index 100% rename from hpgl/sign rename to output/hpgl/sign diff --git a/hpgl/sticker.hpgl b/output/hpgl/sticker.hpgl similarity index 100% rename from hpgl/sticker.hpgl rename to output/hpgl/sticker.hpgl diff --git a/tec.hpgl b/output/hpgl/tec.hpgl similarity index 100% rename from tec.hpgl rename to output/hpgl/tec.hpgl diff --git a/hpgl/tiger.hpgl b/output/hpgl/tiger.hpgl similarity index 100% rename from hpgl/tiger.hpgl rename to output/hpgl/tiger.hpgl diff --git a/hpgl/vishnu.hpgl b/output/hpgl/vishnu.hpgl similarity index 100% rename from hpgl/vishnu.hpgl rename to output/hpgl/vishnu.hpgl diff --git a/svg/150720_aufkleber_lang.pdf b/output/svg/150720_aufkleber_lang.pdf similarity index 100% rename from svg/150720_aufkleber_lang.pdf rename to output/svg/150720_aufkleber_lang.pdf diff --git a/svg/ArsOpifex.png b/output/svg/ArsOpifex.png similarity index 100% rename from svg/ArsOpifex.png rename to output/svg/ArsOpifex.png diff --git a/svg/Cross-Pattee-Heraldry.svg b/output/svg/Cross-Pattee-Heraldry.svg similarity index 100% rename from svg/Cross-Pattee-Heraldry.svg rename to output/svg/Cross-Pattee-Heraldry.svg diff --git a/svg/Emblem_of_borough_Friedrichshain-Kreuzberg.svg b/output/svg/Emblem_of_borough_Friedrichshain-Kreuzberg.svg similarity index 100% rename from svg/Emblem_of_borough_Friedrichshain-Kreuzberg.svg rename to output/svg/Emblem_of_borough_Friedrichshain-Kreuzberg.svg diff --git a/svg/Lars.svg b/output/svg/Lars.svg similarity index 100% rename from svg/Lars.svg rename to output/svg/Lars.svg diff --git a/hpgl/Suempfonie.svg b/output/svg/Suempfonie.svg similarity index 100% rename from hpgl/Suempfonie.svg rename to output/svg/Suempfonie.svg diff --git a/hpgl/Sümpfonie.svg b/output/svg/Sümpfonie.svg similarity index 100% rename from hpgl/Sümpfonie.svg rename to output/svg/Sümpfonie.svg diff --git a/svg/Tiger_Beer.svg b/output/svg/Tiger_Beer.svg similarity index 100% rename from svg/Tiger_Beer.svg rename to output/svg/Tiger_Beer.svg diff --git a/svg/Woman.svg b/output/svg/Woman.svg similarity index 100% rename from svg/Woman.svg rename to output/svg/Woman.svg diff --git a/amag.svg b/output/svg/amag.svg similarity index 100% rename from amag.svg rename to output/svg/amag.svg diff --git a/svg/art.jpeg b/output/svg/art.jpeg similarity index 100% rename from svg/art.jpeg rename to output/svg/art.jpeg diff --git a/janos.svg b/output/svg/janos.svg similarity index 100% rename from janos.svg rename to output/svg/janos.svg diff --git a/moritz.svg b/output/svg/moritz.svg similarity index 100% rename from moritz.svg rename to output/svg/moritz.svg diff --git a/svg/nmk.png b/output/svg/nmk.png similarity index 100% rename from svg/nmk.png rename to output/svg/nmk.png diff --git a/svg/nmk.svg b/output/svg/nmk.svg similarity index 100% rename from svg/nmk.svg rename to output/svg/nmk.svg diff --git a/robert.svg b/output/svg/robert.svg similarity index 100% rename from robert.svg rename to output/svg/robert.svg diff --git a/hpgl/sticker.svg b/output/svg/sticker.svg similarity index 100% rename from hpgl/sticker.svg rename to output/svg/sticker.svg diff --git a/svg/vishnu.svg b/output/svg/vishnu.svg similarity index 100% rename from svg/vishnu.svg rename to output/svg/vishnu.svg diff --git a/refac/Command.py b/refac/Command.py deleted file mode 100755 index e1d32cd..0000000 --- a/refac/Command.py +++ /dev/null @@ -1,79 +0,0 @@ - - -# -*- coding: utf-8 -*- - -import math - - -class Command: - inicoms= ("IN", "SP", "LT") # nicht benutzt - scalecoms=("PA", "PD", "PR", "PU", "CI" ) # Liste skalierbarer HPGL-Befehle - movecoms=("PA", "PD", "PU" ) # Liste verschiebbarer HPGL-Befehle# - abscoms=("PA", "PD", "PU" ) - relcoms=("PR") - arccoms=("CI", "AA") - - def __init__(self, name, *args): - self.name = name # Befehlname - self.args = args # Argsliste - - @property - def scalable(self): - return self.name in Command.scalecoms and self.args - - @property - def movable(self): - return self.name in Command.movecoms and self.args - - @property - def x(self): - #Baustelle da es Befehle gibt die mehrere Args haben - return self.args[0] if self.args else None - - @property - def y(self): - return self.args[-1] if self.args else None - - def __trunc__(self): - return Command(self.name,*[int(arg) for arg in self.args]) - - def __len__(self): - return len(str(self)) # Byte-Lnge des Befehls - - def __str__(self): - return self.name + ",".join(str(int(arg)) for arg in self.args) + ";" - - def __mul__(self, factor): # multipliziert falls skalable mit factor - if not self.scalable: - return self - if type(factor) == type(0) or type(factor) == type(0.0): - # Faktor kann skalar oder Tuple sein - factor = (factor, factor) - return Command(self.name,(self.args[0] * factor[0]),(self.args[1] * factor[1])) \ - if len(self.args)>1 else\ - Command(self.name,(self.args[0]*factor[0]) ) # wichtig fr Befehle mit nur einem Argument - - def __add__(self, addend): - if not self.movable: - return self - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - #print( "ADD ", self.name ) - return Command(self.name,(self.x + addend[0]),(self.y + addend[1])) - - def __sub__(self, addend): - if type(addend) == type(0) or type(addend) == type(0.0): - addend = (addend, addend) - return self + (-addend[0], -addend[1]) - - def rotate(self, angl): # multiplikation mit Rot-Matrix - if not self.movable: - return self - cosa=math.cos(angl*math.pi/180) - sina=math.sin(angl*math.pi/180) - return Command(self.name,(self.x*cosa-self.y*sina),(self.y*cosa+self.x*sina)) - - def flip(self): # Spiegelung - if not self.movable: - return self - return Command(self.name,self.x,-self.y) diff --git a/refac/Command.pyc b/refac/Command.pyc deleted file mode 100644 index 1b4e649..0000000 Binary files a/refac/Command.pyc and /dev/null differ diff --git a/refac/K18650.pyc b/refac/K18650.pyc deleted file mode 100755 index 6f9e2f8..0000000 Binary files a/refac/K18650.pyc and /dev/null differ diff --git a/refac/Kleber.pyc b/refac/Kleber.pyc deleted file mode 100755 index 4a158ec..0000000 Binary files a/refac/Kleber.pyc and /dev/null differ diff --git a/refac/Plotter.py b/refac/Plotter.py deleted file mode 100755 index c35d64d..0000000 --- a/refac/Plotter.py +++ /dev/null @@ -1,84 +0,0 @@ -from __future__ import division -import serial - -class Plotter: - - def __init__(self,boundaries=None): - self.boundaries=boundaries - self.p0incenter = False - if not boundaries: - s=self.getoutput(b'OW;') - print(s) - if not s: - self.ser=None - else: - self.boundaries = tuple(int(x) for x in "".join(s).split(",")) - - def getoutput(self,outstr): - try: - self.ser = serial.Serial('/dev/ttyUSB0',timeout=15) - print ('try to get Status') - if not self.ser: - print ('Plotter not available') - return None - self.ser.write(outstr) - print ('device busy') - s = [] - while True: - x = self.ser.read() - - if x == b"\x0d" or not x: - break - s.append(x) - return b''.join(s).decode() - except OSError: - return None - @property - def xmin(self): - return self.boundaries[0] - - @property - def ymin(self): - return self.boundaries[1] - - @property - def xmax(self): - return self.boundaries[2] - - @property - def ymax(self): - return self.boundaries[3] - - @property - def center(self): - return (self.xmin + self.xmax)/2, (self.ymin + self.ymax)/2 - - def write(self,programm): - self.ser.write(str(programm).encode()) - - @property - def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin - - def oob(self, prog): - return (prog.xmax > self.xmax or prog.xmin < self.xmin or prog.ymin < self.ymin or prog.ymax > self.ymax) - - - - def plot(self,prog): - if self.ready and (not self.oob(prog)) : - self.write(prog) - - if self.oob(prog): - print ('programm out of bound') - if not self.ready: - print ('device not ready') - - - def centralize(self,prog): - return prog-prog.center \ - if self.p0incenter else \ - prog-(prog.xmin,prog.ymin) - @property - def ready(self): - return bool(self.getoutput('OS;')) diff --git a/refac/Plotter.pyc b/refac/Plotter.pyc deleted file mode 100644 index 17e618f..0000000 Binary files a/refac/Plotter.pyc and /dev/null differ diff --git a/refac/Program.py b/refac/Program.py deleted file mode 100755 index e0f70dd..0000000 --- a/refac/Program.py +++ /dev/null @@ -1,127 +0,0 @@ - -import math -from Command import * -import tkinter as tk - -class Program: - - def __init__(self, commands=None): - self.commands = commands - self.active=True - self.visible=False - self.filename='' - if commands: - self.xmin,self.ymin,self.xmax,self.ymax=self.__simulate() - - def __simulate(self): - (x,y) = (0,0) - xy=[] - for command in self.commands : - if not command.args: - continue - elif command.name in command.abscoms: - x,y=command.x,command.y - xy.append((x,y)) - elif command.name in command.relcoms: - x,y =x+command.x,y+command.y - xy.append((x,y)) - elif command.name in command.arccoms: - xy+=[(x+command.x,y+command.x) , ( x-command.x,y-command.x)] - return [m([v[i] for v in xy]) for m, i in ((min,0),(min,1),(max,0),(max,1))] - - @staticmethod - def parsefile(filename): - with open(filename) as file: - return Program.parse( file.read()) - @staticmethod - def parse(code): - commands = [] - for command in code.strip().split(";")[:-1]: - name, args = command[:2], command[2:] - args = [float(arg) for arg in args.split(",")] if args else [] - if name in Command.movecoms and len(args)>2: - for i in range(0,len(args),2): - commands.append(Command(name, args[i], args[i+1])) - else: - commands.append(Command(name, *args)) - return Program(commands) - - def show(self,w=None): - p=self.flip() - p=p.rotate(270) - p=p.fitin((0,0,1024,600),(0,0)) - win=tk.Tk() - win.title('HPGLPLOTTER') - canvas=tk.Canvas(win,width=p.winsize[0],height=p.winsize[1]) - canvas.grid(row=0,column=0) - x = y = 0 - for command in p.commands: - if command.name == 'PU': - x,y = command.x,command.y - elif command.name=='PD': - canvas.create_line(x,y,command.x,command.y) - x,y = command.x,command.y - elif command.name == 'CI': - r=command.args[0] - canvas.create_oval(x-r,y-r,x+r,y+r) - win.mainloop() - - def __str__(self): - return "".join(str(command) for command in self.commands) - - def __mul__(self, arg): - return Program([command * arg for command in self.commands]) - - def __add__(self, arg): - if type(arg)== type(self): - return Program( self.commands + arg.commands ) - return Program([command + arg for command in self.commands]) - - def __sub__(self, arg): - return Program([command - arg for command in self.commands]) - - def __len__(self): - return len(str(self)) - - def rotate(self, angl): - return Program([command.rotate(angl) for command in self.commands]) - - def flip(self): - return Program([command.flip() for command in self.commands if command]) - - def scaleto(self,ab): - a,b = ab - return self*min(a/self.winsize[0],b/self.winsize[1]) - - def moveto(self,ab): - a,b = ab - return self-(self.xmin-a,self.ymin-b) - - def fitin(self,xys,fxy): # fx fy Alignment Parameter: 0 links/oben 0,5 Mitte 1 rechts/unten - (x1,y1,x2,y2) = xys - (fx,fy) = fxy - print("fx",fx,"fy",fy) - p = self.scaleto((x2-x1,y2-y1)) - return p.moveto((x1+fx*(x2-x1-p.winsize[0]),y1+fy*(y2-y1-p.winsize[1]))) - - def multi(self,w,h): - dist=40 - out=self - p=self.winsize - for i in range(w): - for j in range(h): - if (w!=0 and h!=0): - out=out+(self+(i*p[0]+i*dist,j*p[1]+j*dist)) - else: - pass - - return out - - - - @property - def center(self): - return ((self.xmin+self.xmax)/2),((self.ymin+self.ymax)/2) - @property - def winsize(self): - return self.xmax-self.xmin , self.ymax - self.ymin diff --git a/refac/Program.pyc b/refac/Program.pyc deleted file mode 100755 index 2635ef4..0000000 Binary files a/refac/Program.pyc and /dev/null differ diff --git a/refac/__pycache__/Command.cpython-36.pyc b/refac/__pycache__/Command.cpython-36.pyc deleted file mode 100644 index c514853..0000000 Binary files a/refac/__pycache__/Command.cpython-36.pyc and /dev/null differ diff --git a/refac/__pycache__/Command.cpython-39.pyc b/refac/__pycache__/Command.cpython-39.pyc deleted file mode 100644 index f5f72b0..0000000 Binary files a/refac/__pycache__/Command.cpython-39.pyc and /dev/null differ diff --git a/refac/__pycache__/K18650.cpython-36.pyc b/refac/__pycache__/K18650.cpython-36.pyc deleted file mode 100644 index fef743f..0000000 Binary files a/refac/__pycache__/K18650.cpython-36.pyc and /dev/null differ diff --git a/refac/__pycache__/K18650.cpython-39.pyc b/refac/__pycache__/K18650.cpython-39.pyc deleted file mode 100644 index b71d8d6..0000000 Binary files a/refac/__pycache__/K18650.cpython-39.pyc and /dev/null differ diff --git a/refac/__pycache__/Kleber.cpython-36.pyc b/refac/__pycache__/Kleber.cpython-36.pyc deleted file mode 100644 index 29e4b16..0000000 Binary files a/refac/__pycache__/Kleber.cpython-36.pyc and /dev/null differ diff --git a/refac/__pycache__/Kleber.cpython-39.pyc b/refac/__pycache__/Kleber.cpython-39.pyc deleted file mode 100644 index fa40fe0..0000000 Binary files a/refac/__pycache__/Kleber.cpython-39.pyc and /dev/null differ diff --git a/refac/__pycache__/Plotter.cpython-36.pyc b/refac/__pycache__/Plotter.cpython-36.pyc deleted file mode 100644 index 1aaddc7..0000000 Binary files a/refac/__pycache__/Plotter.cpython-36.pyc and /dev/null differ diff --git a/refac/__pycache__/Plotter.cpython-39.pyc b/refac/__pycache__/Plotter.cpython-39.pyc deleted file mode 100644 index 7d157ce..0000000 Binary files a/refac/__pycache__/Plotter.cpython-39.pyc and /dev/null differ diff --git a/refac/__pycache__/Program.cpython-36.pyc b/refac/__pycache__/Program.cpython-36.pyc deleted file mode 100644 index 2e3ca20..0000000 Binary files a/refac/__pycache__/Program.cpython-36.pyc and /dev/null differ diff --git a/refac/__pycache__/Program.cpython-39.pyc b/refac/__pycache__/Program.cpython-39.pyc deleted file mode 100644 index 630f86c..0000000 Binary files a/refac/__pycache__/Program.cpython-39.pyc and /dev/null differ diff --git a/refac/__pycache__/hilbert.cpython-36.pyc b/refac/__pycache__/hilbert.cpython-36.pyc deleted file mode 100644 index 34eedeb..0000000 Binary files a/refac/__pycache__/hilbert.cpython-36.pyc and /dev/null differ diff --git a/refac/__pycache__/hilbert.cpython-39.pyc b/refac/__pycache__/hilbert.cpython-39.pyc deleted file mode 100644 index 3c19e1a..0000000 Binary files a/refac/__pycache__/hilbert.cpython-39.pyc and /dev/null differ diff --git a/refac/hilbert.pyc b/refac/hilbert.pyc deleted file mode 100644 index 22dd7fe..0000000 Binary files a/refac/hilbert.pyc and /dev/null differ diff --git a/refac/main.py b/refac/main.py deleted file mode 100755 index 7d3dfef..0000000 --- a/refac/main.py +++ /dev/null @@ -1,23 +0,0 @@ -from Plotter import * -from Command import * -from Program import * -from Kleber import * -from K18650 import * - - -#plt = Plotter()#(0,0,400,400)) - -p = Program.parsefile('../hpgl/ag.hpgl') -#p=p. -print(str(p)) -p=p.flip() -p=p.rotate(270) -print(p.winsize[0]/40, p.winsize[1]/40) - -#p = p.fitin((0, 0, plt.xmax, plt.ymax), (0.5, 0.5)) -print(p.winsize[0]/40, p.winsize[1]/40) -p.show() - - - -#plt.write(p) diff --git a/show_hpgl.py b/show_hpgl.py new file mode 100644 index 0000000..2195b15 --- /dev/null +++ b/show_hpgl.py @@ -0,0 +1,11 @@ +"""Load an HPGL file and show it in a window.""" +from Plotter import * +from Command import * +from Program import * + +p = Program.parsefile('output/hpgl/ag.hpgl') +print(str(p)) +p = p.flip() +p = p.rotate(270) +print(p.winsize[0] / 40, p.winsize[1] / 40) +p.show()