From 81c1b8a5e65fddec2b57c41c55ca4dc8577ee79c Mon Sep 17 00:00:00 2001 From: Hans L Date: Tue, 13 Mar 2012 22:39:56 -0500 Subject: [PATCH 01/31] Search the full path --- SkeinPyPy_NewUI/newui/skeinRun.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/skeinRun.py b/SkeinPyPy_NewUI/newui/skeinRun.py index bd1c3c9362..8709d21501 100644 --- a/SkeinPyPy_NewUI/newui/skeinRun.py +++ b/SkeinPyPy_NewUI/newui/skeinRun.py @@ -7,20 +7,20 @@ from skeinforge_application.skeinforge_utilities import skeinforge_craft def getPyPyExe(): "Return the path to the pypy executable if we can find it. Else return False" if platform.system() == "Windows": + exeName = "pypy.exe" pypyExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../pypy/pypy.exe")); else: + exeName = "pypy" pypyExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../pypy/bin/pypy")); if os.path.exists(pypyExe): return pypyExe - pypyExe = "/bin/pypy"; - if os.path.exists(pypyExe): - return pypyExe - pypyExe = "/usr/bin/pypy"; - if os.path.exists(pypyExe): - return pypyExe - pypyExe = "/usr/local/bin/pypy"; - if os.path.exists(pypyExe): - return pypyExe + + path = os.environ['PATH'] + paths = path.split(os.pathsep) + for p in paths: + pypyExe = os.path.join(p, exeName) + if os.path.exists(pypyExe): + return pypyExe return False def runSkein(fileNames): From 9e7426d9040d260d3fd281952fe98101ac8f43d4 Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 14 Mar 2012 12:28:42 +0100 Subject: [PATCH 02/31] Send an M92 Exxx when doing test extrusion --- SkeinPyPy_NewUI/newui/configWizard.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SkeinPyPy_NewUI/newui/configWizard.py b/SkeinPyPy_NewUI/newui/configWizard.py index 78b51a9d8e..f8a29ce57e 100644 --- a/SkeinPyPy_NewUI/newui/configWizard.py +++ b/SkeinPyPy_NewUI/newui/configWizard.py @@ -343,6 +343,7 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): threading.Thread(target=self.OnRun).start() def OnRun(self): + currentEValue = float(self.stepsPerEInput.GetValue()) self.comm = machineCom.MachineCom() while True: line = self.comm.readline() @@ -351,6 +352,7 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): if line.startswith('start'): break self.sendGCommand('M302') #Disable cold extrusion protection + self.sendGCommand("M92 E%f" % (currentEValue)); self.sendGCommand("G92 E0"); self.sendGCommand("G1 E100 F300"); time.sleep(5) From 3316f6da96c1e16fb18bbff746ff7a5dd50a4288 Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 14 Mar 2012 16:01:06 +0100 Subject: [PATCH 03/31] Added infill overlap percentage in advanced settings. --- SkeinPyPy_NewUI/fabmetheus_utilities/settings.py | 4 ++-- SkeinPyPy_NewUI/newui/advancedConfig.py | 1 + SkeinPyPy_NewUI/newui/configWizard.py | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py b/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py index c735febdcf..e3e4689058 100644 --- a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py +++ b/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py @@ -26,7 +26,7 @@ def ifSettingIs(name, value, default): return lambda setting: getProfileSetting(name, default) == value def storedPercentSetting(name): - return lambda setting: float(getProfileSetting(name, setting.value)) / 100 + return lambda setting: float(getProfileSetting(name, setting.value * 100)) / 100 def calculateEdgeWidth(setting): wallThickness = float(getProfileSetting('wall_thickness')) @@ -138,7 +138,7 @@ def getSkeinPyPyProfileInformation(): 'Grid_Hexagonal': ifSettingIs('infill_type', 'Grid Hexagonal', 'Line'), 'Grid_Rectangular': ifSettingIs('infill_type', 'Grid Rectangular', 'Line'), 'Line': ifSettingIs('infill_type', 'Line', 'Line'), - 'Infill_Perimeter_Overlap_ratio': DEFSET, + 'Infill_Perimeter_Overlap_ratio': storedPercentSetting('fill_overlap'), 'Infill_Solidity_ratio': storedPercentSetting('fill_density'), 'Infill_Width': storedSetting("nozzle_size"), 'Solid_Surface_Thickness_layers': calculateSolidLayerCount, diff --git a/SkeinPyPy_NewUI/newui/advancedConfig.py b/SkeinPyPy_NewUI/newui/advancedConfig.py index dc54b30d16..185af56d36 100644 --- a/SkeinPyPy_NewUI/newui/advancedConfig.py +++ b/SkeinPyPy_NewUI/newui/advancedConfig.py @@ -31,6 +31,7 @@ class advancedConfigWindow(configBase.configWindowBase): configBase.TitleRow(left, "Infill") c = configBase.SettingRow(left, "Infill pattern", 'infill_type', ['Line', 'Grid Circular', 'Grid Hexagonal', 'Grid Rectangular'], 'Pattern of the none-solid infill. Line is default, but grids can provide a strong print.') c = configBase.SettingRow(left, "Solid infill top", 'solid_top', True, 'Create a solid top surface, if set to false the top is filled with the fill percentage. Useful for cups/vases.') + c = configBase.SettingRow(left, "Infill overlap (%)", 'fill_overlap', '15', 'Amount of overlap between the infill and the walls. There is a slight overlap with the walls and the infill so the walls connect firmly to the infill.') configBase.TitleRow(left, "Joris") c = configBase.SettingRow(left, "Joris the outer edge", 'joris', False, '[Joris] is a code name for smoothing out the Z move of the outer edge. This will create a steady Z increase over the whole print. It is intended to be used with a single walled wall thickness to make cups/vases.') diff --git a/SkeinPyPy_NewUI/newui/configWizard.py b/SkeinPyPy_NewUI/newui/configWizard.py index f8a29ce57e..5c6360dc0d 100644 --- a/SkeinPyPy_NewUI/newui/configWizard.py +++ b/SkeinPyPy_NewUI/newui/configWizard.py @@ -104,7 +104,7 @@ class MachineSelectPage(InfoPage): settings.putPreference('machine_width', '80') settings.putPreference('machine_depth', '80') settings.putPreference('machine_height', '60') - settings.putProfileSetting('nozzle_size', '0.4') + settings.putProfileSetting('nozzle_size', '0.5') settings.putProfileSetting('machine_center_x', '40') settings.putProfileSetting('machine_center_y', '40') From db475505ad96b3e2ba5a8c93058c02fedada01ad Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 14 Mar 2012 16:24:18 +0100 Subject: [PATCH 04/31] Moved the 3D normal generation to the model loading, so it does not block the rendering update --- SkeinPyPy_NewUI/newui/preview3d.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/preview3d.py b/SkeinPyPy_NewUI/newui/preview3d.py index 537ba329d0..fdcec82fa5 100644 --- a/SkeinPyPy_NewUI/newui/preview3d.py +++ b/SkeinPyPy_NewUI/newui/preview3d.py @@ -2,6 +2,7 @@ import sys import math import threading import re +import time from wx import glcanvas import wx @@ -152,8 +153,6 @@ class previewPanel(wx.Panel): def updateModelTransform(self, f=0): if self.triangleMesh == None: return - for face in self.triangleMesh.faces: - face.normal = None scale = 1.0 rotate = 0.0 try: @@ -179,6 +178,14 @@ class previewPanel(wx.Panel): self.triangleMesh.vertexes[i].x = self.triangleMesh.origonalVertexes[i].x * mat00 + self.triangleMesh.origonalVertexes[i].y * mat01 self.triangleMesh.vertexes[i].y = self.triangleMesh.origonalVertexes[i].x * mat10 + self.triangleMesh.origonalVertexes[i].y * mat11 self.triangleMesh.vertexes[i].z = self.triangleMesh.origonalVertexes[i].z * scaleZ + + for face in self.triangleMesh.faces: + v1 = self.triangleMesh.vertexes[face.vertexIndexes[0]] + v2 = self.triangleMesh.vertexes[face.vertexIndexes[1]] + v3 = self.triangleMesh.vertexes[face.vertexIndexes[2]] + face.normal = (v2 - v1).cross(v3 - v1) + face.normal.normalize() + self.moveModel() def moveModel(self): @@ -378,9 +385,6 @@ class PreviewGLCanvas(glcanvas.GLCanvas): v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]] v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]] v3 = self.parent.triangleMesh.vertexes[face.vertexIndexes[2]] - if face.normal == None: - face.normal = (v2 - v1).cross(v3 - v1) - face.normal.normalize() glNormal3f(face.normal.x, face.normal.y, face.normal.z) glVertex3f(v1.x, v1.y, v1.z) glVertex3f(v2.x, v2.y, v2.z) From 09cb6898ef6dfecfb98c1576cdc675f9848f34e3 Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 14 Mar 2012 17:11:42 +0100 Subject: [PATCH 05/31] After some tests with EVT_KILL_FOCUS I found something interresting. This might solve the issue with the popups for MacOS --- SkeinPyPy_NewUI/newui/configBase.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/configBase.py b/SkeinPyPy_NewUI/newui/configBase.py index f1a664210f..7c9ec2a1be 100644 --- a/SkeinPyPy_NewUI/newui/configBase.py +++ b/SkeinPyPy_NewUI/newui/configBase.py @@ -20,16 +20,13 @@ class configWindowBase(wx.Frame): self.settingControlList = [] #Create the popup window - self.popup = wx.PopupWindow(self, wx.BORDER_SIMPLE) + self.popup = wx.PopupWindow(self, flags=wx.BORDER_SIMPLE) self.popup.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOBK)) self.popup.setting = None self.popup.text = wx.StaticText(self.popup, -1, ''); self.popup.sizer = wx.BoxSizer() self.popup.sizer.Add(self.popup.text, flag=wx.EXPAND|wx.ALL, border=1) self.popup.SetSizer(self.popup.sizer) - - self.popup.Bind(wx.EVT_MOTION, self.OnPopupHide) - self.popup.text.Bind(wx.EVT_MOTION, self.OnPopupHide) def CreateConfigTab(self, nb, name): leftConfigPanel, rightConfigPanel, configPanel = self.CreateConfigPanel(nb) @@ -124,21 +121,23 @@ class SettingRow(): else: self.ctrl = wx.ComboBox(panel, -1, getSettingFunc(configName, defaultValue[0]), choices=defaultValue, style=wx.CB_DROPDOWN|wx.CB_READONLY) self.ctrl.Bind(wx.EVT_TEXT, self.OnSettingChange) + + sizer.Add(self.label, (x,y), flag=wx.ALIGN_CENTER_VERTICAL) + sizer.Add(self.ctrl, (x,y+1), flag=wx.ALIGN_BOTTOM|wx.EXPAND) + sizer.SetRows(x+1) - self.ctrl.Bind(wx.EVT_ENTER_WINDOW, lambda e: panel.main.OnPopupDisplay(self)) - self.ctrl.Bind(wx.EVT_LEAVE_WINDOW, panel.main.OnPopupHide) - - #MacOS X doesn't get EVT_ENTER/LEAVE_WINDOW for controls. So we use the motion event then. This results in slightly less good popups, but it works. - if sys.platform == 'darwin': - self.ctrl.Bind(wx.EVT_MOTION, lambda e: panel.main.OnPopupDisplay(self)) + self.ctrl.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter) + self.ctrl.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseExit) self.defaultBGColour = self.ctrl.GetBackgroundColour() panel.main.settingControlList.append(self) - - sizer.Add(self.label, (x,y), flag=wx.ALIGN_CENTER_VERTICAL) - sizer.Add(self.ctrl, (x,y+1), flag=wx.ALIGN_BOTTOM|wx.EXPAND) - sizer.SetRows(x+1) + + def OnMouseEnter(self, e): + self.panel.main.OnPopupDisplay(self) + + def OnMouseExit(self, e): + self.panel.main.OnPopupHide(self) def OnSettingChange(self, e): if self.type == 'profile': From 1b39f91a755af6b82abdc45d0ce7c019103ffa02 Mon Sep 17 00:00:00 2001 From: Alexandre Girard Date: Thu, 15 Mar 2012 18:06:28 +0800 Subject: [PATCH 06/31] add gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..f57dc5e386 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.tar.bz2 +*.tar.gz +osx64-SkeinPyPy-NewUI* +Printrun From 9d9ac55cb8fc6ddf341efe570387381b82231f78 Mon Sep 17 00:00:00 2001 From: Alexandre Girard Date: Thu, 15 Mar 2012 18:15:30 +0800 Subject: [PATCH 07/31] modify build script to update Printrun instead of cloning it at each build --- build.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/build.sh b/build.sh index d3e1acd465..8421085ac2 100755 --- a/build.sh +++ b/build.sh @@ -82,9 +82,14 @@ else fi #Get our own version of Printrun -rm -rf Printrun -git clone git://github.com/daid/Printrun.git -rm -rf Printrun/.git +if [ ! -d "Printrun" ]; then + git clone git://github.com/daid/Printrun.git +else + echo "Updating Printrun" + cd Printrun + git pull + cd .. +fi ############################# # Build the packages @@ -135,7 +140,8 @@ rm -rf ${TARGET_DIR}/pypy/lib-python/2.7/test cp -a SkeinPyPy_NewUI ${TARGET_DIR}/SkeinPyPy #add printrun -mv Printrun ${TARGET_DIR}/Printrun +cp -a Printrun ${TARGET_DIR}/Printrun +rm -rf ${TARGET_DIR}/Printrun/.git* #add script files if [ $BUILD_TARGET = "win32" ]; then From 5d4e8c7ed16d43bf0ede972f5b05a56199567826 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 15 Mar 2012 11:21:07 +0100 Subject: [PATCH 08/31] More to ignore! (Thanks for the ignore file alex) --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index f57dc5e386..e872f6a5e1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,9 @@ *.tar.bz2 *.tar.gz +*.pyc +*.zip +*.exe osx64-SkeinPyPy-NewUI* +win32-SkeinPyPy-NewUI* +linux-SkeinPyPy-NewUI* Printrun From 9d4548132b2529933580639558c32ebdf8a188d8 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 15 Mar 2012 15:25:16 +0100 Subject: [PATCH 09/31] Save log output next to gcode after slicing. Also, change the way holes are reported from SF, so we can show which edges cause the error --- .../geometry/solids/triangle_mesh.py | 13 +++++++------ SkeinPyPy_NewUI/newui/sliceProgessPanel.py | 5 +++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py b/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py index bbe7723045..82bd7ac4b5 100644 --- a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py +++ b/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py @@ -429,14 +429,15 @@ def getLoopsFromCorrectMesh( edges, faces, vertexes, z ): 'Get loops from a carve of a correct mesh.' remainingEdgeTable = getRemainingEdgeTable(edges, vertexes, z) remainingValues = remainingEdgeTable.values() + error = False for edge in remainingValues: if len( edge.faceIndexes ) < 2: - print('This should never happen, there is a hole in the triangle mesh, each edge should have two faces.') - print(edge) - print('Something will still be printed, but there is no guarantee that it will be the correct shape.' ) - print('Once the gcode is saved, you should check over the layer with a z of:') - print(z) - return [] + if not hasattr(edge, 'errorReported'): + print('Model error(hole): ' + str(vertexes[edge.vertexIndexes[0]]) + ' ' + str(vertexes[edge.vertexIndexes[1]])) + edge.errorReported = True + error = True + if error: + return [] loops = [] while isPathAdded( edges, faces, loops, remainingEdgeTable, vertexes, z ): pass diff --git a/SkeinPyPy_NewUI/newui/sliceProgessPanel.py b/SkeinPyPy_NewUI/newui/sliceProgessPanel.py index 1dd2dc0694..d880bf932a 100644 --- a/SkeinPyPy_NewUI/newui/sliceProgessPanel.py +++ b/SkeinPyPy_NewUI/newui/sliceProgessPanel.py @@ -132,6 +132,11 @@ class WorkerThread(threading.Thread): line = p.stdout.readline() self.returnCode = p.wait() self.gcodeFilename = self.filename[: self.filename.rfind('.')] + "_export.gcode" + logfile = open(self.filename[: self.filename.rfind('.')] + "_export.log", "w") + for logLine in self.progressLog: + logfile.write(logLine) + logfile.write('\n') + logfile.close() wx.CallAfter(self.notifyWindow.OnSliceDone, self) class LogWindow(wx.Frame): From 6ebc6f64d37488911207716905ba84bae49fff99 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 15 Mar 2012 16:31:49 +0100 Subject: [PATCH 10/31] Updated the E calibration with a heatup button. Also disable extrude/heat button during extrusion. --- SkeinPyPy_NewUI/newui/configWizard.py | 31 ++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/configWizard.py b/SkeinPyPy_NewUI/newui/configWizard.py index 5c6360dc0d..60f5682df4 100644 --- a/SkeinPyPy_NewUI/newui/configWizard.py +++ b/SkeinPyPy_NewUI/newui/configWizard.py @@ -328,9 +328,13 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): self.stepsPerEInput = wx.TextCtrl(self, -1, settings.getPreference('steps_per_e', '865.888')) self.GetSizer().Add(self.stepsPerEInput, 0, wx.LEFT, 5) self.AddText("You can repeat these steps to get better calibration.") + self.AddSeperator() + self.AddText("If you still have filament in your printer which needs\nheat to remove, press the heat up button below:") + self.heatButton = self.AddButton("Heatup for filament removal") self.saveLengthButton.Bind(wx.EVT_BUTTON, self.OnSaveLengthClick) self.extrudeButton.Bind(wx.EVT_BUTTON, self.OnExtrudeClick) + self.heatButton.Bind(wx.EVT_BUTTON, self.OnHeatClick) def OnSaveLengthClick(self, e): currentEValue = float(self.stepsPerEInput.GetValue()) @@ -340,9 +344,11 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): self.lengthInput.SetValue("100") def OnExtrudeClick(self, e): - threading.Thread(target=self.OnRun).start() + threading.Thread(target=self.OnExtrudeRun).start() - def OnRun(self): + def OnExtrudeRun(self): + self.heatButton.Enable(False) + self.extrudeButton.Enable(False) currentEValue = float(self.stepsPerEInput.GetValue()) self.comm = machineCom.MachineCom() while True: @@ -355,7 +361,26 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): self.sendGCommand("M92 E%f" % (currentEValue)); self.sendGCommand("G92 E0"); self.sendGCommand("G1 E100 F300"); - time.sleep(5) + time.sleep(10) + self.comm.close() + self.extrudeButton.Enable() + self.heatButton.Enable() + + def OnHeatClick(self, e): + threading.Thread(target=self.OnHeatRun).start() + + def OnHeatRun(self, e): + self.comm = machineCom.MachineCom() + while True: + line = self.comm.readline() + if line == '': + return + if line.startswith('start'): + break + self.sendGCommand('M104 S200') #Set the temperature to 200C, should be enough to get PLA and ABS out. + wx.MessageBox('Wait till you can remove the filament from the machine, and press OK.\n(Temperature is set to 200C)', 'Machine heatup', wx.OK | wx.ICON_INFORMATION) + self.sendGCommand('M104 S0') + time.sleep(1) self.comm.close() def sendGCommand(self, cmd): From 16ca7b3683c1572d812b457562e5c9d140fa5f82 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 15 Mar 2012 17:14:20 +0100 Subject: [PATCH 11/31] Add our own 3D vector class, so we are less depended on Skeinforge. --- SkeinPyPy_NewUI/newui/gcodeInterpreter.py | 8 +-- SkeinPyPy_NewUI/newui/preview3d.py | 8 ++- SkeinPyPy_NewUI/newui/util3d.py | 70 +++++++++++++++++++++++ 3 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 SkeinPyPy_NewUI/newui/util3d.py diff --git a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py b/SkeinPyPy_NewUI/newui/gcodeInterpreter.py index 1bc88166f4..cb89cf1468 100644 --- a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py +++ b/SkeinPyPy_NewUI/newui/gcodeInterpreter.py @@ -3,13 +3,13 @@ import math import threading import re -from fabmetheus_utilities.vector3 import Vector3 +from newui import util3d class gcode(): def __init__(self, filename): f = open(filename, 'r') - pos = Vector3() - posOffset = Vector3() + pos = util3d.Vector3() + posOffset = util3d.Vector3() currentE = 0 pathList = [] scale = 1.0 @@ -73,7 +73,7 @@ class gcode(): y = self.getCodeFloat(line, 'Y') z = self.getCodeFloat(line, 'Z') if x is None and y is None and z is None: - pos = Vector3() + pos = util3d.Vector3() else: if x is not None: pos.x = 0.0 diff --git a/SkeinPyPy_NewUI/newui/preview3d.py b/SkeinPyPy_NewUI/newui/preview3d.py index fdcec82fa5..1bc41bc5da 100644 --- a/SkeinPyPy_NewUI/newui/preview3d.py +++ b/SkeinPyPy_NewUI/newui/preview3d.py @@ -14,10 +14,12 @@ except: print "Failed to find PyOpenGL: http://pyopengl.sourceforge.net/" hasOpenGLlibs = False -from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret -from fabmetheus_utilities.vector3 import Vector3 from fabmetheus_utilities import settings from newui import gcodeInterpreter +from newui import util3d + +from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret +from fabmetheus_utilities.vector3 import Vector3 class previewPanel(wx.Panel): def __init__(self, parent): @@ -347,7 +349,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas): for i in xrange(0, len(path['list'])-1): v0 = path['list'][i] v1 = path['list'][i+1] - normal = (v0 - v1).cross(Vector3(0,0,1)) + normal = (v0 - v1).cross(util3d.Vector3(0,0,1)) normal.normalize() v2 = v0 + normal * lineWidth v3 = v1 + normal * lineWidth diff --git a/SkeinPyPy_NewUI/newui/util3d.py b/SkeinPyPy_NewUI/newui/util3d.py new file mode 100644 index 0000000000..d9f53e5252 --- /dev/null +++ b/SkeinPyPy_NewUI/newui/util3d.py @@ -0,0 +1,70 @@ + +import math + +class Vector3(): + def __init__(self, x=0.0, y=0.0, z=0.0): + self.x = x + self.y = y + self.z = z + + def __copy__(self): + return Vector3(self.x, self.y, self.z) + + def copy(self): + return Vector3(self.x, self.y, self.z) + + def __repr__(self): + return '%s, %s, %s' % ( self.x, self.y, self.z ) + + def __add__(self, v): + return Vector3( self.x + v.x, self.y + v.y, self.z + v.z ) + + def __sub__(self, v): + return Vector3( self.x - v.x, self.y - v.y, self.z - v.z ) + + def __mul__(self, v): + return Vector3( self.x * v, self.y * v, self.z * v ) + + def __div__(self, v): + return Vector3( self.x / v, self.y / v, self.z / v ) + + def __neg__(self): + return Vector3( - self.x, - self.y, - self.z ) + + def __iadd__(self, v): + self.x += v.x + self.y += v.x + self.z += v.x + return self + + def __isub__(self, v): + self.x += v.x + self.y += v.x + self.z += v.x + return self + + def __imul__(self, v): + self.x *= v + self.y *= v + self.z *= v + return self + + def __idiv__(self, v): + self.x /= v + self.y /= v + self.z /= v + return self + + def cross(self, v): + return Vector3(self.y * v.z - self.z * v.y, -self.x * v.z + self.z * v.x, self.x * v.y - self.y * v.x) + + def vsize(self): + return math.sqrt( self.x * self.x + self.y * self.y + self.z * self.z ) + + def normalize(self): + f = self.vsize() + if f != 0.0: + self.x /= f + self.y /= f + self.z /= f + From b3d823e1e044ce2831bd0af999e1edd6a0994014 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 15 Mar 2012 17:27:37 +0100 Subject: [PATCH 12/31] Made the help popups show on focus for MacOS. This is not a perfect solution, as the popup had to be moved to it was not in the way of other controls. But atleast it shows the help for MacOS now. --- SkeinPyPy_NewUI/newui/configBase.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/configBase.py b/SkeinPyPy_NewUI/newui/configBase.py index 7c9ec2a1be..aa028e5256 100644 --- a/SkeinPyPy_NewUI/newui/configBase.py +++ b/SkeinPyPy_NewUI/newui/configBase.py @@ -65,8 +65,12 @@ class configWindowBase(wx.Frame): self.popup.text.SetLabel(setting.helpText) self.popup.text.Wrap(350) self.popup.Fit() - x, y = setting.ctrl.ClientToScreenXY(0, 0) - sx, sy = setting.ctrl.GetSizeTuple() + if os.name == 'darwin': + x, y = self.ClientToScreenXY(0, 0) + sx, sy = self.GetClientSizeTuple() + else: + x, y = setting.ctrl.ClientToScreenXY(0, 0) + sx, sy = setting.ctrl.GetSizeTuple() #if platform.system() == "Windows": # for some reason, under windows, the popup is relative to the main window... in some cases. (Wierd ass bug) # wx, wy = self.ClientToScreenXY(0, 0) @@ -126,8 +130,12 @@ class SettingRow(): sizer.Add(self.ctrl, (x,y+1), flag=wx.ALIGN_BOTTOM|wx.EXPAND) sizer.SetRows(x+1) - self.ctrl.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter) - self.ctrl.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseExit) + if os.name == 'darwin': + self.ctrl.Bind(wx.EVT_SET_FOCUS, self.OnMouseEnter) + self.ctrl.Bind(wx.EVT_KILL_FOCUS, self.OnMouseExit) + else: + self.ctrl.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter) + self.ctrl.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseExit) self.defaultBGColour = self.ctrl.GetBackgroundColour() From 66d6f1082a76d140fa420516ca4bf58e27f69094 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 15 Mar 2012 17:54:22 +0100 Subject: [PATCH 13/31] Renamed "load stl" to "load model", added better error output for dangling edges (so we can show them later) --- .../geometry/solids/triangle_mesh.py | 4 ++++ SkeinPyPy_NewUI/newui/mainWindow.py | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py b/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py index 82bd7ac4b5..a738c41f99 100644 --- a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py +++ b/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py @@ -687,6 +687,10 @@ def isPathAdded( edges, faces, loops, remainingEdgeTable, vertexes, z ): nextEdgeIndexAroundZ = getNextEdgeIndexAroundZ( edges[ nextEdgeIndexAroundZ ], faces, remainingEdgeTable ) if len( pathIndexes ) < 3: print('Dangling edges, will use intersecting circles to get import layer at height %s' % z) + for idx in pathIndexes: + if not hasattr(edges[idx], 'errorReported'): + print('Model error(dangle): ' + str(vertexes[edges[idx].vertexIndexes[0]]) + ' ' + str(vertexes[edges[idx].vertexIndexes[1]])) + edges[idx].errorReported = True del loops[:] return False loops.append( getPath( edges, pathIndexes, vertexes, z ) ) diff --git a/SkeinPyPy_NewUI/newui/mainWindow.py b/SkeinPyPy_NewUI/newui/mainWindow.py index 960a0ff65e..6c2ace4f79 100644 --- a/SkeinPyPy_NewUI/newui/mainWindow.py +++ b/SkeinPyPy_NewUI/newui/mainWindow.py @@ -32,8 +32,8 @@ class mainWindow(configBase.configWindowBase): menubar = wx.MenuBar() fileMenu = wx.Menu() - i = fileMenu.Append(-1, 'Load STL file...') - self.Bind(wx.EVT_MENU, self.OnLoadSTL, i) + i = fileMenu.Append(-1, 'Load model file...') + self.Bind(wx.EVT_MENU, self.OnLoadModel, i) fileMenu.AppendSeparator() i = fileMenu.Append(-1, 'Open Profile...') self.Bind(wx.EVT_MENU, self.OnLoadProfile, i) @@ -173,12 +173,12 @@ class mainWindow(configBase.configWindowBase): configBase.settingNotify(c, self.preview3d.updateModelTransform) # load and slice buttons. - loadButton = wx.Button(self, -1, 'Load STL') + loadButton = wx.Button(self, -1, 'Load Model') sliceButton = wx.Button(self, -1, 'Slice to GCode') - self.Bind(wx.EVT_BUTTON, self.OnLoadSTL, loadButton) + self.Bind(wx.EVT_BUTTON, self.OnLoadModel, loadButton) self.Bind(wx.EVT_BUTTON, self.OnSlice, sliceButton) #Also bind double clicking the 3D preview to load an STL file. - self.preview3d.glCanvas.Bind(wx.EVT_LEFT_DCLICK, self.OnLoadSTL, self.preview3d.glCanvas) + self.preview3d.glCanvas.Bind(wx.EVT_LEFT_DCLICK, self.OnLoadModel, self.preview3d.glCanvas) #Main sizer, to position the preview window, buttons and tab control sizer = wx.GridBagSizer() @@ -242,9 +242,9 @@ class mainWindow(configBase.configWindowBase): configWizard.configWizard() self.updateProfileToControls() - def OnLoadSTL(self, e): + def OnLoadModel(self, e): dlg=wx.FileDialog(self, "Open file to print", self.lastPath, style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) - dlg.SetWildcard("OBJ, STL files (*.stl;*.obj)|*.stl;*.obj") + dlg.SetWildcard("STL files (*.stl)|*.stl") if dlg.ShowModal() == wx.ID_OK: self.filename=dlg.GetPath() settings.putPreference('lastFile', self.filename) From dbf146b688b7373d398e9e7e0484bf4f981bb37a Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 11:23:34 +0100 Subject: [PATCH 14/31] Maybe fix issue #17 --- SkeinPyPy_NewUI/newui/mainWindow.py | 1 + 1 file changed, 1 insertion(+) diff --git a/SkeinPyPy_NewUI/newui/mainWindow.py b/SkeinPyPy_NewUI/newui/mainWindow.py index 6c2ace4f79..b2561808f5 100644 --- a/SkeinPyPy_NewUI/newui/mainWindow.py +++ b/SkeinPyPy_NewUI/newui/mainWindow.py @@ -278,6 +278,7 @@ class mainWindow(configBase.configWindowBase): newSize = self.GetSize(); newSize.IncBy(0, -spp.GetSize().GetHeight()) self.SetSize(newSize) + self.sizer.Remove(spp) spp.Destroy() for spp in self.progressPanelList: self.sizer.Remove(spp) From 7954a951a688123558d47d87e2c9c77317d1a94d Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 11:51:44 +0100 Subject: [PATCH 15/31] Added advanced config for support --- SkeinPyPy_NewUI/fabmetheus_utilities/settings.py | 9 +++++++-- SkeinPyPy_NewUI/newui/advancedConfig.py | 12 ++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py b/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py index e3e4689058..951f8b62c2 100644 --- a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py +++ b/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py @@ -72,6 +72,11 @@ def firstLayerSpeedRatio(setting): speed = float(getProfileSetting('print_speed')) return bottomSpeed/speed +def calcSupportDistanceRatio(setting): + edgeWidth = calculateEdgeWidth(setting) + distance = float(getProfileSetting('support_distance', '0.5')) + return distance / edgeWidth + def getSkeinPyPyProfileInformation(): return { 'carve': { @@ -207,8 +212,8 @@ def getSkeinPyPyProfileInformation(): 'Raft_Additional_Margin_over_Length_%': DEFSET, 'Raft_Margin_mm': DEFSET, 'Support_Cross_Hatch': 'False', - 'Support_Flow_Rate_over_Operating_Flow_Rate_ratio': DEFSET, - 'Support_Gap_over_Perimeter_Extrusion_Width_ratio': DEFSET, + 'Support_Flow_Rate_over_Operating_Flow_Rate_ratio': storedPercentSetting('support_rate'), + 'Support_Gap_over_Perimeter_Extrusion_Width_ratio': calcSupportDistanceRatio, 'Support_Material_Choice_': storedSetting("support"), 'Support_Minimum_Angle_degrees': DEFSET, },'skirt': { diff --git a/SkeinPyPy_NewUI/newui/advancedConfig.py b/SkeinPyPy_NewUI/newui/advancedConfig.py index 185af56d36..dbc4ba6830 100644 --- a/SkeinPyPy_NewUI/newui/advancedConfig.py +++ b/SkeinPyPy_NewUI/newui/advancedConfig.py @@ -28,10 +28,14 @@ class advancedConfigWindow(configBase.configWindowBase): c = configBase.SettingRow(left, "Print order sequence", 'sequence', ['Loops > Perimeter > Infill', 'Loops > Infill > Perimeter', 'Infill > Loops > Perimeter', 'Infill > Perimeter > Loops', 'Perimeter > Infill > Loops', 'Perimeter > Loops > Infill'], 'Sequence of printing. The perimeter is the outer print edge, the loops are the insides of the walls, and the infill is the insides.'); c = configBase.SettingRow(left, "Force first layer sequence", 'force_first_layer_sequence', True, 'This setting forces the order of the first layer to be \'Perimeter > Loops > Infill\'') - configBase.TitleRow(left, "Infill") - c = configBase.SettingRow(left, "Infill pattern", 'infill_type', ['Line', 'Grid Circular', 'Grid Hexagonal', 'Grid Rectangular'], 'Pattern of the none-solid infill. Line is default, but grids can provide a strong print.') - c = configBase.SettingRow(left, "Solid infill top", 'solid_top', True, 'Create a solid top surface, if set to false the top is filled with the fill percentage. Useful for cups/vases.') - c = configBase.SettingRow(left, "Infill overlap (%)", 'fill_overlap', '15', 'Amount of overlap between the infill and the walls. There is a slight overlap with the walls and the infill so the walls connect firmly to the infill.') + configBase.TitleRow(right, "Infill") + c = configBase.SettingRow(right, "Infill pattern", 'infill_type', ['Line', 'Grid Circular', 'Grid Hexagonal', 'Grid Rectangular'], 'Pattern of the none-solid infill. Line is default, but grids can provide a strong print.') + c = configBase.SettingRow(right, "Solid infill top", 'solid_top', True, 'Create a solid top surface, if set to false the top is filled with the fill percentage. Useful for cups/vases.') + c = configBase.SettingRow(right, "Infill overlap (%)", 'fill_overlap', '15', 'Amount of overlap between the infill and the walls. There is a slight overlap with the walls and the infill so the walls connect firmly to the infill.') + + configBase.TitleRow(right, "Support") + c = configBase.SettingRow(right, "Support material amount (%)", 'support_rate', '100', 'Amount of material used for support, less material gives a weaker support structure which is easier to remove.') + c = configBase.SettingRow(right, "Support distance from object (mm)", 'support_distance', '0.5', 'Distance between the support structure and the object.') configBase.TitleRow(left, "Joris") c = configBase.SettingRow(left, "Joris the outer edge", 'joris', False, '[Joris] is a code name for smoothing out the Z move of the outer edge. This will create a steady Z increase over the whole print. It is intended to be used with a single walled wall thickness to make cups/vases.') From bb0b36cc079cac28ee72a8d91c0ae4012113c652 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 12:07:43 +0100 Subject: [PATCH 16/31] Added multiply settings --- .../fabmetheus_utilities/settings.py | 4 +- SkeinPyPy_NewUI/newui/mainWindow.py | 7 ++++ SkeinPyPy_NewUI/newui/preview3d.py | 39 ++++++++++++------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py b/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py index 951f8b62c2..f9729162e9 100644 --- a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py +++ b/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py @@ -154,8 +154,8 @@ def getSkeinPyPyProfileInformation(): 'Activate_Multiply': "True", 'Center_X_mm': storedSetting("machine_center_x"), 'Center_Y_mm': storedSetting("machine_center_y"), - 'Number_of_Columns_integer': "1", - 'Number_of_Rows_integer': "1", + 'Number_of_Columns_integer': storedSetting('model_multiply_x', '1'), + 'Number_of_Rows_integer': storedSetting('model_multiply_y', '1'), 'Reverse_Sequence_every_Odd_Layer': DEFSET, 'Separation_over_Perimeter_Width_ratio': DEFSET, },'speed': { diff --git a/SkeinPyPy_NewUI/newui/mainWindow.py b/SkeinPyPy_NewUI/newui/mainWindow.py index b2561808f5..ab42129b39 100644 --- a/SkeinPyPy_NewUI/newui/mainWindow.py +++ b/SkeinPyPy_NewUI/newui/mainWindow.py @@ -171,6 +171,13 @@ class mainWindow(configBase.configWindowBase): c = configBase.SettingRow(right, "Rotate (deg)", 'model_rotate_base', '0', '') validators.validFloat(c) configBase.settingNotify(c, self.preview3d.updateModelTransform) + configBase.TitleRow(right, "Multiply") + c = configBase.SettingRow(right, "Multiple X", 'model_multiply_x', '1', '') + validators.validInt(c) + configBase.settingNotify(c, self.preview3d.updateModelTransform) + c = configBase.SettingRow(right, "Multiple Y", 'model_multiply_y', '1', '') + validators.validInt(c) + configBase.settingNotify(c, self.preview3d.updateModelTransform) # load and slice buttons. loadButton = wx.Button(self, -1, 'Load Model') diff --git a/SkeinPyPy_NewUI/newui/preview3d.py b/SkeinPyPy_NewUI/newui/preview3d.py index 1bc41bc5da..b7afb4f477 100644 --- a/SkeinPyPy_NewUI/newui/preview3d.py +++ b/SkeinPyPy_NewUI/newui/preview3d.py @@ -381,21 +381,32 @@ class PreviewGLCanvas(glcanvas.GLCanvas): self.modelDisplayList = glGenLists(1); if self.parent.modelDirty: self.parent.modelDirty = False + multiX = int(settings.getProfileSetting('model_multiply_x', '1')) + multiY = int(settings.getProfileSetting('model_multiply_y', '1')) + modelSize = self.parent.triangleMesh.getCarveCornerMaximum() - self.parent.triangleMesh.getCarveCornerMinimum() glNewList(self.modelDisplayList, GL_COMPILE) - glBegin(GL_TRIANGLES) - for face in self.parent.triangleMesh.faces: - v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]] - v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]] - v3 = self.parent.triangleMesh.vertexes[face.vertexIndexes[2]] - glNormal3f(face.normal.x, face.normal.y, face.normal.z) - glVertex3f(v1.x, v1.y, v1.z) - glVertex3f(v2.x, v2.y, v2.z) - glVertex3f(v3.x, v3.y, v3.z) - glNormal3f(-face.normal.x, -face.normal.y, -face.normal.z) - glVertex3f(v1.x, v1.y, v1.z) - glVertex3f(v3.x, v3.y, v3.z) - glVertex3f(v2.x, v2.y, v2.z) - glEnd() + glPushMatrix() + glTranslate(-(modelSize.x+self.lineWidth*15)*(multiX-1)/2,-(modelSize.y+self.lineWidth*15)*(multiY-1)/2, 0) + for mx in xrange(0, multiX): + for my in xrange(0, multiY): + for face in self.parent.triangleMesh.faces: + glPushMatrix() + glTranslate((modelSize.x+self.lineWidth*15)*mx,(modelSize.y+self.lineWidth*15)*my, 0) + glBegin(GL_TRIANGLES) + v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]] + v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]] + v3 = self.parent.triangleMesh.vertexes[face.vertexIndexes[2]] + glNormal3f(face.normal.x, face.normal.y, face.normal.z) + glVertex3f(v1.x, v1.y, v1.z) + glVertex3f(v2.x, v2.y, v2.z) + glVertex3f(v3.x, v3.y, v3.z) + glNormal3f(-face.normal.x, -face.normal.y, -face.normal.z) + glVertex3f(v1.x, v1.y, v1.z) + glVertex3f(v3.x, v3.y, v3.z) + glVertex3f(v2.x, v2.y, v2.z) + glEnd() + glPopMatrix() + glPopMatrix() glEndList() if self.renderTransparent: #If we want transparent, then first render a solid black model to remove the printer size lines. From fb456669d25a9cc50eb57658790200390c291d5b Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 12:30:27 +0100 Subject: [PATCH 17/31] Added help menu items, and warning for MacOS --- SkeinPyPy_NewUI/newui/mainWindow.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/SkeinPyPy_NewUI/newui/mainWindow.py b/SkeinPyPy_NewUI/newui/mainWindow.py index ab42129b39..c7d91a2086 100644 --- a/SkeinPyPy_NewUI/newui/mainWindow.py +++ b/SkeinPyPy_NewUI/newui/mainWindow.py @@ -1,7 +1,7 @@ from __future__ import absolute_import import __init__ -import wx, os, platform, types +import wx, os, platform, types, webbrowser from fabmetheus_utilities import settings @@ -18,6 +18,8 @@ from newui import machineCom def main(): app = wx.App(False) if settings.getPreference('wizardDone', 'False') == 'False': + if os.name == 'darwin': + wx.MessageBox('The MacOS version of SkeinPyPy is experimental.\nThere are still UI/usability bugs. Check the issue list at:\nhttps://github.com/daid/SkeinPyPy/issues\nfor details.\nPlease report any extra issue you find.', 'MacOS Warning', wx.OK | wx.ICON_INFORMATION) configWizard.configWizard() settings.putPreference("wizardDone", "True") mainWindow() @@ -59,6 +61,13 @@ class mainWindow(configBase.configWindowBase): i = expertMenu.Append(-1, 'ReRun first run wizard...') self.Bind(wx.EVT_MENU, self.OnFirstRunWizard, i) menubar.Append(expertMenu, 'Expert') + + helpMenu = wx.Menu() + i = helpMenu.Append(-1, 'Online documentation...') + self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/SkeinPyPy/wiki'), i) + i = helpMenu.Append(-1, 'Report a problem...') + self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/SkeinPyPy/issues'), i) + menubar.Append(helpMenu, 'Help') self.SetMenuBar(menubar) self.lastPath = "" From 6a5cab63d7e0b8be3384ba35c1237286c288f9a7 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 13:27:04 +0100 Subject: [PATCH 18/31] Fix the multiply feature (oops). Added total extrusion calculation to GCode interpreter --- .../fabmetheus_utilities/settings.py | 4 +-- SkeinPyPy_NewUI/newui/gcodeInterpreter.py | 27 +++++++++++++------ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py b/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py index f9729162e9..41c4d460bc 100644 --- a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py +++ b/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py @@ -154,8 +154,8 @@ def getSkeinPyPyProfileInformation(): 'Activate_Multiply': "True", 'Center_X_mm': storedSetting("machine_center_x"), 'Center_Y_mm': storedSetting("machine_center_y"), - 'Number_of_Columns_integer': storedSetting('model_multiply_x', '1'), - 'Number_of_Rows_integer': storedSetting('model_multiply_y', '1'), + 'Number_of_Columns_integer': storedSetting('model_multiply_x'), + 'Number_of_Rows_integer': storedSetting('model_multiply_y'), 'Reverse_Sequence_every_Odd_Layer': DEFSET, 'Separation_over_Perimeter_Width_ratio': DEFSET, },'speed': { diff --git a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py b/SkeinPyPy_NewUI/newui/gcodeInterpreter.py index cb89cf1468..ea9ed5abc7 100644 --- a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py +++ b/SkeinPyPy_NewUI/newui/gcodeInterpreter.py @@ -10,7 +10,8 @@ class gcode(): f = open(filename, 'r') pos = util3d.Vector3() posOffset = util3d.Vector3() - currentE = 0 + currentE = 0.0 + totalExtrusion = 0.0 pathList = [] scale = 1.0 posAbs = True @@ -52,18 +53,26 @@ class gcode(): layerNr += 1 if f is not None: feedRate = f - newPoint = pos.copy() moveType = 'move' if e is not None: - if e > currentE: - moveType = 'extrude' - if e < currentE: - moveType = 'retract' - currentE = e + if posAbs: + if e > currentE: + moveType = 'extrude' + if e < currentE: + moveType = 'retract' + totalExtrusion += e - currentE + currentE = e + else: + if e > 0: + moveType = 'extrude' + if e < 0: + moveType = 'retract' + totalExtrusion += e + currentE += e if currentPath['type'] != moveType or currentPath['pathType'] != pathType: pathList.append(currentPath) currentPath = {'type': moveType, 'pathType': pathType, 'list': [currentPath['list'][-1]], 'layerNr': layerNr} - currentPath['list'].append(newPoint) + currentPath['list'].append(pos.copy()) elif G == 20: #Units are inches scale = 25.4 elif G == 21: #Units are mm @@ -125,6 +134,8 @@ class gcode(): print "Unknown M code:" + str(M) self.layerCount = layerNr self.pathList = pathList + self.totalExtrusion = totalExtrusion + print "Extruded a total of: %d mm of filament" % (self.totalExtrusion) def getCodeInt(self, str, id): m = re.search(id + '([^\s]+)', str) From d271198e48203f2cd0eed1dffdd44e88a7b8aca1 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 13:43:49 +0100 Subject: [PATCH 19/31] Report actual amount of filament pressed forward, even after final retraction. --- SkeinPyPy_NewUI/newui/gcodeInterpreter.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py b/SkeinPyPy_NewUI/newui/gcodeInterpreter.py index ea9ed5abc7..f9f4ed7484 100644 --- a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py +++ b/SkeinPyPy_NewUI/newui/gcodeInterpreter.py @@ -12,6 +12,7 @@ class gcode(): posOffset = util3d.Vector3() currentE = 0.0 totalExtrusion = 0.0 + maxExtrusion = 0.0 pathList = [] scale = 1.0 posAbs = True @@ -69,6 +70,8 @@ class gcode(): moveType = 'retract' totalExtrusion += e currentE += e + if totalExtrusion > maxExtrusion: + maxExtrusion = totalExtrusion if currentPath['type'] != moveType or currentPath['pathType'] != pathType: pathList.append(currentPath) currentPath = {'type': moveType, 'pathType': pathType, 'list': [currentPath['list'][-1]], 'layerNr': layerNr} @@ -134,8 +137,8 @@ class gcode(): print "Unknown M code:" + str(M) self.layerCount = layerNr self.pathList = pathList - self.totalExtrusion = totalExtrusion - print "Extruded a total of: %d mm of filament" % (self.totalExtrusion) + self.extrusionAmount = extrusionAmount + print "Extruded a total of: %d mm of filament" % (self.extrusionAmount) def getCodeInt(self, str, id): m = re.search(id + '([^\s]+)', str) From 94a50b7586801113b6326e597a4f5ec5a42c3ada Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 13:45:03 +0100 Subject: [PATCH 20/31] Typo fix --- SkeinPyPy_NewUI/newui/gcodeInterpreter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py b/SkeinPyPy_NewUI/newui/gcodeInterpreter.py index f9f4ed7484..acea228a74 100644 --- a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py +++ b/SkeinPyPy_NewUI/newui/gcodeInterpreter.py @@ -137,7 +137,7 @@ class gcode(): print "Unknown M code:" + str(M) self.layerCount = layerNr self.pathList = pathList - self.extrusionAmount = extrusionAmount + self.extrusionAmount = maxExtrusion print "Extruded a total of: %d mm of filament" % (self.extrusionAmount) def getCodeInt(self, str, id): From 76d4b0f95bfaadbe0390aaf08b149cd14413dc29 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 14:35:42 +0100 Subject: [PATCH 21/31] Renamed the build.sh to package.sh to better reflect what the script does. --- build.sh => package.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build.sh => package.sh (100%) diff --git a/build.sh b/package.sh similarity index 100% rename from build.sh rename to package.sh From 973a84ac8f44a2462cde4968c6aea1040f80552b Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 14:52:47 +0100 Subject: [PATCH 22/31] Changes to the layer coloring, better visible gcode path now --- SkeinPyPy_NewUI/newui/preview3d.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/preview3d.py b/SkeinPyPy_NewUI/newui/preview3d.py index b7afb4f477..041c615cb7 100644 --- a/SkeinPyPy_NewUI/newui/preview3d.py +++ b/SkeinPyPy_NewUI/newui/preview3d.py @@ -325,9 +325,9 @@ class PreviewGLCanvas(glcanvas.GLCanvas): c = 1.0 if path['layerNr'] != self.parent.layerSpin.GetValue(): if path['layerNr'] < self.parent.layerSpin.GetValue(): - c = 0.5 - (self.parent.layerSpin.GetValue() - path['layerNr']) * 0.1 - if c < 0.1: - c = 0.1 + c = 0.9 - (self.parent.layerSpin.GetValue() - path['layerNr']) * 0.1 + if c < 0.4: + c = 0.4 else: break if path['type'] == 'move': @@ -341,7 +341,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas): glColor3f(c,0,0) if path['type'] == 'retract': glColor3f(0,c,c) - if c > 0.1 and path['type'] == 'extrude': + if c > 0.4 and path['type'] == 'extrude': if path['pathType'] == 'FILL': lineWidth = self.fillLineWidth / 2 else: From 1068de54ab798d5bac52920038a5e359c5ec5257 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 15:09:46 +0100 Subject: [PATCH 23/31] Remove useless files (ever noticed Skeinforge is a mess, in EVERY possible way?) --- .../models/Screw Holder Bottom.stl | 2886 ----------- SkeinPyPy_NewUI/models/Screw Holder.gts | 4493 ----------------- SkeinPyPy_NewUI/models/box.obj | 79 - SkeinPyPy_NewUI/models/inkscape_star.svg | 80 - SkeinPyPy_NewUI/profiles/CupDeJoris.ini | 40 + 5 files changed, 40 insertions(+), 7538 deletions(-) delete mode 100644 SkeinPyPy_NewUI/models/Screw Holder Bottom.stl delete mode 100644 SkeinPyPy_NewUI/models/Screw Holder.gts delete mode 100644 SkeinPyPy_NewUI/models/box.obj delete mode 100644 SkeinPyPy_NewUI/models/inkscape_star.svg create mode 100644 SkeinPyPy_NewUI/profiles/CupDeJoris.ini diff --git a/SkeinPyPy_NewUI/models/Screw Holder Bottom.stl b/SkeinPyPy_NewUI/models/Screw Holder Bottom.stl deleted file mode 100644 index f372a18a33..0000000000 --- a/SkeinPyPy_NewUI/models/Screw Holder Bottom.stl +++ /dev/null @@ -1,2886 +0,0 @@ -solid "Screw_Holder_Bottom"; Produced by Art of Illusion 2.4, Fri Oct 16 16:42:04 PDT 2009 -facet normal 0 -0.831469612304 0.555570233017 - outer loop - vertex 54.002309837942 24.804173569059 0.110046151702 - vertex 48.011309837942 24.804173569059 0.110046151702 - vertex 54.002309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 24.730643081307 0 - vertex 14.883210818105 25.830303993361 0 - vertex 15.262563132924 25.262563132924 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 60 23 0 - vertex 54.002309837942 24.730643081307 0 - vertex 60 40 0 - endloop -endfacet -facet normal 0 0.831469612301 0.555570233022 - outer loop - vertex 54.002309837942 15.269356918694 0 - vertex 48.011309837942 15.269356918694 0 - vertex 54.002309837942 15.195826430941 0.110046151702 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.464705848856 10 0 - vertex 15.830303993361 11.883210818105 0 - vertex 16.5 11.75 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 52 30 0 - vertex 43.737436867076 27.737436867076 0 - vertex 43.169696006639 28.116789181895 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 43.169696006639 15.116789181895 0 - vertex 42.5 15.25 0 - vertex 41.422110817733 17 0 - endloop -endfacet -facet normal 0 -0.831469612304 0.555570233017 - outer loop - vertex 48.011309837942 24.730643081307 0 - vertex 54.002309837942 24.730643081307 0 - vertex 48.011309837942 24.804173569059 0.110046151702 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 52 30 0 - vertex 43.169696006639 28.116789181895 0 - vertex 42.5 28.25 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 60 40 0 - vertex 52 30 0 - vertex 52 40 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.883210818105 14.169696006639 0 - vertex 14.75 13.5 0 - vertex 12.002309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.883210818105 27.169696006639 0 - vertex 14.042553191489 30 0 - vertex 15.262563132924 27.737436867076 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.464705848856 10 0 - vertex 16.5 11.75 0 - vertex 17.169696006639 11.883210818105 0 - endloop -endfacet -facet normal 0 0.831469612301 0.555570233022 - outer loop - vertex 48.011309837942 15.195826430941 0.110046151702 - vertex 54.002309837942 15.195826430941 0.110046151702 - vertex 48.011309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.042553191489 30 0 - vertex 17.169696006639 28.116789181895 0 - vertex 16.5 28.25 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 15.269356918694 0 - vertex 14.75 13.5 0 - vertex 14.883210818105 12.830303993361 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 54.002309837942 17 0 - vertex 60 17 0 - vertex 54.002309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 52 10 0 - vertex 42.5 11.75 0 - vertex 43.169696006639 11.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 15.269356918694 0 - vertex 15.262563132924 14.737436867076 0 - vertex 14.883210818105 14.169696006639 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 52 10 0 - vertex 14.464705848856 10 0 - vertex 42.5 11.75 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.042553191489 30 0 - vertex 15.830303993361 28.116789181895 0 - vertex 15.262563132924 27.737436867076 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.464705848856 10 0 - vertex 15.262563132924 12.262563132924 0 - vertex 15.830303993361 11.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.042553191489 30 0 - vertex 16.5 28.25 0 - vertex 15.830303993361 28.116789181895 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 54.002309837942 24.730643081307 0 - vertex 60 23 0 - vertex 54.002309837942 23 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 23 0 - vertex 16.5 24.75 0 - vertex 17.169696006639 24.883210818105 0 - endloop -endfacet -facet normal 0 0.831469612301 0.555570233022 - outer loop - vertex 6.011309837942 15.269356918694 0 - vertex 6.011309837942 15.195826430941 0.110046151702 - vertex 12.002309837942 15.195826430941 0.110046151702 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.75 26.5 0 - vertex 12.002309837942 24.730643081307 0 - vertex 14.883210818105 27.169696006639 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 52 30 0 - vertex 60 40 0 - vertex 54.002309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 41.422110817733 17 0 - vertex 48.011309837942 17 0 - vertex 43.169696006639 15.116789181895 0 - endloop -endfacet -facet normal 0.980785280403 0.195090322016 0 - outer loop - vertex 14.75 13.5 0 - vertex 14.883210818105 12.830303993361 0.77775 - vertex 14.883210818105 12.830303993361 0 - endloop -endfacet -facet normal -0 -0 -1 - outer loop - vertex 6.011309837942 17 0 - vertex 6.011309837942 15.269356918694 0 - vertex 0 17 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 41.422110817733 17 0 - vertex 41.830303993361 15.116789181895 0 - vertex 41.262563132924 14.737436867076 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.169696006639 11.883210818105 0 - vertex 17.737436867076 12.262563132924 0 - vertex 41.830303993361 11.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 6.011309837942 15.269356918694 0 - vertex 0 10 0 - vertex 0 17 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.883210818105 25.830303993361 0 - vertex 12.002309837942 24.730643081307 0 - vertex 14.75 26.5 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 48.011309837942 24.730643081307 0 - vertex 52 30 0 - vertex 54.002309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 48.011309837942 17 0 - vertex 43.737436867076 14.737436867076 0 - vertex 43.169696006639 15.116789181895 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 42.5 15.25 0 - vertex 41.830303993361 15.116789181895 0 - vertex 41.422110817733 17 0 - endloop -endfacet -facet normal -0 -0 -1 - outer loop - vertex 12.002309837942 15.269356918694 0 - vertex 14.883210818105 12.830303993361 0 - vertex 6.011309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 0 23 0 - vertex 0 30 0 - vertex 6.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0.831469612301 0.555570233022 - outer loop - vertex 12.002309837942 15.269356918694 0 - vertex 6.011309837942 15.269356918694 0 - vertex 12.002309837942 15.195826430941 0.110046151702 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 54.002309837942 15.269356918694 0 - vertex 60 17 0 - vertex 52 10 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 6.011309837942 23 0 - vertex 0 23 0 - vertex 6.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 44.116789181895 14.169696006639 0 - vertex 48.011309837942 15.269356918694 0 - vertex 44.25 13.5 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 18.116789181895 27.169696006639 0 - vertex 41.262563132924 25.262563132924 0 - vertex 18.25 26.5 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 18.116789181895 25.830303993361 0 - vertex 18.25 26.5 0 - vertex 41.830303993361 24.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.737436867076 14.737436867076 0 - vertex 41.262563132924 14.737436867076 0 - vertex 40.883210818105 14.169696006639 0 - endloop -endfacet -facet normal -0 -0 -1 - outer loop - vertex 41.262563132924 25.262563132924 0 - vertex 41.830303993361 24.883210818105 0 - vertex 18.25 26.5 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.737436867076 25.262563132924 0 - vertex 18.116789181895 25.830303993361 0 - vertex 41.830303993361 24.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.737436867076 12.262563132924 0 - vertex 18.116789181895 12.830303993361 0 - vertex 40.883210818105 12.830303993361 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.737436867076 12.262563132924 0 - vertex 41.262563132924 12.262563132924 0 - vertex 41.830303993361 11.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 41.262563132924 27.737436867076 0 - vertex 17.169696006639 28.116789181895 0 - vertex 41.830303993361 28.116789181895 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 42.5 11.75 0 - vertex 14.464705848856 10 0 - vertex 17.169696006639 11.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 44.25 26.5 0 - vertex 44.116789181895 27.169696006639 0 - vertex 48.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 40.883210818105 12.830303993361 0 - vertex 41.262563132924 12.262563132924 0 - vertex 17.737436867076 12.262563132924 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.169696006639 24.883210818105 0 - vertex 17.737436867076 25.262563132924 0 - vertex 41.830303993361 24.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 44.116789181895 12.830303993361 0 - vertex 44.25 13.5 0 - vertex 48.011309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 18.116789181895 12.830303993361 0 - vertex 40.75 13.5 0 - vertex 40.883210818105 12.830303993361 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 18.25 13.5 0 - vertex 18.116789181895 14.169696006639 0 - vertex 40.883210818105 14.169696006639 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 41.262563132924 14.737436867076 0 - vertex 17.737436867076 14.737436867076 0 - vertex 17.169696006639 15.116789181895 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 18.116789181895 14.169696006639 0 - vertex 17.737436867076 14.737436867076 0 - vertex 40.883210818105 14.169696006639 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 44.116789181895 25.830303993361 0 - vertex 44.25 26.5 0 - vertex 48.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0.980785280403 -0.195090322016 0 - outer loop - vertex 14.883210818105 14.169696006639 0.77775 - vertex 14.75 13.5 0.77775 - vertex 14.883210818105 14.169696006639 0 - endloop -endfacet -facet normal 0.980785280403 -0.195090322016 0 - outer loop - vertex 14.75 13.5 0.77775 - vertex 14.75 13.5 0 - vertex 14.883210818105 14.169696006639 0 - endloop -endfacet -facet normal 0.195090322016 -0.980785280403 0 - outer loop - vertex 41.830303993361 28.116789181895 0 - vertex 42.5 28.25 0.77775 - vertex 41.830303993361 28.116789181895 0.77775 - endloop -endfacet -facet normal 0.555570233021 0.831469612302 0 - outer loop - vertex 15.830303993361 24.883210818105 0.77775 - vertex 15.830303993361 24.883210818105 0 - vertex 15.262563132924 25.262563132924 0 - endloop -endfacet -facet normal -0.195090322016 -0.980785280403 0 - outer loop - vertex 16.5 28.25 0 - vertex 17.169696006639 28.116789181895 0.77775 - vertex 16.5 28.25 0.77775 - endloop -endfacet -facet normal -0.195090322016 0.980785280403 0 - outer loop - vertex 43.169696006639 24.883210818105 0 - vertex 42.5 24.75 0.77775 - vertex 43.169696006639 24.883210818105 0.77775 - endloop -endfacet -facet normal 0.195090322016 -0.980785280403 0 - outer loop - vertex 16.5 28.25 0.77775 - vertex 15.830303993361 28.116789181895 0.77775 - vertex 16.5 28.25 0 - endloop -endfacet -facet normal 0.195090322016 -0.980785280403 0 - outer loop - vertex 15.830303993361 28.116789181895 0.77775 - vertex 15.830303993361 28.116789181895 0 - vertex 16.5 28.25 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 0 23 0 - vertex 6.011309837942 23 0.77775 - vertex 0 23 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 60 0 0.77775 - vertex 52 10 0.77775 - vertex 52 0 0.77775 - endloop -endfacet -facet normal 0.980785280403 -0.195090322016 0 - outer loop - vertex 40.883210818105 27.169696006639 0 - vertex 40.883210818105 27.169696006639 0.77775 - vertex 40.75 26.5 0 - endloop -endfacet -facet normal -0.195090322016 0.980785280403 0 - outer loop - vertex 17.169696006639 24.883210818105 0.77775 - vertex 17.169696006639 24.883210818105 0 - vertex 16.5 24.75 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 52 0 0 - vertex 52 0 0.77775 - vertex 52 10 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 34.416922535211 17 0.77775 - vertex 40.883210818105 12.830303993361 0.77775 - vertex 40.75 13.5 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 12.002309837942 23 0.77775 - vertex 12.002309837942 24.936988122232 0.77775 - vertex 12.002309837942 24.804173569059 0.110046151702 - endloop -endfacet -facet normal 0.195090322016 0.980785280403 0 - outer loop - vertex 42.5 24.75 0 - vertex 41.830303993361 24.883210818105 0.77775 - vertex 42.5 24.75 0.77775 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 60 0 0 - vertex 60 0 0.77775 - vertex 52 0 0 - endloop -endfacet -facet normal 0.555570233021 -0.831469612302 0 - outer loop - vertex 15.830303993361 28.116789181895 0.77775 - vertex 15.262563132924 27.737436867076 0.77775 - vertex 15.830303993361 28.116789181895 0 - endloop -endfacet -facet normal 0.555570233021 -0.831469612302 0 - outer loop - vertex 15.262563132924 27.737436867076 0.77775 - vertex 15.262563132924 27.737436867076 0 - vertex 15.830303993361 28.116789181895 0 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 6.011309837942 17 0.77775 - vertex 6.011309837942 17 0 - vertex 0 17 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 48.011309837942 17 0 - vertex 48.011309837942 17 0.77775 - vertex 48.011309837942 15.063011877768 0.77775 - endloop -endfacet -facet normal -0.980785280403 -0.195090322016 0 - outer loop - vertex 18.25 26.5 0 - vertex 18.25 26.5 0.77775 - vertex 18.116789181895 27.169696006639 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 15.262563132924 14.737436867076 0.77775 - vertex 15.830303993361 15.116789181895 0.77775 - vertex 15.455907969142 17 0.77775 - endloop -endfacet -facet normal 0 0.980785280403 0.195090322015 - outer loop - vertex 54.002309837942 15.063011877768 0.77775 - vertex 54.002309837942 15.195826430941 0.110046151702 - vertex 48.011309837942 15.195826430941 0.110046151702 - endloop -endfacet -facet normal -0.980785280403 -0.195090322016 0 - outer loop - vertex 44.25 26.5 0 - vertex 44.25 26.5 0.77775 - vertex 44.116789181895 27.169696006639 0.77775 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 52 10 0 - vertex 15.306548743796 10 0.77775 - vertex 14.464705848856 10 0 - endloop -endfacet -facet normal 0.980785280403 0.195090322016 0 - outer loop - vertex 40.75 26.5 0.77775 - vertex 40.883210818105 25.830303993361 0 - vertex 40.75 26.5 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 48.011309837942 15.063011877768 0.77775 - vertex 48.011309837942 15.195826430941 0.110046151702 - vertex 48.011309837942 15.269356918694 0 - endloop -endfacet -facet normal -0.831469612302 -0.555570233021 -0 - outer loop - vertex 44.116789181895 27.169696006639 0.77775 - vertex 43.737436867076 27.737436867076 0.77775 - vertex 44.116789181895 27.169696006639 0 - endloop -endfacet -facet normal -0.831469612302 -0.555570233021 -0 - outer loop - vertex 43.737436867076 27.737436867076 0.77775 - vertex 43.737436867076 27.737436867076 0 - vertex 44.116789181895 27.169696006639 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 52 10 0 - vertex 52 10 0.77775 - vertex 15.306548743796 10 0.77775 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 6.011309837942 23 0.77775 - vertex 6.011309837942 23 0 - vertex 6.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 34.416922535211 17 0.77775 - vertex 40.883210818105 14.169696006639 0.77775 - vertex 41.262563132924 14.737436867076 0.77775 - endloop -endfacet -facet normal 0.980785280403 0.195090322016 0 - outer loop - vertex 14.75 26.5 0 - vertex 14.883210818105 25.830303993361 0.77775 - vertex 14.883210818105 25.830303993361 0 - endloop -endfacet -facet normal 0 -0.980785280403 0.195090322015 - outer loop - vertex 6.011309837942 24.936988122232 0.77775 - vertex 6.011309837942 24.804173569059 0.110046151702 - vertex 12.002309837942 24.804173569059 0.110046151702 - endloop -endfacet -facet normal -0.831469612302 -0.555570233021 -0 - outer loop - vertex 18.116789181895 14.169696006639 0.77775 - vertex 17.737436867076 14.737436867076 0.77775 - vertex 18.116789181895 14.169696006639 0 - endloop -endfacet -facet normal -0.831469612302 -0.555570233021 -0 - outer loop - vertex 17.737436867076 14.737436867076 0.77775 - vertex 17.737436867076 14.737436867076 0 - vertex 18.116789181895 14.169696006639 0 - endloop -endfacet -facet normal 0.195090322016 -0.980785280403 0 - outer loop - vertex 42.5 15.25 0.77775 - vertex 41.830303993361 15.116789181895 0.77775 - vertex 42.5 15.25 0 - endloop -endfacet -facet normal 0.195090322016 -0.980785280403 0 - outer loop - vertex 41.830303993361 15.116789181895 0.77775 - vertex 41.830303993361 15.116789181895 0 - vertex 42.5 15.25 0 - endloop -endfacet -facet normal 0.831469612302 -0.555570233021 0 - outer loop - vertex 15.262563132924 14.737436867076 0.77775 - vertex 14.883210818105 14.169696006639 0.77775 - vertex 15.262563132924 14.737436867076 0 - endloop -endfacet -facet normal 0.831469612302 -0.555570233021 0 - outer loop - vertex 14.883210818105 14.169696006639 0.77775 - vertex 14.883210818105 14.169696006639 0 - vertex 15.262563132924 14.737436867076 0 - endloop -endfacet -facet normal -0.555570233021 -0.831469612302 0 - outer loop - vertex 43.169696006639 15.116789181895 0 - vertex 43.737436867076 14.737436867076 0.77775 - vertex 43.169696006639 15.116789181895 0.77775 - endloop -endfacet -facet normal 0.980785280403 0.195090322016 0 - outer loop - vertex 14.75 13.5 0.77775 - vertex 14.883210818105 12.830303993361 0.77775 - vertex 14.75 13.5 0 - endloop -endfacet -facet normal 0.831469612302 -0.555570233021 0 - outer loop - vertex 41.262563132924 14.737436867076 0.77775 - vertex 40.883210818105 14.169696006639 0.77775 - vertex 40.883210818105 14.169696006639 0 - endloop -endfacet -facet normal -0.195090322016 0.980785280403 0 - outer loop - vertex 42.5 11.75 0.77775 - vertex 43.169696006639 11.883210818105 0.77775 - vertex 43.169696006639 11.883210818105 0 - endloop -endfacet -facet normal -0.555570233021 -0.831469612302 -0 - outer loop - vertex 17.169696006639 15.116789181895 0.77775 - vertex 17.169696006639 15.116789181895 0 - vertex 17.737436867076 14.737436867076 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 12.002309837942 23 0.77775 - vertex 12.002309837942 24.730643081307 0 - vertex 12.002309837942 23 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 6.011309837942 23 0.77775 - vertex 0 23 0 - vertex 6.011309837942 23 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 44.116789181895 25.830303993361 0 - vertex 48.011309837942 23 0 - vertex 43.737436867076 25.262563132924 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 12.002309837942 15.195826430941 0.110046151702 - vertex 12.002309837942 17 0.77775 - vertex 12.002309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 0 10 0 - vertex 6.011309837942 15.269356918694 0 - vertex 14.883210818105 12.830303993361 0 - endloop -endfacet -facet normal -0.195090322016 -0.980785280403 -0 - outer loop - vertex 17.169696006639 28.116789181895 0.77775 - vertex 16.5 28.25 0 - vertex 17.169696006639 28.116789181895 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 48.011309837942 24.730643081307 0 - vertex 44.116789181895 27.169696006639 0 - vertex 43.737436867076 27.737436867076 0 - endloop -endfacet -facet normal -0.980785280403 0.195090322016 0 - outer loop - vertex 44.25 26.5 0.77775 - vertex 44.25 26.5 0 - vertex 44.116789181895 25.830303993361 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 40.75 26.5 0.77775 - vertex 37.474084379442 23 0.77775 - vertex 40.883210818105 25.830303993361 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 34.416922535211 17 0.77775 - vertex 40.75 13.5 0.77775 - vertex 40.883210818105 14.169696006639 0.77775 - endloop -endfacet -facet normal -0.195090322016 0.980785280403 0 - outer loop - vertex 17.169696006639 11.883210818105 0.77775 - vertex 17.169696006639 11.883210818105 0 - vertex 16.5 11.75 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 43.737436867076 27.737436867076 0.77775 - vertex 52 30 0.77775 - vertex 41.866228156844 30 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 12.002309837942 15.063011877768 0.77775 - vertex 14.883210818105 12.830303993361 0.77775 - vertex 14.75 13.5 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 54.002309837942 15.063011877768 0.77775 - vertex 48.011309837942 15.063011877768 0.77775 - vertex 52 10 0.77775 - endloop -endfacet -facet normal 0.195090322016 0.980785280403 0 - outer loop - vertex 41.830303993361 24.883210818105 0.77775 - vertex 42.5 24.75 0 - vertex 41.830303993361 24.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 6.011309837942 24.730643081307 0 - vertex 14.883210818105 27.169696006639 0 - vertex 12.002309837942 24.730643081307 0 - endloop -endfacet -facet normal -0.555570233021 -0.831469612302 -0 - outer loop - vertex 43.737436867076 14.737436867076 0.77775 - vertex 43.169696006639 15.116789181895 0 - vertex 43.737436867076 14.737436867076 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 43.737436867076 27.737436867076 0.77775 - vertex 41.866228156844 30 0.77775 - vertex 43.169696006639 28.116789181895 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 34.416922535211 17 0.77775 - vertex 41.830303993361 15.116789181895 0.77775 - vertex 42.5 15.25 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 16.5 11.75 0.77775 - vertex 15.830303993361 11.883210818105 0.77775 - vertex 15.306548743796 10 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 0 23 0.77775 - vertex 0 30 0 - vertex 0 23 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 0 30 0 - vertex 0 23 0.77775 - vertex 0 30 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 52 10 0 - vertex 52 0 0.77775 - vertex 52 10 0.77775 - endloop -endfacet -facet normal -0.555570233021 0.831469612302 0 - outer loop - vertex 17.169696006639 11.883210818105 0 - vertex 17.169696006639 11.883210818105 0.77775 - vertex 17.737436867076 12.262563132924 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 43.169696006639 28.116789181895 0.77775 - vertex 41.866228156844 30 0.77775 - vertex 42.5 28.25 0.77775 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 14.042553191489 30 0 - vertex 41.866228156844 30 0.77775 - vertex 52 30 0 - endloop -endfacet -facet normal 0.195090322016 0.980785280403 0 - outer loop - vertex 41.830303993361 11.883210818105 0.77775 - vertex 42.5 11.75 0 - vertex 41.830303993361 11.883210818105 0 - endloop -endfacet -facet normal 0.555570233021 0.831469612302 0 - outer loop - vertex 15.262563132924 12.262563132924 0.77775 - vertex 15.830303993361 11.883210818105 0 - vertex 15.262563132924 12.262563132924 0 - endloop -endfacet -facet normal 0.980785280403 0.195090322016 0 - outer loop - vertex 40.883210818105 25.830303993361 0 - vertex 40.75 26.5 0.77775 - vertex 40.883210818105 25.830303993361 0.77775 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 18.116789181895 27.169696006639 0 - vertex 40.883210818105 25.830303993361 0 - vertex 41.262563132924 25.262563132924 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 42.5 28.25 0 - vertex 17.169696006639 28.116789181895 0 - vertex 14.042553191489 30 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.607403236621 30 0.77775 - vertex 15.262563132924 27.737436867076 0.77775 - vertex 15.830303993361 28.116789181895 0.77775 - endloop -endfacet -facet normal 0.831469612302 0.555570233021 0 - outer loop - vertex 14.883210818105 25.830303993361 0.77775 - vertex 15.262563132924 25.262563132924 0.77775 - vertex 14.883210818105 25.830303993361 0 - endloop -endfacet -facet normal 0.831469612302 0.555570233021 0 - outer loop - vertex 15.262563132924 25.262563132924 0.77775 - vertex 15.262563132924 25.262563132924 0 - vertex 14.883210818105 25.830303993361 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 48.011309837942 24.804173569059 0.110046151702 - vertex 48.011309837942 23 0.77775 - vertex 48.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 48.011309837942 24.730643081307 0 - vertex 43.737436867076 27.737436867076 0 - vertex 52 30 0 - endloop -endfacet -facet normal -0.980785280403 0.195090322016 0 - outer loop - vertex 18.116789181895 25.830303993361 0 - vertex 18.116789181895 25.830303993361 0.77775 - vertex 18.25 26.5 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 54.002309837942 15.195826430941 0.110046151702 - vertex 54.002309837942 15.063011877768 0.77775 - vertex 54.002309837942 17 0.77775 - endloop -endfacet -facet normal 0.555570233021 -0.831469612302 0 - outer loop - vertex 41.830303993361 15.116789181895 0 - vertex 41.830303993361 15.116789181895 0.77775 - vertex 41.262563132924 14.737436867076 0.77775 - endloop -endfacet -facet normal -0.555570233021 -0.831469612302 -0 - outer loop - vertex 43.737436867076 27.737436867076 0.77775 - vertex 43.169696006639 28.116789181895 0.77775 - vertex 43.737436867076 27.737436867076 0 - endloop -endfacet -facet normal -0.555570233021 -0.831469612302 -0 - outer loop - vertex 43.169696006639 28.116789181895 0.77775 - vertex 43.169696006639 28.116789181895 0 - vertex 43.737436867076 27.737436867076 0 - endloop -endfacet -facet normal 0.195090322016 0.980785280403 0 - outer loop - vertex 41.830303993361 11.883210818105 0.77775 - vertex 42.5 11.75 0.77775 - vertex 42.5 11.75 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 12.002309837942 23 0.77775 - vertex 15.830303993361 24.883210818105 0.77775 - vertex 15.262563132924 25.262563132924 0.77775 - endloop -endfacet -facet normal 0.555570233021 -0.831469612302 0 - outer loop - vertex 41.262563132924 14.737436867076 0.77775 - vertex 41.262563132924 14.737436867076 0 - vertex 41.830303993361 15.116789181895 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 60 17 0 - vertex 60 0 0 - vertex 52 0 0 - endloop -endfacet -facet normal 0.555570233021 0.831469612302 0 - outer loop - vertex 15.262563132924 25.262563132924 0 - vertex 15.262563132924 25.262563132924 0.77775 - vertex 15.830303993361 24.883210818105 0.77775 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 12.002309837942 23 0.77775 - vertex 12.002309837942 23 0 - vertex 17.379510917074 23 0.77775 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 6.011309837942 24.936988122232 0.77775 - vertex 6.011309837942 23 0.77775 - vertex 6.011309837942 24.804173569059 0.110046151702 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.169696006639 11.883210818105 0 - vertex 41.830303993361 11.883210818105 0 - vertex 42.5 11.75 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 42.5 28.25 0 - vertex 14.042553191489 30 0 - vertex 52 30 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 17 0.77775 - vertex 43.169696006639 15.116789181895 0.77775 - vertex 43.737436867076 14.737436867076 0.77775 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 6.011309837942 15.269356918694 0 - vertex 6.011309837942 17 0.77775 - vertex 6.011309837942 15.195826430941 0.110046151702 - endloop -endfacet -facet normal -0.980785280403 -0.195090322016 -0 - outer loop - vertex 18.116789181895 27.169696006639 0.77775 - vertex 18.116789181895 27.169696006639 0 - vertex 18.25 26.5 0 - endloop -endfacet -facet normal 0.980785280403 -0.195090322016 0 - outer loop - vertex 40.75 26.5 0 - vertex 40.883210818105 27.169696006639 0.77775 - vertex 40.75 26.5 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.607403236621 30 0.77775 - vertex 0 30 0.77775 - vertex 14.883210818105 27.169696006639 0.77775 - endloop -endfacet -facet normal -0.195090322016 0.980785280403 0 - outer loop - vertex 42.5 11.75 0.77775 - vertex 43.169696006639 11.883210818105 0 - vertex 42.5 11.75 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.607403236621 30 0.77775 - vertex 15.830303993361 28.116789181895 0.77775 - vertex 16.5 28.25 0.77775 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 52 30 0.77775 - vertex 52 30 0 - vertex 41.866228156844 30 0.77775 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 60 17 0 - vertex 52 0 0 - vertex 52 10 0 - endloop -endfacet -facet normal -0.831469612302 -0.555570233021 0 - outer loop - vertex 44.116789181895 14.169696006639 0.77775 - vertex 43.737436867076 14.737436867076 0.77775 - vertex 43.737436867076 14.737436867076 0 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 14.607403236621 30 0.77775 - vertex 41.866228156844 30 0.77775 - vertex 14.042553191489 30 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.169696006639 11.883210818105 0.77775 - vertex 15.306548743796 10 0.77775 - vertex 17.737436867076 12.262563132924 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 12.002309837942 15.269356918694 0 - vertex 12.002309837942 17 0.77775 - vertex 12.002309837942 17 0 - endloop -endfacet -facet normal -0.195090322016 0.980785280403 0 - outer loop - vertex 17.169696006639 24.883210818105 0.77775 - vertex 16.5 24.75 0 - vertex 16.5 24.75 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 23 0.77775 - vertex 43.169696006639 24.883210818105 0.77775 - vertex 42.5 24.75 0.77775 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 6.011309837942 17 0.77775 - vertex 0 17 0 - vertex 0 17 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.607403236621 30 0.77775 - vertex 16.5 28.25 0.77775 - vertex 17.169696006639 28.116789181895 0.77775 - endloop -endfacet -facet normal -0.831469612302 0.555570233021 0 - outer loop - vertex 18.116789181895 25.830303993361 0.77775 - vertex 17.737436867076 25.262563132924 0 - vertex 17.737436867076 25.262563132924 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 16.5 24.75 0.77775 - vertex 17.379510917074 23 0.77775 - vertex 17.169696006639 24.883210818105 0.77775 - endloop -endfacet -facet normal -0.980785280403 -0.195090322016 -0 - outer loop - vertex 44.116789181895 27.169696006639 0.77775 - vertex 44.116789181895 27.169696006639 0 - vertex 44.25 26.5 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 40.75 13.5 0 - vertex 18.25 13.5 0 - vertex 40.883210818105 14.169696006639 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 44.116789181895 25.830303993361 0 - vertex 48.011309837942 24.730643081307 0 - vertex 48.011309837942 23 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 0 10 0.77775 - vertex 0 10 0 - vertex 14.464705848856 10 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 15.306548743796 10 0.77775 - vertex 15.830303993361 11.883210818105 0.77775 - vertex 15.262563132924 12.262563132924 0.77775 - endloop -endfacet -facet normal -0.195090322016 -0.980785280403 0 - outer loop - vertex 43.169696006639 28.116789181895 0 - vertex 43.169696006639 28.116789181895 0.77775 - vertex 42.5 28.25 0.77775 - endloop -endfacet -facet normal -0.195090322016 0.980785280403 0 - outer loop - vertex 17.169696006639 11.883210818105 0.77775 - vertex 16.5 11.75 0 - vertex 16.5 11.75 0.77775 - endloop -endfacet -facet normal -0.980785280403 -0.195090322016 0 - outer loop - vertex 18.25 13.5 0.77775 - vertex 18.116789181895 14.169696006639 0.77775 - vertex 18.116789181895 14.169696006639 0 - endloop -endfacet -facet normal -0.555570233021 0.831469612302 0 - outer loop - vertex 17.169696006639 24.883210818105 0.77775 - vertex 17.737436867076 25.262563132924 0 - vertex 17.169696006639 24.883210818105 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 0 10 0.77775 - vertex 14.464705848856 10 0 - vertex 15.306548743796 10 0.77775 - endloop -endfacet -facet normal -0.555570233021 -0.831469612302 0 - outer loop - vertex 17.169696006639 15.116789181895 0.77775 - vertex 17.737436867076 14.737436867076 0 - vertex 17.737436867076 14.737436867076 0.77775 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 48.011309837942 23 0.77775 - vertex 48.011309837942 24.804173569059 0.110046151702 - vertex 48.011309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 41.830303993361 28.116789181895 0.77775 - vertex 41.866228156844 30 0.77775 - vertex 41.262563132924 27.737436867076 0.77775 - endloop -endfacet -facet normal 0.195090322016 0.980785280403 0 - outer loop - vertex 16.5 11.75 0.77775 - vertex 15.830303993361 11.883210818105 0 - vertex 15.830303993361 11.883210818105 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.75 26.5 0.77775 - vertex 12.002309837942 24.936988122232 0.77775 - vertex 14.883210818105 25.830303993361 0.77775 - endloop -endfacet -facet normal -0.831469612302 -0.555570233021 -0 - outer loop - vertex 44.116789181895 14.169696006639 0.77775 - vertex 43.737436867076 14.737436867076 0 - vertex 44.116789181895 14.169696006639 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 12.002309837942 23 0.77775 - vertex 12.002309837942 24.804173569059 0.110046151702 - vertex 12.002309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 54.002309837942 15.063011877768 0.77775 - vertex 60 17 0.77775 - vertex 54.002309837942 17 0.77775 - endloop -endfacet -facet normal 0 0.980785280403 0.195090322015 - outer loop - vertex 6.011309837942 15.063011877768 0.77775 - vertex 12.002309837942 15.195826430941 0.110046151702 - vertex 6.011309837942 15.195826430941 0.110046151702 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 12.002309837942 23 0.77775 - vertex 17.379510917074 23 0.77775 - vertex 15.830303993361 24.883210818105 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 15.830303993361 24.883210818105 0.77775 - vertex 17.379510917074 23 0.77775 - vertex 16.5 24.75 0.77775 - endloop -endfacet -facet normal -0.980785280403 0.195090322016 0 - outer loop - vertex 18.25 26.5 0.77775 - vertex 18.25 26.5 0 - vertex 18.116789181895 25.830303993361 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 41.262563132924 25.262563132924 0.77775 - vertex 37.474084379442 23 0.77775 - vertex 41.830303993361 24.883210818105 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.607403236621 30 0.77775 - vertex 14.883210818105 27.169696006639 0.77775 - vertex 15.262563132924 27.737436867076 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.737436867076 14.737436867076 0.77775 - vertex 15.455907969142 17 0.77775 - vertex 17.169696006639 15.116789181895 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.737436867076 14.737436867076 0.77775 - vertex 34.416922535211 17 0.77775 - vertex 15.455907969142 17 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 15.306548743796 10 0.77775 - vertex 15.262563132924 12.262563132924 0.77775 - vertex 14.883210818105 12.830303993361 0.77775 - endloop -endfacet -facet normal -0.555570233021 0.831469612302 0 - outer loop - vertex 17.169696006639 24.883210818105 0.77775 - vertex 17.737436867076 25.262563132924 0.77775 - vertex 17.737436867076 25.262563132924 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 16.5 15.25 0.77775 - vertex 15.455907969142 17 0.77775 - vertex 15.830303993361 15.116789181895 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 41.830303993361 28.116789181895 0.77775 - vertex 42.5 28.25 0.77775 - vertex 41.866228156844 30 0.77775 - endloop -endfacet -facet normal -0.980785280403 0.195090322016 0 - outer loop - vertex 18.116789181895 12.830303993361 0.77775 - vertex 18.25 13.5 0.77775 - vertex 18.25 13.5 0 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 60 17 0.77775 - vertex 60 17 0 - vertex 54.002309837942 17 0 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 15.455907969142 17 0.77775 - vertex 12.002309837942 17 0 - vertex 12.002309837942 17 0.77775 - endloop -endfacet -facet normal -0.555570233021 0.831469612302 0 - outer loop - vertex 43.169696006639 11.883210818105 0 - vertex 43.737436867076 12.262563132924 0.77775 - vertex 43.737436867076 12.262563132924 0 - endloop -endfacet -facet normal -0.555570233021 0.831469612302 0 - outer loop - vertex 43.169696006639 11.883210818105 0 - vertex 43.169696006639 11.883210818105 0.77775 - vertex 43.737436867076 12.262563132924 0.77775 - endloop -endfacet -facet normal -0.980785280403 -0.195090322016 -0 - outer loop - vertex 18.25 13.5 0.77775 - vertex 18.116789181895 14.169696006639 0 - vertex 18.25 13.5 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 42.5 28.25 0 - vertex 41.830303993361 28.116789181895 0 - vertex 17.169696006639 28.116789181895 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 48.011309837942 23 0.77775 - vertex 48.011309837942 23 0 - vertex 48.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.169696006639 15.116789181895 0.77775 - vertex 15.455907969142 17 0.77775 - vertex 16.5 15.25 0.77775 - endloop -endfacet -facet normal -0.555570233021 0.831469612302 0 - outer loop - vertex 17.737436867076 12.262563132924 0.77775 - vertex 17.737436867076 12.262563132924 0 - vertex 17.169696006639 11.883210818105 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 52 40 0.77775 - vertex 60 23 0.77775 - vertex 60 40 0.77775 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 40.75 13.5 0 - vertex 18.116789181895 12.830303993361 0 - vertex 18.25 13.5 0 - endloop -endfacet -facet normal -0.195090322016 -0.980785280403 0 - outer loop - vertex 43.169696006639 28.116789181895 0 - vertex 42.5 28.25 0.77775 - vertex 42.5 28.25 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 48.011309837942 23 0 - vertex 12.002309837942 23 0 - vertex 42.5 24.75 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 54.002309837942 23 0.77775 - vertex 60 23 0.77775 - vertex 54.002309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 6.011309837942 23 0.77775 - vertex 6.011309837942 24.730643081307 0 - vertex 6.011309837942 24.804173569059 0.110046151702 - endloop -endfacet -facet normal -0.195090322016 -0.980785280403 0 - outer loop - vertex 17.169696006639 15.116789181895 0 - vertex 16.5 15.25 0.77775 - vertex 16.5 15.25 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 6.011309837942 17 0.77775 - vertex 6.011309837942 15.063011877768 0.77775 - vertex 6.011309837942 15.195826430941 0.110046151702 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 60 17 0.77775 - vertex 60 0 0 - vertex 60 17 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 60 0 0.77775 - vertex 60 0 0 - vertex 60 17 0.77775 - endloop -endfacet -facet normal 0.555570233021 0.831469612302 0 - outer loop - vertex 15.262563132924 12.262563132924 0.77775 - vertex 15.830303993361 11.883210818105 0.77775 - vertex 15.830303993361 11.883210818105 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 52 10 0.77775 - vertex 44.116789181895 12.830303993361 0.77775 - vertex 43.737436867076 12.262563132924 0.77775 - endloop -endfacet -facet normal 0 0.980785280403 0.195090322015 - outer loop - vertex 6.011309837942 15.063011877768 0.77775 - vertex 12.002309837942 15.063011877768 0.77775 - vertex 12.002309837942 15.195826430941 0.110046151702 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.169696006639 24.883210818105 0.77775 - vertex 17.379510917074 23 0.77775 - vertex 17.737436867076 25.262563132924 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 52 10 0.77775 - vertex 43.737436867076 12.262563132924 0.77775 - vertex 43.169696006639 11.883210818105 0.77775 - endloop -endfacet -facet normal 0.195090322016 -0.980785280403 0 - outer loop - vertex 42.5 28.25 0.77775 - vertex 41.830303993361 28.116789181895 0 - vertex 42.5 28.25 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 6.011309837942 15.269356918694 0 - vertex 6.011309837942 17 0 - vertex 6.011309837942 17 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 40.883210818105 25.830303993361 0.77775 - vertex 37.474084379442 23 0.77775 - vertex 41.262563132924 25.262563132924 0.77775 - endloop -endfacet -facet normal -0.980785280403 0.195090322016 0 - outer loop - vertex 18.116789181895 12.830303993361 0.77775 - vertex 18.25 13.5 0 - vertex 18.116789181895 12.830303993361 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.737436867076 25.262563132924 0.77775 - vertex 17.379510917074 23 0.77775 - vertex 18.116789181895 25.830303993361 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 34.416922535211 17 0.77775 - vertex 41.262563132924 14.737436867076 0.77775 - vertex 41.830303993361 15.116789181895 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 0 30 0.77775 - vertex 6.011309837942 24.936988122232 0.77775 - vertex 12.002309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.116789181895 25.830303993361 0.77775 - vertex 17.379510917074 23 0.77775 - vertex 37.474084379442 23 0.77775 - endloop -endfacet -facet normal 0 -0.980785280403 0.195090322015 - outer loop - vertex 6.011309837942 24.936988122232 0.77775 - vertex 12.002309837942 24.804173569059 0.110046151702 - vertex 12.002309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 52 10 0.77775 - vertex 43.169696006639 11.883210818105 0.77775 - vertex 42.5 11.75 0.77775 - endloop -endfacet -facet normal 0.831469612302 -0.555570233021 0 - outer loop - vertex 41.262563132924 14.737436867076 0.77775 - vertex 40.883210818105 14.169696006639 0 - vertex 41.262563132924 14.737436867076 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 48.011309837942 23 0 - vertex 43.169696006639 24.883210818105 0 - vertex 43.737436867076 25.262563132924 0 - endloop -endfacet -facet normal -0.980785280403 0.195090322016 0 - outer loop - vertex 44.25 26.5 0.77775 - vertex 44.116789181895 25.830303993361 0 - vertex 44.116789181895 25.830303993361 0.77775 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 60 17 0.77775 - vertex 54.002309837942 17 0 - vertex 54.002309837942 17 0.77775 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 48.011309837942 23 0 - vertex 42.5 24.75 0 - vertex 43.169696006639 24.883210818105 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 43.737436867076 27.737436867076 0.77775 - vertex 44.116789181895 27.169696006639 0.77775 - vertex 52 30 0.77775 - endloop -endfacet -facet normal -0.831469612302 0.555570233021 0 - outer loop - vertex 18.116789181895 25.830303993361 0.77775 - vertex 18.116789181895 25.830303993361 0 - vertex 17.737436867076 25.262563132924 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 54.002309837942 15.195826430941 0.110046151702 - vertex 54.002309837942 17 0.77775 - vertex 54.002309837942 15.269356918694 0 - endloop -endfacet -facet normal 0.980785280403 -0.195090322016 0 - outer loop - vertex 14.883210818105 27.169696006639 0.77775 - vertex 14.75 26.5 0 - vertex 14.883210818105 27.169696006639 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 52 0 0.77775 - vertex 52 0 0 - vertex 60 0 0.77775 - endloop -endfacet -facet normal 0.980785280403 -0.195090322016 0 - outer loop - vertex 14.883210818105 27.169696006639 0.77775 - vertex 14.75 26.5 0.77775 - vertex 14.75 26.5 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 54.002309837942 15.269356918694 0 - vertex 54.002309837942 17 0.77775 - vertex 54.002309837942 17 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 16.5 11.75 0.77775 - vertex 15.306548743796 10 0.77775 - vertex 17.169696006639 11.883210818105 0.77775 - endloop -endfacet -facet normal -0.195090322016 -0.980785280403 0 - outer loop - vertex 17.169696006639 15.116789181895 0 - vertex 17.169696006639 15.116789181895 0.77775 - vertex 16.5 15.25 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 12.002309837942 15.195826430941 0.110046151702 - vertex 12.002309837942 15.063011877768 0.77775 - vertex 12.002309837942 17 0.77775 - endloop -endfacet -facet normal 0 0.980785280403 0.195090322015 - outer loop - vertex 54.002309837942 15.063011877768 0.77775 - vertex 48.011309837942 15.195826430941 0.110046151702 - vertex 48.011309837942 15.063011877768 0.77775 - endloop -endfacet -facet normal 0.195090322016 0.980785280403 0 - outer loop - vertex 16.5 11.75 0.77775 - vertex 16.5 11.75 0 - vertex 15.830303993361 11.883210818105 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 48.011309837942 15.063011877768 0.77775 - vertex 48.011309837942 15.269356918694 0 - vertex 48.011309837942 17 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 54.002309837942 24.936988122232 0.77775 - vertex 52 30 0.77775 - vertex 48.011309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal -0.195090322016 0.980785280403 0 - outer loop - vertex 42.5 24.75 0.77775 - vertex 43.169696006639 24.883210818105 0 - vertex 42.5 24.75 0 - endloop -endfacet -facet normal 0.980785280403 0.195090322016 0 - outer loop - vertex 14.75 26.5 0 - vertex 14.75 26.5 0.77775 - vertex 14.883210818105 25.830303993361 0.77775 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 44.116789181895 14.169696006639 0 - vertex 43.737436867076 14.737436867076 0 - vertex 48.011309837942 17 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 44.116789181895 14.169696006639 0 - vertex 48.011309837942 17 0 - vertex 48.011309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.169696006639 24.883210818105 0 - vertex 41.830303993361 24.883210818105 0 - vertex 42.5 24.75 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 17.169696006639 24.883210818105 0 - vertex 42.5 24.75 0 - vertex 12.002309837942 23 0 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 52 40 0 - vertex 52 40 0.77775 - vertex 60 40 0.77775 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 52 40 0 - vertex 60 40 0.77775 - vertex 60 40 0 - endloop -endfacet -facet normal -0.831469612302 -0.555570233021 0 - outer loop - vertex 18.116789181895 27.169696006639 0.77775 - vertex 17.737436867076 27.737436867076 0.77775 - vertex 17.737436867076 27.737436867076 0 - endloop -endfacet -facet normal -0.831469612302 -0.555570233021 -0 - outer loop - vertex 18.116789181895 27.169696006639 0.77775 - vertex 17.737436867076 27.737436867076 0 - vertex 18.116789181895 27.169696006639 0 - endloop -endfacet -facet normal 0.195090322016 0.980785280403 0 - outer loop - vertex 15.830303993361 24.883210818105 0 - vertex 15.830303993361 24.883210818105 0.77775 - vertex 16.5 24.75 0.77775 - endloop -endfacet -facet normal 0.195090322016 0.980785280403 0 - outer loop - vertex 15.830303993361 24.883210818105 0 - vertex 16.5 24.75 0.77775 - vertex 16.5 24.75 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 12.002309837942 24.936988122232 0.77775 - vertex 12.002309837942 23 0.77775 - vertex 15.262563132924 25.262563132924 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 12.002309837942 24.936988122232 0.77775 - vertex 15.262563132924 25.262563132924 0.77775 - vertex 14.883210818105 25.830303993361 0.77775 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 60 40 0.77775 - vertex 60 23 0.77775 - vertex 60 23 0 - endloop -endfacet -facet normal 1 0 0 - outer loop - vertex 60 40 0.77775 - vertex 60 23 0 - vertex 60 40 0 - endloop -endfacet -facet normal 0.831469612302 -0.555570233021 0 - outer loop - vertex 15.262563132924 27.737436867076 0 - vertex 15.262563132924 27.737436867076 0.77775 - vertex 14.883210818105 27.169696006639 0.77775 - endloop -endfacet -facet normal 0.831469612302 -0.555570233021 0 - outer loop - vertex 15.262563132924 27.737436867076 0 - vertex 14.883210818105 27.169696006639 0.77775 - vertex 14.883210818105 27.169696006639 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 37.474084379442 23 0.77775 - vertex 48.011309837942 23 0.77775 - vertex 42.5 24.75 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 37.474084379442 23 0.77775 - vertex 42.5 24.75 0.77775 - vertex 41.830303993361 24.883210818105 0.77775 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 41.262563132924 14.737436867076 0 - vertex 12.002309837942 17 0 - vertex 41.422110817733 17 0 - endloop -endfacet -facet normal -0.195090322016 -0.980785280403 0 - outer loop - vertex 43.169696006639 15.116789181895 0.77775 - vertex 42.5 15.25 0.77775 - vertex 42.5 15.25 0 - endloop -endfacet -facet normal -0.195090322016 -0.980785280403 -0 - outer loop - vertex 43.169696006639 15.116789181895 0.77775 - vertex 42.5 15.25 0 - vertex 43.169696006639 15.116789181895 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 54.002309837942 15.063011877768 0.77775 - vertex 52 10 0.77775 - vertex 60 0 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 54.002309837942 15.063011877768 0.77775 - vertex 60 0 0.77775 - vertex 60 17 0.77775 - endloop -endfacet -facet normal 0.980785280403 0.195090322016 0 - outer loop - vertex 40.75 13.5 0.77775 - vertex 40.883210818105 12.830303993361 0.77775 - vertex 40.883210818105 12.830303993361 0 - endloop -endfacet -facet normal 0.980785280403 0.195090322016 0 - outer loop - vertex 40.75 13.5 0.77775 - vertex 40.883210818105 12.830303993361 0 - vertex 40.75 13.5 0 - endloop -endfacet -facet normal -0.555570233021 -0.831469612302 0 - outer loop - vertex 17.737436867076 27.737436867076 0 - vertex 17.737436867076 27.737436867076 0.77775 - vertex 17.169696006639 28.116789181895 0.77775 - endloop -endfacet -facet normal -0.555570233021 -0.831469612302 0 - outer loop - vertex 17.737436867076 27.737436867076 0 - vertex 17.169696006639 28.116789181895 0.77775 - vertex 17.169696006639 28.116789181895 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.883210818105 27.169696006639 0.77775 - vertex 0 30 0.77775 - vertex 12.002309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.883210818105 27.169696006639 0.77775 - vertex 12.002309837942 24.936988122232 0.77775 - vertex 14.75 26.5 0.77775 - endloop -endfacet -facet normal -0.831469612302 0.555570233021 0 - outer loop - vertex 43.737436867076 12.262563132924 0.77775 - vertex 44.116789181895 12.830303993361 0.77775 - vertex 44.116789181895 12.830303993361 0 - endloop -endfacet -facet normal -0.831469612302 0.555570233021 0 - outer loop - vertex 43.737436867076 12.262563132924 0.77775 - vertex 44.116789181895 12.830303993361 0 - vertex 43.737436867076 12.262563132924 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 48.011309837942 23 0 - vertex 48.011309837942 23 0.77775 - vertex 37.474084379442 23 0.77775 - endloop -endfacet -facet normal 0.195090322016 -0.980785280403 0 - outer loop - vertex 16.5 15.25 0.77775 - vertex 15.830303993361 15.116789181895 0.77775 - vertex 15.830303993361 15.116789181895 0 - endloop -endfacet -facet normal 0.195090322016 -0.980785280403 0 - outer loop - vertex 16.5 15.25 0.77775 - vertex 15.830303993361 15.116789181895 0 - vertex 16.5 15.25 0 - endloop -endfacet -facet normal 0.831469612302 0.555570233021 0 - outer loop - vertex 40.883210818105 12.830303993361 0.77775 - vertex 41.262563132924 12.262563132924 0.77775 - vertex 41.262563132924 12.262563132924 0 - endloop -endfacet -facet normal 0.831469612302 0.555570233021 0 - outer loop - vertex 40.883210818105 12.830303993361 0.77775 - vertex 41.262563132924 12.262563132924 0 - vertex 40.883210818105 12.830303993361 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 17 0 - vertex 16.5 15.25 0 - vertex 15.830303993361 15.116789181895 0 - endloop -endfacet -facet normal -0.831469612302 0.555570233021 0 - outer loop - vertex 43.737436867076 25.262563132924 0 - vertex 43.737436867076 25.262563132924 0.77775 - vertex 44.116789181895 25.830303993361 0.77775 - endloop -endfacet -facet normal -0.831469612302 0.555570233021 0 - outer loop - vertex 43.737436867076 25.262563132924 0 - vertex 44.116789181895 25.830303993361 0.77775 - vertex 44.116789181895 25.830303993361 0 - endloop -endfacet -facet normal 0.980785280403 -0.195090322016 0 - outer loop - vertex 40.883210818105 14.169696006639 0.77775 - vertex 40.75 13.5 0.77775 - vertex 40.75 13.5 0 - endloop -endfacet -facet normal 0.980785280403 -0.195090322016 0 - outer loop - vertex 40.883210818105 14.169696006639 0.77775 - vertex 40.75 13.5 0 - vertex 40.883210818105 14.169696006639 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 60 23 0 - vertex 60 23 0.77775 - vertex 54.002309837942 23 0.77775 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 60 23 0 - vertex 54.002309837942 23 0.77775 - vertex 54.002309837942 23 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 0 30 0 - vertex 14.042553191489 30 0 - vertex 14.883210818105 27.169696006639 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 0 30 0 - vertex 14.883210818105 27.169696006639 0 - vertex 6.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0.555570233021 0.831469612302 0 - outer loop - vertex 41.262563132924 25.262563132924 0 - vertex 41.262563132924 25.262563132924 0.77775 - vertex 41.830303993361 24.883210818105 0.77775 - endloop -endfacet -facet normal 0.555570233021 0.831469612302 0 - outer loop - vertex 41.262563132924 25.262563132924 0 - vertex 41.830303993361 24.883210818105 0.77775 - vertex 41.830303993361 24.883210818105 0 - endloop -endfacet -facet normal 0.555570233021 -0.831469612302 0 - outer loop - vertex 41.830303993361 28.116789181895 0.77775 - vertex 41.262563132924 27.737436867076 0.77775 - vertex 41.262563132924 27.737436867076 0 - endloop -endfacet -facet normal 0.555570233021 -0.831469612302 0 - outer loop - vertex 41.830303993361 28.116789181895 0.77775 - vertex 41.262563132924 27.737436867076 0 - vertex 41.830303993361 28.116789181895 0 - endloop -endfacet -facet normal -0.555570233021 0.831469612302 0 - outer loop - vertex 43.169696006639 24.883210818105 0.77775 - vertex 43.737436867076 25.262563132924 0.77775 - vertex 43.737436867076 25.262563132924 0 - endloop -endfacet -facet normal -0.555570233021 0.831469612302 0 - outer loop - vertex 43.169696006639 24.883210818105 0.77775 - vertex 43.737436867076 25.262563132924 0 - vertex 43.169696006639 24.883210818105 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 52 10 0 - vertex 43.169696006639 11.883210818105 0 - vertex 43.737436867076 12.262563132924 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 52 10 0 - vertex 43.737436867076 12.262563132924 0 - vertex 54.002309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 54.002309837942 24.936988122232 0.77775 - vertex 60 23 0.77775 - vertex 52 40 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 54.002309837942 24.936988122232 0.77775 - vertex 52 40 0.77775 - vertex 52 30 0.77775 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 15.455907969142 17 0.77775 - vertex 34.416922535211 17 0.77775 - vertex 41.422110817733 17 0 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 15.455907969142 17 0.77775 - vertex 41.422110817733 17 0 - vertex 12.002309837942 17 0 - endloop -endfacet -facet normal 0 -0.831469612304 0.555570233017 - outer loop - vertex 12.002309837942 24.804173569059 0.110046151702 - vertex 6.011309837942 24.804173569059 0.110046151702 - vertex 6.011309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 -0.831469612304 0.555570233017 - outer loop - vertex 12.002309837942 24.804173569059 0.110046151702 - vertex 6.011309837942 24.730643081307 0 - vertex 12.002309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 15.262563132924 14.737436867076 0.77775 - vertex 15.455907969142 17 0.77775 - vertex 12.002309837942 17 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 15.262563132924 14.737436867076 0.77775 - vertex 12.002309837942 17 0.77775 - vertex 14.883210818105 14.169696006639 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 44.116789181895 25.830303993361 0.77775 - vertex 43.737436867076 25.262563132924 0.77775 - vertex 48.011309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 0 17 0.77775 - vertex 0 10 0.77775 - vertex 6.011309837942 15.063011877768 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 0 17 0.77775 - vertex 6.011309837942 15.063011877768 0.77775 - vertex 6.011309837942 17 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 17 0.77775 - vertex 34.416922535211 17 0.77775 - vertex 42.5 15.25 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 17 0.77775 - vertex 42.5 15.25 0.77775 - vertex 43.169696006639 15.116789181895 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.883210818105 14.169696006639 0.77775 - vertex 12.002309837942 17 0.77775 - vertex 12.002309837942 15.063011877768 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 14.883210818105 14.169696006639 0.77775 - vertex 12.002309837942 15.063011877768 0.77775 - vertex 14.75 13.5 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 6.011309837942 24.936988122232 0.77775 - vertex 0 30 0.77775 - vertex 0 23 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 6.011309837942 24.936988122232 0.77775 - vertex 0 23 0.77775 - vertex 6.011309837942 23 0.77775 - endloop -endfacet -facet normal -0 -0 -1 - outer loop - vertex 40.75 26.5 0 - vertex 40.883210818105 25.830303993361 0 - vertex 18.116789181895 27.169696006639 0 - endloop -endfacet -facet normal -0.980785280403 -0.195090322016 0 - outer loop - vertex 44.25 13.5 0.77775 - vertex 44.116789181895 14.169696006639 0.77775 - vertex 44.116789181895 14.169696006639 0 - endloop -endfacet -facet normal -0.980785280403 -0.195090322016 -0 - outer loop - vertex 44.25 13.5 0.77775 - vertex 44.116789181895 14.169696006639 0 - vertex 44.25 13.5 0 - endloop -endfacet -facet normal -0.831469612302 0.555570233021 0 - outer loop - vertex 17.737436867076 12.262563132924 0 - vertex 17.737436867076 12.262563132924 0.77775 - vertex 18.116789181895 12.830303993361 0.77775 - endloop -endfacet -facet normal -0.831469612302 0.555570233021 0 - outer loop - vertex 17.737436867076 12.262563132924 0 - vertex 18.116789181895 12.830303993361 0.77775 - vertex 18.116789181895 12.830303993361 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 0 10 0.77775 - vertex 15.306548743796 10 0.77775 - vertex 14.883210818105 12.830303993361 0.77775 - endloop -endfacet -facet normal 0 -0.980785280403 0.195090322015 - outer loop - vertex 54.002309837942 24.804173569059 0.110046151702 - vertex 54.002309837942 24.936988122232 0.77775 - vertex 48.011309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 0 -0.980785280403 0.195090322015 - outer loop - vertex 54.002309837942 24.804173569059 0.110046151702 - vertex 48.011309837942 24.936988122232 0.77775 - vertex 48.011309837942 24.804173569059 0.110046151702 - endloop -endfacet -facet normal 0.831469612302 0.555570233021 0 - outer loop - vertex 14.883210818105 12.830303993361 0 - vertex 14.883210818105 12.830303993361 0.77775 - vertex 15.262563132924 12.262563132924 0.77775 - endloop -endfacet -facet normal 0.831469612302 0.555570233021 0 - outer loop - vertex 14.883210818105 12.830303993361 0 - vertex 15.262563132924 12.262563132924 0.77775 - vertex 15.262563132924 12.262563132924 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 54.002309837942 15.269356918694 0 - vertex 43.737436867076 12.262563132924 0 - vertex 44.116789181895 12.830303993361 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 54.002309837942 15.269356918694 0 - vertex 44.116789181895 12.830303993361 0 - vertex 48.011309837942 15.269356918694 0 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 0 30 0 - vertex 0 30 0.77775 - vertex 14.607403236621 30 0.77775 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 0 30 0 - vertex 14.607403236621 30 0.77775 - vertex 14.042553191489 30 0 - endloop -endfacet -facet normal 0.555570233021 0.831469612302 0 - outer loop - vertex 41.262563132924 12.262563132924 0 - vertex 41.262563132924 12.262563132924 0.77775 - vertex 41.830303993361 11.883210818105 0.77775 - endloop -endfacet -facet normal 0.555570233021 0.831469612302 0 - outer loop - vertex 41.262563132924 12.262563132924 0 - vertex 41.830303993361 11.883210818105 0.77775 - vertex 41.830303993361 11.883210818105 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 0 10 0 - vertex 0 10 0.77775 - vertex 0 17 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 0 10 0 - vertex 0 17 0.77775 - vertex 0 17 0 - endloop -endfacet -facet normal -0.980785280403 0.195090322016 0 - outer loop - vertex 44.116789181895 12.830303993361 0.77775 - vertex 44.25 13.5 0.77775 - vertex 44.25 13.5 0 - endloop -endfacet -facet normal -0.980785280403 0.195090322016 0 - outer loop - vertex 44.116789181895 12.830303993361 0.77775 - vertex 44.25 13.5 0 - vertex 44.116789181895 12.830303993361 0 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 41.422110817733 17 0 - vertex 34.416922535211 17 0.77775 - vertex 48.011309837942 17 0.77775 - endloop -endfacet -facet normal 0 1 0 - outer loop - vertex 41.422110817733 17 0 - vertex 48.011309837942 17 0.77775 - vertex 48.011309837942 17 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 52 30 0.77775 - vertex 52 40 0.77775 - vertex 52 40 0 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 52 30 0.77775 - vertex 52 40 0 - vertex 52 30 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 15.830303993361 24.883210818105 0 - vertex 16.5 24.75 0 - vertex 12.002309837942 23 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 41.262563132924 27.737436867076 0 - vertex 40.883210818105 27.169696006639 0 - vertex 17.737436867076 27.737436867076 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 41.262563132924 27.737436867076 0 - vertex 17.737436867076 27.737436867076 0 - vertex 17.169696006639 28.116789181895 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 6.011309837942 15.063011877768 0.77775 - vertex 0 10 0.77775 - vertex 14.883210818105 12.830303993361 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 6.011309837942 15.063011877768 0.77775 - vertex 14.883210818105 12.830303993361 0.77775 - vertex 12.002309837942 15.063011877768 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 17 0.77775 - vertex 43.737436867076 14.737436867076 0.77775 - vertex 44.116789181895 14.169696006639 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 17 0.77775 - vertex 44.116789181895 14.169696006639 0.77775 - vertex 48.011309837942 15.063011877768 0.77775 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 15.262563132924 25.262563132924 0 - vertex 15.830303993361 24.883210818105 0 - vertex 12.002309837942 23 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 15.262563132924 25.262563132924 0 - vertex 12.002309837942 23 0 - vertex 12.002309837942 24.730643081307 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 44.25 26.5 0.77775 - vertex 44.116789181895 25.830303993361 0.77775 - vertex 48.011309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 40.883210818105 27.169696006639 0 - vertex 40.75 26.5 0 - vertex 18.116789181895 27.169696006639 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 40.883210818105 27.169696006639 0 - vertex 18.116789181895 27.169696006639 0 - vertex 17.737436867076 27.737436867076 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 17 0 - vertex 41.262563132924 14.737436867076 0 - vertex 17.169696006639 15.116789181895 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 17 0 - vertex 17.169696006639 15.116789181895 0 - vertex 16.5 15.25 0 - endloop -endfacet -facet normal 0.555570233021 -0.831469612302 0 - outer loop - vertex 15.830303993361 15.116789181895 0 - vertex 15.830303993361 15.116789181895 0.77775 - vertex 15.262563132924 14.737436867076 0.77775 - endloop -endfacet -facet normal 0.555570233021 -0.831469612302 0 - outer loop - vertex 15.830303993361 15.116789181895 0 - vertex 15.262563132924 14.737436867076 0.77775 - vertex 15.262563132924 14.737436867076 0 - endloop -endfacet -facet normal 0.831469612302 -0.555570233021 0 - outer loop - vertex 41.262563132924 27.737436867076 0.77775 - vertex 40.883210818105 27.169696006639 0.77775 - vertex 40.883210818105 27.169696006639 0 - endloop -endfacet -facet normal 0.831469612302 -0.555570233021 0 - outer loop - vertex 41.262563132924 27.737436867076 0.77775 - vertex 40.883210818105 27.169696006639 0 - vertex 41.262563132924 27.737436867076 0 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 48.011309837942 23 0 - vertex 37.474084379442 23 0.77775 - vertex 17.379510917074 23 0.77775 - endloop -endfacet -facet normal 0 -1 0 - outer loop - vertex 48.011309837942 23 0 - vertex 17.379510917074 23 0.77775 - vertex 12.002309837942 23 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 17 0 - vertex 15.830303993361 15.116789181895 0 - vertex 15.262563132924 14.737436867076 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 12.002309837942 17 0 - vertex 15.262563132924 14.737436867076 0 - vertex 12.002309837942 15.269356918694 0 - endloop -endfacet -facet normal 0.831469612302 0.555570233021 0 - outer loop - vertex 40.883210818105 25.830303993361 0 - vertex 40.883210818105 25.830303993361 0.77775 - vertex 41.262563132924 25.262563132924 0.77775 - endloop -endfacet -facet normal 0.831469612302 0.555570233021 0 - outer loop - vertex 40.883210818105 25.830303993361 0 - vertex 41.262563132924 25.262563132924 0.77775 - vertex 41.262563132924 25.262563132924 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.883210818105 12.830303993361 0 - vertex 15.262563132924 12.262563132924 0 - vertex 14.464705848856 10 0 - endloop -endfacet -facet normal 0 0 -1 - outer loop - vertex 14.883210818105 12.830303993361 0 - vertex 14.464705848856 10 0 - vertex 0 10 0 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.737436867076 27.737436867076 0.77775 - vertex 40.883210818105 27.169696006639 0.77775 - vertex 41.262563132924 27.737436867076 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 41.262563132924 27.737436867076 0.77775 - vertex 17.169696006639 28.116789181895 0.77775 - vertex 17.737436867076 27.737436867076 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 23 0.77775 - vertex 48.011309837942 24.936988122232 0.77775 - vertex 43.737436867076 25.262563132924 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 23 0.77775 - vertex 43.737436867076 25.262563132924 0.77775 - vertex 43.169696006639 24.883210818105 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 15.063011877768 0.77775 - vertex 44.116789181895 14.169696006639 0.77775 - vertex 44.25 13.5 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 44.116789181895 27.169696006639 0.77775 - vertex 44.25 26.5 0.77775 - vertex 48.011309837942 24.936988122232 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 44.116789181895 27.169696006639 0.77775 - vertex 48.011309837942 24.936988122232 0.77775 - vertex 52 30 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.116789181895 27.169696006639 0.77775 - vertex 40.883210818105 27.169696006639 0.77775 - vertex 17.737436867076 27.737436867076 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 54.002309837942 23 0.77775 - vertex 54.002309837942 24.936988122232 0.77775 - vertex 54.002309837942 24.804173569059 0.110046151702 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 41.262563132924 27.737436867076 0.77775 - vertex 41.866228156844 30 0.77775 - vertex 14.607403236621 30 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 41.262563132924 27.737436867076 0.77775 - vertex 14.607403236621 30 0.77775 - vertex 17.169696006639 28.116789181895 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 15.063011877768 0.77775 - vertex 44.25 13.5 0.77775 - vertex 44.116789181895 12.830303993361 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 48.011309837942 15.063011877768 0.77775 - vertex 44.116789181895 12.830303993361 0.77775 - vertex 52 10 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.116789181895 14.169696006639 0.77775 - vertex 18.25 13.5 0.77775 - vertex 41.262563132924 12.262563132924 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.25 26.5 0.77775 - vertex 40.883210818105 27.169696006639 0.77775 - vertex 18.116789181895 27.169696006639 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 54.002309837942 24.730643081307 0 - vertex 54.002309837942 23 0 - vertex 54.002309837942 23 0.77775 - endloop -endfacet -facet normal -1 0 0 - outer loop - vertex 54.002309837942 24.730643081307 0 - vertex 54.002309837942 23 0.77775 - vertex 54.002309837942 24.804173569059 0.110046151702 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 41.830303993361 11.883210818105 0.77775 - vertex 41.262563132924 12.262563132924 0.77775 - vertex 18.25 13.5 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 41.830303993361 11.883210818105 0.77775 - vertex 18.25 13.5 0.77775 - vertex 18.116789181895 12.830303993361 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.116789181895 12.830303993361 0.77775 - vertex 17.737436867076 12.262563132924 0.77775 - vertex 42.5 11.75 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.116789181895 12.830303993361 0.77775 - vertex 42.5 11.75 0.77775 - vertex 41.830303993361 11.883210818105 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.737436867076 12.262563132924 0.77775 - vertex 15.306548743796 10 0.77775 - vertex 52 10 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 17.737436867076 12.262563132924 0.77775 - vertex 52 10 0.77775 - vertex 42.5 11.75 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 40.883210818105 12.830303993361 0.77775 - vertex 18.116789181895 14.169696006639 0.77775 - vertex 41.262563132924 12.262563132924 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.25 26.5 0.77775 - vertex 40.75 26.5 0.77775 - vertex 40.883210818105 27.169696006639 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.116789181895 25.830303993361 0.77775 - vertex 37.474084379442 23 0.77775 - vertex 40.75 26.5 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 18.116789181895 25.830303993361 0.77775 - vertex 40.75 26.5 0.77775 - vertex 18.25 26.5 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 40.883210818105 12.830303993361 0.77775 - vertex 34.416922535211 17 0.77775 - vertex 17.737436867076 14.737436867076 0.77775 - endloop -endfacet -facet normal 0 0 1 - outer loop - vertex 40.883210818105 12.830303993361 0.77775 - vertex 17.737436867076 14.737436867076 0.77775 - vertex 18.116789181895 14.169696006639 0.77775 - endloop -endfacet -endsolid diff --git a/SkeinPyPy_NewUI/models/Screw Holder.gts b/SkeinPyPy_NewUI/models/Screw Holder.gts deleted file mode 100644 index 6399a12cf0..0000000000 --- a/SkeinPyPy_NewUI/models/Screw Holder.gts +++ /dev/null @@ -1,4493 +0,0 @@ -737 2253 1502 Number of Vertices,Number of Edges,Number of Faces --6.859863212247494 0.22628773741583247 9.642249999999999 Vertex Coordinates XYZ --6.649863212247495 0.946287737415833 9.642249999999999 --6.319863212247495 1.396287737415833 9.642249999999999 --5.809863212247494 1.726287737415833 9.642249999999999 --5.2998632122474945 1.8462877374158326 9.642249999999999 --4.519863212247495 1.8462877374158326 9.642249999999999 --4.009863212247495 1.636287737415833 9.642249999999999 --3.6798632122474944 1.2762877374158328 9.642249999999999 --3.4698632122474935 0.7962877374158329 9.642249999999999 --3.3498632122474934 0.016287737415832892 9.642249999999999 --3.3498632122474934 -0.37371226258416745 9.642249999999999 --5.689863212247494 -0.4037122625841675 9.642249999999999 --5.509863212247495 -0.9437122625841673 9.642249999999999 --5.179863212247494 -1.2437122625841672 9.642249999999999 --4.699863212247494 -1.3937122625841676 9.642249999999999 --3.949863212247494 -1.3637122625841673 9.642249999999999 --3.319863212247494 -1.1837122625841672 9.642249999999999 --3.3498632122474934 -1.9637122625841674 9.642249999999999 --4.279863212247495 -2.143712262584168 9.642249999999999 --5.209863212247494 -2.143712262584168 9.642249999999999 --5.929863212247494 -1.9037122625841678 9.642249999999999 --6.409863212247495 -1.4837122625841674 9.642249999999999 --6.679863212247494 -1.0337122625841673 9.642249999999999 --6.829863212247495 -0.4337122625841675 9.642249999999999 --5.4473632122474935 0.8687877374158329 9.642249999999999 --4.457363212247493 0.8387877374158327 9.642249999999999 --4.367363212247493 0.26878773741583245 9.642249999999999 --5.627363212247492 0.3887877374158325 9.642249999999999 --4.667363212247494 1.1087877374158324 9.642249999999999 --5.627363212247492 0.2987877374158325 9.642249999999999 --5.177363212247494 1.1087877374158324 9.642249999999999 --4.009863212247495 1.636287737415833 11.322250000000002 --4.519863212247496 1.8462877374158326 11.322250000000002 --3.6798632122474944 1.276287737415834 11.32225 --3.3498632122474934 -0.37371226258416734 11.32225 --3.3498632122474934 0.016287737415832892 11.32225 --5.689863212247495 -0.4037122625841676 11.32225 --3.9498632122474935 -1.3637122625841673 11.32225 --3.319863212247494 -1.1837122625841672 11.32225 --3.3498632122474943 -1.9637122625841679 11.32225 --6.859863212247496 0.2262877374158324 11.322249999999999 --6.829863212247496 -0.4337122625841676 11.32225 --6.319863212247493 1.396287737415832 11.322249999999999 --5.809863212247494 1.726287737415833 11.32225 --6.649863212247495 0.9462877374158329 11.32225 --5.209863212247495 -2.143712262584168 11.32225 --5.929863212247496 -1.9037122625841687 11.32225 --5.179863212247494 -1.2437122625841672 11.32225 --4.699863212247494 -1.3937122625841676 11.32225 --4.279863212247495 -2.1437122625841676 11.32225 --6.4098632122474966 -1.483712262584167 11.32225 --6.679863212247495 -1.0337122625841677 11.32225 --5.299863212247494 1.846287737415833 11.32225 --3.4698632122474944 0.796287737415833 11.32225 --5.509863212247496 -0.9437122625841675 11.32225 --4.667363212247494 1.1087877374158326 11.32225 --5.177363212247494 1.1087877374158317 11.32225 --4.457363212247494 0.8387877374158329 11.32225 --5.627363212247493 0.38878773741583256 11.32225 --4.367363212247493 0.2687877374158326 11.32225 --5.627363212247492 0.2987877374158324 11.32225 --5.4473632122474935 0.8687877374158326 11.32225 -11.759863212247497 1.8856484886916096 9.64225 -12.899863212247496 1.8556484886916098 9.64225 -12.929863212247495 1.22564848869161 9.64225 -13.439863212247495 1.6756484886916105 9.64225 -13.889863212247496 1.8556484886916098 9.64225 -14.519863212247497 1.8556484886916098 9.64225 -14.999863212247497 1.5856484886916102 9.64225 -15.359863212247497 1.0756484886916096 9.64225 -15.539863212247496 0.3556484886916095 9.64225 -15.539863212247496 -0.60435151130839 9.64225 -15.329863212247497 -1.23435151130839 9.64225 -14.999863212247497 -1.6843515113083907 9.64225 -14.609863212247497 -1.9543515113083907 9.64225 -14.039863212247496 -2.1343515113083904 9.64225 -12.899863212247496 -2.194351511308391 9.64225 -12.869863212247497 -3.5143515113083907 9.64225 -11.759863212247497 -3.484351511308391 9.64225 -12.899863212247496 -1.3843515113083904 9.64225 -13.079863212247497 -1.4443515113083905 9.64225 -14.279863212247497 -0.9043515113083903 9.64225 -12.899863212247496 0.4456484886916098 9.64225 -13.379863212247496 0.8956484886916104 9.64225 -13.769863212247497 1.0156484886916095 9.64225 -14.369863212247497 -0.21435151130839014 9.64225 -14.279863212247497 0.5056484886916098 9.64225 -14.009863212247497 -1.2943515113083905 9.64225 -14.099863212247497 0.8656484886916099 9.64225 -13.649863212247496 -1.4443515113083905 9.64225 -11.759863212247497 1.8856484886916096 11.32225 -12.899863212247498 1.8556484886916098 11.32225 -12.929863212247488 1.2256484886916095 11.32225 -13.439863212247495 1.6756484886916105 11.32225 -13.889863212247494 1.8556484886916107 11.32225 -14.519863212247497 1.8556484886916098 11.32225 -14.999863212247497 1.5856484886916107 11.32225 -15.359863212247493 1.0756484886916098 11.32225 -15.5398632122475 0.35564848869160914 11.32225 -15.539863212247498 -0.6043515113083899 11.32225 -15.329863212247494 -1.234351511308391 11.32225 -14.999863212247503 -1.684351511308392 11.32225 -14.609863212247497 -1.9543515113083898 11.32225 -14.039863212247498 -2.1343515113083895 11.32225 -12.899863212247496 -2.194351511308391 11.32225 -12.869863212247498 -3.514351511308391 11.32225 -11.759863212247494 -3.4843515113083914 11.32225 -14.279863212247493 -0.9043515113083888 11.322250000000002 -14.009863212247494 -1.2943515113083883 11.322250000000002 -13.379863212247498 0.8956484886916118 11.32225 -13.769863212247497 1.0156484886916093 11.322249999999997 -12.899863212247496 0.4456484886916098 11.32225 -12.899863212247496 -1.38435151130839 11.32225 -14.36986321224749 -0.2143515113083907 11.32225 -14.279863212247497 0.5056484886916095 11.32225 -14.099863212247497 0.8656484886916107 11.32225 -13.649863212247496 -1.4443515113083905 11.32225 -13.0798632122475 -1.4443515113083896 11.32225 -2.270136787752506 3.2862877374158317 9.64225 -5.210136787752507 3.256287737415831 9.64225 -5.7801367877525065 3.0462877374158315 9.64225 -6.110136787752507 2.716287737415832 9.64225 -6.260136787752507 2.356287737415831 9.64225 -6.320136787752506 1.6662877374158316 9.64225 -6.140136787752507 1.0962877374158313 9.64225 -5.600136787752507 0.5562877374158314 9.64225 -5.270136787752507 0.3462877374158312 9.64225 -7.040136787752506 -2.1737122625841687 9.64225 -5.720136787752507 -2.143712262584169 9.64225 -4.220136787752507 0.04628773741583159 9.64225 -3.380136787752506 0.01628773741583156 9.64225 -3.350136787752507 -2.1737122625841687 9.64225 -2.270136787752506 -2.143712262584169 9.64225 -3.3801367877525057 2.5062877374158314 9.64225 -3.3801367877525057 0.8562877374158319 9.64225 -5.120136787752506 1.9962877374158312 9.64225 -4.520136787752507 0.9162877374158317 9.64225 -5.120136787752506 1.4562877374158316 9.64225 -3.920136787752506 0.8262877374158316 9.64225 -4.580136787752507 2.476287737415832 9.64225 -4.940136787752506 2.296287737415832 9.64225 -4.880136787752506 1.0962877374158313 9.64225 -2.2701367877525054 3.286287737415832 11.32225 -5.210136787752507 3.256287737415833 11.322250000000004 -5.780136787752506 3.046287737415832 11.32225 -6.1101367877525075 2.7162877374158323 11.32225 -6.260136787752506 2.356287737415831 11.32225 -6.320136787752505 1.6662877374158316 11.32225 -6.140136787752509 1.0962877374158313 11.32225 -5.600136787752508 0.5562877374158319 11.32225 -5.270136787752508 0.3462877374158302 11.32225 -7.040136787752505 -2.1737122625841687 11.32225 -5.7201367877525096 -2.143712262584169 11.32225 -4.220136787752508 0.046287737415831476 11.32225 -3.3801367877525066 0.01628773741583056 11.32225 -3.3501367877525063 -2.1737122625841683 11.32225 -2.2701367877525063 -2.143712262584169 11.322250000000002 -3.9201367877525066 0.8262877374158334 11.32225 -4.520136787752508 0.9162877374158318 11.32225 -4.880136787752507 1.096287737415831 11.32225 -5.120136787752507 1.9962877374158317 11.32225 -4.940136787752505 2.296287737415833 11.32225 -5.120136787752507 1.4562877374158316 11.32225 -3.380136787752506 0.8562877374158319 11.32225 -4.580136787752508 2.476287737415833 11.32225 -3.3801367877525057 2.506287737415832 11.32225 --2.4198632122474937 1.876287737415832 9.64225 --1.279863212247494 1.8462877374158322 9.64225 --1.2498632122474946 1.2162877374158323 9.64225 --0.7398632122474949 1.666287737415833 9.64225 --0.2898632122474938 1.8462877374158322 9.64225 -0.3401367877525061 1.8462877374158322 9.64225 -0.8201367877525065 1.5762877374158326 9.64225 -1.1801367877525069 1.066287737415832 9.64225 -1.3601367877525057 0.34628773741583185 9.64225 -1.3601367877525057 -0.6137122625841677 9.64225 -1.1501367877525075 -1.2437122625841677 9.64225 -0.8201367877525065 -1.6937122625841683 9.64225 -0.43013678775250686 -1.9637122625841683 9.64225 --0.13986321224749437 -2.143712262584168 9.64225 --1.279863212247494 -2.2037122625841685 9.64225 --1.3098632122474934 -3.5237122625841684 9.64225 --2.4198632122474937 -3.4937122625841686 9.64225 --1.0998632122474925 -1.453712262584168 9.64225 -0.10013678775250578 -0.9137122625841679 9.64225 --1.279863212247494 0.43628773741583216 9.64225 --0.7998632122474936 0.8862877374158328 9.64225 --0.40986321224749395 1.0062877374158319 9.64225 --1.279863212247494 -1.393712262584168 9.64225 -0.19013678775250686 -0.22371226258416776 9.64225 -0.10013678775250612 0.4962877374158322 9.64225 --0.16986321224749384 -1.3037122625841682 9.64225 --0.07986321224749288 0.8562877374158323 9.64225 --0.5298632122474941 -1.453712262584168 9.64225 --2.4198632122474937 1.876287737415832 11.32225 --1.2798632122474942 1.8462877374158313 11.32225 --1.2498632122474944 1.2162877374158318 11.32225 --0.7398632122474951 1.6662877374158342 11.322249999999999 --0.28986321224749373 1.8462877374158322 11.32225 -0.340136787752506 1.8462877374158322 11.32225 -0.8201367877525063 1.5762877374158322 11.32225 -1.180136787752507 1.0662877374158315 11.32225 -1.3601367877525052 0.34628773741583185 11.32225 -1.3601367877525052 -0.6137122625841679 11.32225 -1.1501367877525073 -1.2437122625841677 11.32225 -0.8201367877525064 -1.6937122625841687 11.322250000000002 -0.43013678775250686 -1.9637122625841683 11.32225 --0.13986321224749487 -2.143712262584167 11.32225 --1.2798632122474942 -2.203712262584169 11.32225 --1.3098632122474934 -3.5237122625841684 11.32225 --2.4198632122474937 -3.493712262584169 11.32225 -0.10013678775250634 -0.9137122625841673 11.32225 --0.16986321224749368 -1.3037122625841677 11.32225 --0.40986321224749384 1.0062877374158323 11.32225 --1.2798632122474942 0.43628773741583216 11.32225 --1.2798632122474942 -1.393712262584168 11.32225 -0.19013678775250709 -0.22371226258416776 11.32225 -0.10013678775250609 0.4962877374158318 11.32225 --0.07986321224749288 0.8562877374158324 11.32225 --0.5298632122474942 -1.453712262584168 11.32225 --1.0998632122474927 -1.453712262584168 11.32225 --0.7998632122474936 0.8862877374158331 11.32225 --11.929863212247497 3.2862877374158317 9.64225 --8.989863212247496 3.256287737415831 9.64225 --8.419863212247495 3.0462877374158315 9.64225 --8.089863212247495 2.716287737415832 9.64225 --7.939863212247495 2.356287737415831 9.64225 --7.879863212247496 1.6662877374158316 9.64225 --8.059863212247494 1.0962877374158313 9.64225 --8.599863212247495 0.5562877374158314 9.64225 --8.929863212247495 0.3462877374158312 9.64225 --7.159863212247496 -2.1737122625841687 9.64225 --8.479863212247496 -2.143712262584169 9.64225 --9.979863212247496 0.04628773741583159 9.64225 --10.819863212247496 0.01628773741583156 9.64225 --10.849863212247495 -2.1737122625841687 9.64225 --11.929863212247497 -2.143712262584169 9.64225 --10.819863212247496 2.5062877374158314 9.64225 --10.819863212247496 0.8562877374158319 9.64225 --9.079863212247496 1.9962877374158312 9.64225 --9.679863212247495 0.9162877374158317 9.64225 --9.079863212247496 1.4562877374158316 9.64225 --10.279863212247495 0.8262877374158316 9.64225 --9.619863212247495 2.476287737415832 9.64225 --9.259863212247495 2.296287737415832 9.64225 --9.319863212247496 1.0962877374158313 9.64225 --11.9298632122475 3.2862877374158317 11.32225 --8.989863212247498 3.2562877374158314 11.32225 --8.419863212247495 3.046287737415831 11.32225 --8.089863212247495 2.7162877374158314 11.32225 --7.939863212247496 2.3562877374158306 11.322250000000002 --7.879863212247495 1.666287737415833 11.32225 --8.059863212247494 1.096287737415831 11.32225 --8.599863212247495 0.5562877374158306 11.32225 --8.929863212247497 0.3462877374158324 11.32225 --7.159863212247495 -2.1737122625841683 11.32225 --8.479863212247496 -2.143712262584169 11.32225 --9.979863212247498 0.04628773741582992 11.32225 --10.819863212247498 0.016287737415831227 11.32225 --10.849863212247497 -2.1737122625841687 11.32225 --11.929863212247499 -2.1437122625841694 11.32225 --9.679863212247495 0.9162877374158314 11.32225 --9.319863212247498 1.096287737415831 11.322250000000002 --9.079863212247496 1.4562877374158316 11.32225 --9.079863212247496 1.996287737415832 11.322250000000002 --9.259863212247495 2.2962877374158324 11.32225 --10.819863212247496 0.8562877374158329 11.322250000000002 --9.619863212247497 2.476287737415832 11.32225 --10.279863212247498 0.8262877374158322 11.32225 --10.819863212247494 2.5062877374158314 11.32225 -30.0 15.073000000000004 7.822250000000002 -30.0 15.206210818105248 8.491946006638905 -30.0 15.585563132923546 9.059686867076463 -30.0 16.153303993361096 9.43903918189475 -30.0 16.823 9.572249999999997 -30.0 17.49269600663891 9.43903918189475 -30.0 18.06043686707646 9.059686867076458 -30.0 18.439789181894753 8.49194600663891 -30.0 18.573000000000004 7.822250000000006 -30.0 18.439789181894753 7.152553993361098 -22.000000000000007 18.43978918189476 7.152553993361091 -30.0 18.06043686707646 6.5848131329235455 -30.0 17.492696006638916 6.205460818105249 -30.0 16.823 6.072249999999999 -30.0 16.153303993361092 6.205460818105249 -30.0 15.585563132923546 6.584813132923542 -30.0 15.206210818105244 7.152553993361091 -22.000000000000007 15.073000000000006 7.822250000000001 -22.000000000000007 15.206210818105252 8.491946006638905 -22.000000000000007 15.585563132923546 9.05968686707646 -22.000000000000007 16.823000000000008 9.572249999999997 -22.000000000000007 16.153303993361096 9.439039181894755 -22.000000000000014 17.492696006638912 9.439039181894753 -22.000000000000007 18.060436867076454 9.059686867076454 -22.000000000000007 18.439789181894753 8.491946006638907 -22.0 18.57300000000001 7.822250000000001 -22.000000000000007 18.060436867076465 6.584813132923542 -22.000000000000007 17.492696006638912 6.20546081810525 -22.000000000000007 16.823 6.0722499999999995 -22.000000000000007 16.1533039933611 6.205460818105244 -22.000000000000007 15.585563132923546 6.584813132923544 -22.000000000000007 15.206210818105255 7.152553993361091 -22.000000000000007 15.073000000000002 -0.17774999999999785 -22.000000000000007 15.585563132923546 1.0596868670764614 -22.000000000000007 15.206210818105255 0.49194600663890586 -22.000000000000007 16.153303993361096 1.439039181894751 -22.000000000000007 16.823000000000004 1.5722499999999995 -22.000000000000007 17.492696006638912 1.4390391818947483 -22.000000000000007 18.06043686707646 1.059686867076457 -22.000000000000014 18.573000000000004 -0.1777500000000014 -22.000000000000007 18.43978918189476 0.49194600663890853 -22.000000000000007 18.060436867076458 -1.4151868670764545 -22.000000000000007 18.43978918189476 -0.8474460066389078 -22.000000000000007 17.492696006638912 -1.7945391818947485 -22.000000000000007 16.153303993361092 -1.7945391818947503 -22.000000000000007 16.823000000000004 -1.9277499999999996 -22.000000000000007 15.585563132923546 -1.4151868670764598 -22.000000000000007 15.206210818105253 -0.8474460066389087 -30.0 15.072999999999999 -0.17774999999999785 -30.0 15.206210818105257 0.49194600663890586 -30.0 15.58556313292355 1.0596868670764596 -30.0 16.153303993361096 1.4390391818947554 -30.0 16.823000000000004 1.5722499999999995 -30.0 18.060436867076465 1.0596868670764579 -30.0 17.492696006638912 1.4390391818947492 -30.0 18.439789181894753 0.49194600663890586 -30.0 18.573 -0.1777500000000014 -30.0 18.43978918189476 -0.8474460066389105 -30.0 17.492696006638912 -1.7945391818947511 -30.0 18.06043686707646 -1.4151868670764562 -30.0 16.823000000000004 -1.9277499999999996 -30.0 16.153303993361096 -1.7945391818947494 -30.0 15.585563132923548 -1.4151868670764598 -30.0 15.20621081810525 -0.8474460066389096 -29.999999999999993 -17.927 -0.1777500000000014 -22.000000000000007 -17.793789181894752 0.491946006638905 -30.0 -17.414436867076454 1.0596868670764552 -30.0 -16.846696006638904 1.4390391818947492 -30.0 -16.176999999999996 1.5722499999999995 -30.0 -15.507303993361093 1.4390391818947545 -30.0 -14.939563132923539 1.059686867076457 -29.999999999999993 -14.560210818105249 0.4919460066389041 -29.999999999999993 -14.427 -0.17774999999999963 -30.0 -14.560210818105247 -0.8474460066389069 -30.0 -14.93956313292354 -1.4151868670764562 -30.0 -15.507303993361088 -1.794539181894752 -30.0 -16.177 -1.9277500000000023 -30.0 -16.846696006638904 -1.7945391818947556 -30.0 -17.414436867076454 -1.4151868670764527 -29.999999999999993 -17.793789181894756 -0.8474460066389087 -30.0 -17.793789181894756 0.4919460066389023 -22.000000000000007 -17.927000000000003 -0.17774999999999785 -22.000000000000007 -17.414436867076454 1.059686867076456 -22.000000000000007 -16.846696006638904 1.4390391818947519 -22.000000000000007 -16.176999999999996 1.5722499999999995 -22.000000000000007 -15.507303993361091 1.4390391818947519 -22.000000000000007 -14.939563132923539 1.0596868670764579 -22.000000000000007 -14.560210818105244 0.49194600663890764 -22.000000000000007 -14.427000000000001 -0.1777500000000023 -22.000000000000007 -14.560210818105245 -0.8474460066389105 -22.000000000000007 -14.939563132923539 -1.4151868670764625 -22.000000000000007 -15.507303993361091 -1.7945391818947538 -22.000000000000007 -16.177 -1.9277500000000014 -22.000000000000007 -16.846696006638904 -1.79453918189476 -22.000000000000007 -17.414436867076454 -1.415186867076459 -22.000000000000007 -17.79378918189475 -0.8474460066389069 -22.0 -17.92699999999999 7.822249999999998 -22.0 -17.793789181894745 8.491946006638901 -22.0 -17.414436867076454 9.059686867076454 -22.000000000000007 -16.8466960066389 9.43903918189475 -22.000000000000007 -16.177 9.572249999999999 -22.000000000000007 -15.507303993361091 9.439039181894753 -22.000000000000007 -14.939563132923539 9.059686867076458 -22.000000000000007 -14.560210818105242 8.491946006638909 -22.0 -14.426999999999989 7.822249999999997 -22.0 -14.560210818105247 7.152553993361094 -22.000000000000007 -14.939563132923539 6.584813132923543 -22.000000000000007 -15.50730399336109 6.205460818105245 -22.000000000000007 -16.177 6.072249999999999 -22.000000000000007 -16.846696006638904 6.205460818105244 -22.000000000000007 -17.414436867076454 6.584813132923531 -22.0 -17.793789181894745 7.15255399336109 -30.0 -17.92699999999999 7.822249999999999 -29.999999999999993 -17.79378918189475 8.491946006638901 -30.0 -16.8466960066389 9.439039181894747 -29.999999999999993 -17.41443686707645 9.059686867076447 -30.0 -16.177000000000003 9.572249999999999 -30.0 -15.507303993361093 9.439039181894755 -30.0 -14.939563132923542 9.05968686707646 -29.999999999999993 -14.560210818105244 8.49194600663891 -30.0 -14.426999999999994 7.822249999999999 -30.0 -14.560210818105247 7.15255399336109 -30.0 -15.507303993361091 6.205460818105246 -30.0 -14.939563132923539 6.58481313292354 -30.0 -16.846696006638908 6.20546081810525 -30.0 -16.177000000000003 6.072249999999999 -30.0 -17.414436867076454 6.5848131329235375 -29.999999999999993 -17.793789181894738 7.152553993361091 -22.000000000000007 20.323 11.32225 --15.957446808510642 10.323 -3.6777500000000014 -22.000000000000007 10.323 -3.677749999999998 -22.000000000000007 20.323 -3.6777499999999996 --30.0 10.323 11.32225 -22.000000000000007 10.323 11.32225 -18.512888012183033 10.323 -3.6777500000000014 -3.649215653894089 10.323 11.32225 --30.0 10.323 -3.6777500000000014 -22.000000000000007 -19.677 -3.677750000000003 --15.535294151144047 -9.677 -3.677749999999998 --15.551298997002412 -9.677 11.32225 --30.0 -9.677 11.32225 -22.000000000000007 -9.677 -3.677749999999998 -22.000000000000007 -9.677 11.32225 -14.771385376467595 -9.677000000000001 11.322249999999997 --30.0 -9.677 -3.6777500000000014 -22.000000000000007 -19.677 11.32225 -14.25 -6.1770000000000005 11.32225 -14.116789181894752 -6.846696006638907 11.32225 -13.737436867076458 -7.414436867076454 11.32225 -13.169696006638908 -7.793789181894753 11.32225 -12.5 -7.927000000000002 11.32225 -11.830303993361095 -7.793789181894753 -3.677749999999998 -10.883210818105248 -6.846696006638907 11.32225 -10.750000000000002 -6.177000000000002 11.32225 -10.883210818105248 -5.507303993361092 11.32225 -11.262563132923546 -4.939563132923541 11.32225 -11.830303993361092 -4.56021081810525 11.32225 -12.5 -4.4270000000000005 11.32225 -13.169696006638912 -4.560210818105252 11.32225 -13.737436867076458 -4.939563132923545 11.32225 -14.116789181894745 -5.507303993361094 11.32225 -11.262563132923546 -7.414436867076459 -3.677749999999998 -14.116789181894752 -6.846696006638906 -3.677749999999998 -14.250000000000004 -6.177000000000001 -3.677749999999998 -13.737436867076454 -7.414436867076457 -3.677749999999998 -12.5 -7.9270000000000005 -3.677749999999998 -13.169696006638908 -7.793789181894753 -3.677749999999998 -11.262563132923546 -7.4144368670764615 11.322250000000004 -11.830303993361099 -7.793789181894749 11.322249999999997 -10.883210818105246 -6.846696006638908 -3.6777500000000014 -10.749999999999998 -6.177000000000003 -3.6777500000000014 -10.883210818105246 -5.50730399336109 -3.677749999999998 -11.262563132923546 -4.939563132923544 -3.677749999999998 -11.830303993361092 -4.560210818105249 -3.677749999999998 -12.5 -4.427 -3.6777500000000014 -13.169696006638912 -4.560210818105251 -3.6777500000000014 -13.737436867076458 -4.939563132923547 -3.6777500000000014 -14.116789181894745 -5.507303993361091 -3.677749999999998 -14.25 6.823000000000001 11.32225 -14.116789181894752 6.153303993361095 11.32225 -13.737436867076458 5.585563132923542 11.32225 -13.169696006638908 5.206210818105249 11.32225 -12.5 5.0729999999999995 11.32225 -11.830303993361092 5.206210818105249 11.32225 -11.262563132923542 5.58556313292354 11.32225 -10.88321081810525 6.153303993361093 11.32225 -10.75 6.823000000000001 11.32225 -10.88321081810525 7.4926960066389094 11.32225 -11.262563132923542 8.060436867076458 11.32225 -11.830303993361092 8.439789181894751 11.32225 -12.500000000000004 8.572999999999997 11.32225 -13.169696006638908 8.43978918189475 11.32225 -13.737436867076454 8.060436867076458 11.32225 -14.116789181894745 7.492696006638908 11.32225 -14.116789181894756 6.153303993361094 -3.677749999999998 -14.250000000000004 6.822999999999999 -3.677749999999998 -13.169696006638908 5.206210818105248 -3.677749999999998 -13.737436867076454 5.585563132923541 -3.6777500000000014 -11.830303993361092 5.206210818105244 -3.677749999999998 -12.500000000000007 5.073 -3.677749999999998 -11.262563132923539 5.585563132923539 -3.6777500000000014 -10.883210818105248 6.153303993361094 -3.677749999999998 -10.75 6.823000000000002 -3.677749999999998 -10.88321081810525 7.49269600663891 -3.677749999999998 -11.262563132923542 8.060436867076458 -3.677749999999998 -11.830303993361092 8.439789181894751 -3.677749999999998 -13.169696006638908 8.439789181894747 -3.677749999999998 -12.500000000000007 8.572999999999999 -3.677749999999998 -13.73743686707645 8.060436867076456 -3.677749999999998 -14.116789181894752 7.492696006638909 -3.677749999999998 --11.75 6.8229999999999995 11.32225 --11.883210818105248 6.153303993361091 11.32225 --12.262563132923546 5.585563132923542 11.32225 --12.830303993361092 5.206210818105249 11.32225 --13.5 5.0729999999999995 11.32225 --14.169696006638908 5.206210818105247 11.32225 --14.737436867076461 5.585563132923542 11.32225 --15.116789181894752 6.153303993361095 11.32225 --15.25 6.8229999999999995 11.32225 --15.116789181894749 7.492696006638904 11.32225 --14.737436867076454 8.060436867076458 11.32225 --14.169696006638908 8.439789181894753 11.32225 --13.500000000000007 8.573 11.32225 --12.830303993361099 8.439789181894755 11.32225 --12.262563132923542 8.060436867076463 11.32225 --11.883210818105244 7.492696006638908 11.32225 --11.749999999999996 6.823 -3.6777500000000014 --11.883210818105255 6.153303993361096 -3.677749999999998 --12.830303993361095 5.2062108181052515 -3.677750000000005 --12.262563132923542 5.5855631329235464 -3.677749999999998 --13.5 5.073 -3.6777500000000014 --14.169696006638908 5.20621081810525 -3.677749999999998 --15.116789181894756 6.153303993361094 -3.6777500000000014 --14.737436867076461 5.5855631329235464 -3.6777500000000014 --15.25 6.823000000000004 -3.6777500000000014 --15.116789181894749 7.492696006638907 -3.677749999999998 --14.169696006638908 8.439789181894753 -3.6777500000000014 --14.737436867076454 8.06043686707646 -3.677749999999998 --13.500000000000007 8.573 -3.6777500000000014 --12.830303993361099 8.439789181894756 -3.677749999999998 --12.262563132923546 8.060436867076461 -3.677749999999998 --11.883210818105248 7.492696006638909 -3.6777500000000014 --11.75 -6.177000000000002 11.32225 --11.883210818105248 -6.846696006638909 11.32225 --12.262563132923546 -7.4144368670764615 11.32225 --12.830303993361095 -7.793789181894753 11.32225 --13.5 -7.927000000000004 11.32225 --14.169696006638912 -7.793789181894753 11.32225 --14.737436867076458 -7.414436867076458 11.32225 --15.116789181894752 -6.846696006638909 11.32225 --15.25 -6.177000000000002 11.32225 --15.116789181894752 -5.507303993361099 11.32225 --14.737436867076461 -4.9395631329235465 11.32225 --14.169696006638908 -4.56021081810525 11.32225 --13.5 -4.4270000000000005 11.32225 --12.830303993361095 -4.56021081810525 11.32225 --12.262563132923539 -4.939563132923539 11.32225 --11.88321081810524 -5.507303993361094 11.32225 --11.883210818105248 -6.846696006638911 -3.677749999999998 --11.750000000000004 -6.177 -3.6777500000000014 --12.262563132923546 -7.414436867076457 -3.677749999999998 --12.830303993361095 -7.7937891818947564 -3.677749999999998 --14.169696006638908 -7.793789181894753 -3.6777500000000014 --13.5 -7.927000000000008 -3.677749999999998 --14.737436867076454 -7.414436867076457 -3.677749999999998 --15.116789181894752 -6.846696006638908 -3.677749999999998 --15.250000000000004 -6.177 -3.6777500000000014 --15.116789181894749 -5.507303993361097 -3.6777500000000014 --14.737436867076461 -4.939563132923546 -3.677749999999998 --14.169696006638908 -4.560210818105251 -3.677749999999998 --13.5 -4.427 -3.6777500000000014 --12.830303993361095 -4.560210818105254 -3.6777500000000014 --12.262563132923546 -4.93956313292354 -3.677749999999998 --11.88321081810524 -5.507303993361091 -3.677749999999998 --17.997690162057708 -2.677 2.3222500000000004 --17.997690162057708 3.323 2.3222500000000004 -30.0 3.323 2.3222500000000004 -30.0 3.323 -3.6777500000000014 --23.988690162057708 3.323 2.3222500000000004 --23.988690162057708 -2.677 2.3222500000000004 -30.0 -2.677 -3.6777500000000014 -18.011309837942285 -2.677 2.3222500000000004 -30.0 -2.677 2.3222500000000004 -18.011309837942285 3.323 -3.677749999999998 --30.0 3.323 -3.6777500000000014 --17.997690162057708 3.323 -3.6777500000000014 --23.988690162057708 3.323 -3.677749999999998 -11.422110817733461 -2.677 -3.677749999999998 --17.997690162057708 -2.677 -3.6777500000000014 --30.0 -2.677 2.3222500000000004 --23.988690162057708 -2.677 -3.677749999999998 --30.0 3.323 2.3222500000000004 -24.002309837942285 -2.677 2.3222500000000004 -18.011309837942285 3.323 2.3222500000000004 -24.002309837942285 3.323 -3.6777500000000014 --30.0 -2.677 -3.6777500000000014 -24.002309837942285 -2.677 -3.6777500000000014 -24.002309837942285 3.323 2.3222500000000004 -18.011309837942285 -2.677 -3.677749999999998 --17.997690162057708 -4.876999999999995 -1.5777500000000053 --17.997690162057708 -4.481173569058687 0.41220384829846246 --17.997690162057708 -3.3539552621700417 2.099205262170041 --17.997690162057708 -1.6669538482984616 3.226423569058687 --17.997690162057708 0.3230000000000051 3.6222499999999958 --17.997690162057708 2.312953848298472 3.226423569058687 --17.997690162057708 3.9999552621700523 2.099205262170044 --17.997690162057708 5.127173569058697 0.41220384829846424 --17.997690162057708 5.523000000000007 -1.5777500000000053 --17.997690162057708 5.127173569058698 -3.5677038482984695 --17.997690162057708 -4.481173569058685 -3.5677038482984766 --23.988690162057708 -4.876999999999992 -1.5777500000000053 --23.988690162057708 -4.481173569058684 0.41220384829846246 --23.988690162057708 -3.35395526217004 2.099205262170041 --23.988690162057708 -1.6669538482984607 3.226423569058687 --23.988690162057708 0.323000000000006 3.6222499999999958 --23.988690162057708 2.312953848298473 3.226423569058687 --23.988690162057708 3.999955262170054 2.099205262170044 --23.988690162057708 5.127173569058697 0.41220384829846246 --23.988690162057708 5.523000000000007 -1.5777500000000053 --23.988690162057708 5.1271735690587 -3.567703848298473 --23.988690162057708 -4.481173569058683 -3.5677038482984766 --17.997690162057708 5.053643081306509 -3.6777500000000014 --17.997690162057708 -4.4076430813064995 -3.6777500000000014 --23.988690162057708 5.0536430813065145 -3.677749999999998 --23.988690162057708 -4.4076430813064995 -3.677749999999998 -30.0 20.323 -3.6777499999999996 -30.0 20.323 11.32225 -30.0 -19.677 -3.677750000000003 -30.0 -19.677 11.32225 -24.002309837942285 5.053643081306509 -3.6777500000000014 -18.011309837942285 5.053643081306513 -3.677749999999998 -24.002309837942285 -4.4076430813064995 -3.6777500000000014 -18.011309837942285 -4.407643081306494 -3.677749999999998 -24.002309837942285 -4.876999999999995 -1.5777500000000053 -24.002309837942285 -4.481173569058687 0.41220384829846246 -24.002309837942285 -3.3539552621700417 2.099205262170041 -24.002309837942285 -1.6669538482984616 3.226423569058687 -24.002309837942285 0.3230000000000051 3.6222499999999958 -24.002309837942285 2.312953848298472 3.226423569058687 -24.002309837942285 3.9999552621700523 2.099205262170044 -24.002309837942285 5.127173569058697 0.41220384829846424 -24.002309837942285 5.523000000000007 -1.5777500000000053 -24.002309837942285 5.127173569058698 -3.5677038482984695 -24.002309837942285 -4.481173569058685 -3.5677038482984766 -18.011309837942285 -4.876999999999992 -1.5777500000000053 -18.011309837942285 -4.481173569058684 0.41220384829846246 -18.011309837942285 -3.35395526217004 2.099205262170041 -18.011309837942285 -1.6669538482984607 3.226423569058687 -18.011309837942285 0.323000000000006 3.6222499999999958 -18.011309837942285 2.312953848298473 3.226423569058687 -18.011309837942285 3.999955262170054 2.099205262170044 -18.011309837942285 5.127173569058697 0.41220384829846246 -18.011309837942285 5.523000000000007 -1.5777500000000053 -18.011309837942285 5.1271735690587 -3.567703848298473 -18.011309837942285 -4.481173569058683 -3.5677038482984766 --12.919863212247494 1.006287737415828 11.322250000000007 --13.189863212247493 1.4862877374158323 11.32225 --15.109863212247499 3.4362877374158303 11.32225 --16.999863212247483 1.5762877374158215 11.32225 --17.53986321224749 0.19628773741582983 11.322249999999999 --12.739863212247494 -0.3737122625841701 11.322250000000006 --12.739863212247498 0.34628773741582886 11.322250000000004 --12.979863212247494 -1.0937122625841718 11.322250000000004 --13.999863212247496 -2.08371226258417 11.32225 --14.689863212247495 -2.3237122625841695 11.32225 --13.459863212247495 -1.7237122625841699 11.32225 --16.939863212247495 -1.57371226258417 11.32225 --17.35986321224749 0.9762877374158305 11.32225 --16.3398632122475 -2.05371226258417 11.322250000000002 --15.649863212247492 -2.3237122625841677 11.32225 --17.329863212247496 -0.9137122625841699 11.32224999999999 --17.509863212247502 -0.25371226258417345 11.322249999999986 --17.539863212247496 0.1962877374158304 9.64225 --17.359863212247497 0.9762877374158304 9.64225 --16.999863212247497 1.5762877374158304 9.64225 --15.109863212247495 3.43628773741583 9.64225 --13.189863212247493 1.48628773741583 9.64225 --12.919863212247494 1.0062877374158297 9.64225 --12.739863212247494 0.34628773741582985 9.64225 --12.739863212247494 -0.3737122625841701 9.64225 --12.979863212247494 -1.09371226258417 9.64225 --13.459863212247495 -1.7237122625841703 9.64225 --13.999863212247494 -2.08371226258417 9.64225 --14.689863212247495 -2.32371226258417 9.64225 --15.649863212247494 -2.32371226258417 9.64225 --16.339863212247494 -2.05371226258417 9.64225 --16.939863212247495 -1.57371226258417 9.64225 --17.329863212247496 -0.9137122625841699 9.64225 --17.509863212247495 -0.25371226258417 9.64225 -7.756738351254477 -1.9418924731182776 11.32225 -7.60673835125448 -0.38189247311828 11.32225 -7.996738351254475 -0.05189247311827905 11.322249999999997 -8.14673835125448 -2.18189247311828 11.32225 -10.906738351254479 -1.4618924731182803 11.32225 -8.746738351254475 -2.2418924731182805 11.32225 -9.226738351254475 -2.0918924731182775 11.322249999999997 -7.786738351254477 0.7881075268817213 11.32225 -7.426738351254476 -0.891892473118279 11.32225 -7.426738351254478 -1.1618924731182783 11.322249999999993 -11.146738351254479 -1.4918924731182788 11.32225 -11.146738351254477 -2.1518924731182794 11.32225 -8.56673835125448 1.7481075268817183 11.322249999999999 -7.816738351254481 1.5381075268817215 11.32225 -8.05673835125448 0.9081075268817214 11.322249999999999 -8.776738351254474 -1.4318924731182783 11.32225 -8.536738351254476 0.12810752688172422 11.322249999999997 -9.61673835125448 -1.7018924731182792 11.322250000000002 -8.83673835125448 1.1181075268817215 11.322249999999997 -7.546738351254474 -1.6418924731182787 11.322249999999997 -8.536738351254476 -1.1618924731182818 11.32225 -9.316738351254479 1.0581075268817208 11.32225 -9.256738351254473 -1.4318924731182792 11.322250000000002 -10.36673835125448 -2.2418924731182828 11.322249999999997 -10.096738351254476 1.6581075268817225 11.322249999999997 -8.686738351254476 -0.5618924731182797 11.322249999999997 -8.506738351254475 -0.8618924731182792 11.32225 -9.946738351254476 -2.091892473118282 11.322249999999997 -9.496738351254475 1.8081075268817197 11.32225 -9.616738351254476 0.24810752688172077 11.322250000000004 -9.586738351254477 -1.1918924731182794 11.322249999999993 -10.726738351254475 -1.3118924731182808 11.322249999999993 -10.666738351254477 0.8781075268817216 11.32225 -9.586738351254478 0.7881075268817216 11.32225 -9.706738351254476 -1.7918924731182786 11.32225 -9.166738351254473 -0.41189247311827915 11.322249999999997 -10.486738351254473 1.3281075268817206 11.32225 -9.496738351254475 0.21810752688172008 11.322250000000002 -9.61673835125448 -0.44189247311827906 11.322249999999997 -7.4267383512544765 -0.891892473118279 9.67725 -7.606738351254478 -0.3818924731182791 9.67725 -7.996738351254475 -0.05189247311827877 9.67725 -8.536738351254474 0.12810752688172145 9.67725 -9.496738351254475 0.21810752688172086 9.67725 -9.616738351254478 0.24810752688172089 9.67725 -9.586738351254478 0.7881075268817215 9.67725 -9.316738351254479 1.058107526881721 9.67725 -8.836738351254478 1.118107526881721 9.67725 -8.056738351254479 0.9081075268817216 9.67725 -7.786738351254474 0.7881075268817215 9.67725 -7.816738351254479 1.5381075268817215 9.67725 -8.566738351254479 1.748107526881721 9.67725 -9.496738351254475 1.8081075268817215 9.67725 -10.096738351254478 1.6581075268817216 9.67725 -10.486738351254475 1.3281075268817215 9.67725 -10.666738351254477 0.8781075268817216 9.67725 -10.726738351254475 -1.311892473118279 9.67725 -10.906738351254477 -1.461892473118279 9.67725 -11.146738351254477 -1.4918924731182792 9.67725 -11.146738351254477 -2.15189247311828 9.67725 -10.366738351254478 -2.241892473118279 9.67725 -9.946738351254476 -2.0918924731182797 9.67725 -9.706738351254476 -1.7918924731182795 9.67725 -9.616738351254478 -1.7018924731182796 9.67725 -9.226738351254475 -2.0918924731182797 9.67725 -8.746738351254475 -2.241892473118279 9.67725 -8.146738351254477 -2.1818924731182796 9.67725 -7.756738351254475 -1.9418924731182798 9.67725 -7.546738351254474 -1.6418924731182791 9.67725 -7.4267383512544765 -1.1618924731182791 9.67725 -8.536738351254474 -1.1618924731182791 9.67725 -8.686738351254476 -0.5618924731182792 9.67725 -8.506738351254475 -0.861892473118279 9.67725 -9.586738351254478 -1.1918924731182794 9.67725 -9.256738351254475 -1.4318924731182792 9.67725 -9.616738351254478 -0.44189247311827906 9.67725 -9.166738351254477 -0.41189247311827915 9.67725 -8.776738351254474 -1.4318924731182792 9.67725 -671 426 Edge Vertex Indices Starting from 1 -426 107 -647 646 -646 645 -633 261 -672 455 -431 417 -417 101 -193 174 -174 172 -80 63 -627 247 -190 176 -176 175 -191 190 -190 175 -188 172 -172 171 -481 143 -83 63 -18 17 -17 16 -142 137 -137 127 -85 67 -67 66 -85 68 -68 67 -736 731 -731 685 -671 107 -667 148 -661 148 -193 191 -191 174 -20 19 -19 14 -190 177 -177 176 -19 15 -15 14 -448 434 -434 431 -481 249 -249 33 -19 18 -18 16 -19 16 -16 15 -484 247 -665 425 -708 674 -24 23 -23 12 -188 171 -171 170 -694 677 -677 666 -191 175 -175 174 -193 172 -153 128 -142 127 -127 126 -627 626 -626 247 -20 14 -14 13 -30 12 -710 673 -673 667 -366 352 -352 335 -32 6 -597 276 -34 7 -470 453 -34 32 -32 7 -33 32 -195 33 -280 279 -296 280 -300 285 -187 170 -170 169 -295 278 -314 312 -402 314 -639 637 -637 522 -474 458 -389 373 -358 342 -40 17 -646 627 -194 181 -181 180 -328 310 -44 43 -43 3 -44 3 -92 63 -111 84 -401 317 -317 315 -404 289 -289 288 -43 2 -624 600 -45 2 -562 549 -46 20 -510 494 -731 702 -702 701 -38 35 -49 38 -643 630 -348 347 -363 348 -679 152 -44 4 -222 219 -219 214 -402 313 -313 310 -38 15 -683 665 -665 426 -49 15 -363 362 -408 363 -42 23 -323 322 -322 306 -481 195 -195 143 -52 23 -569 558 -558 552 -55 12 -724 665 -55 37 -37 12 -614 604 -604 567 -153 152 -152 128 -434 417 -735 733 -733 716 -673 146 -53 5 -620 564 -621 620 -366 365 -408 366 -494 493 -509 494 -596 328 -251 43 -57 56 -56 29 -57 29 -293 291 -399 293 -287 286 -301 287 -56 26 -30 27 -60 30 -339 338 -354 339 -61 59 -59 28 -61 28 -467 453 -453 452 -509 493 -210 209 -209 182 -615 605 -605 604 -391 271 -357 341 -597 274 -413 404 -404 99 -417 100 -562 555 -555 549 -512 497 -497 496 -569 552 -616 569 -253 229 -254 253 -505 489 -402 312 -658 641 -326 309 -596 327 -292 291 -291 274 -328 312 -330 328 -598 349 -365 349 -610 568 -253 41 -325 323 -323 307 -640 639 -639 522 -324 308 -625 615 -615 604 -412 361 -361 360 -501 485 -659 643 -643 642 -592 503 -399 296 -296 295 -325 307 -408 362 -412 408 -401 318 -318 317 -399 281 -291 275 -275 274 -459 458 -475 459 -295 294 -399 295 -195 34 -325 308 -53 6 -621 611 -611 610 -256 51 -470 454 -454 453 -350 349 -365 350 -323 306 -596 329 -362 346 -607 563 -281 280 -296 281 -326 324 -324 309 -597 275 -332 315 -333 332 -506 490 -278 277 -294 278 -327 310 -328 327 -566 560 -399 294 -294 293 -39 35 -282 280 -485 484 -499 485 -341 340 -356 341 -616 615 -615 569 -497 481 -401 305 -305 303 -554 467 -508 491 -597 278 -412 360 -360 359 -252 43 -638 629 -629 488 -211 39 -554 470 -470 467 -320 286 -299 284 -251 53 -46 21 -47 46 -576 546 -620 609 -642 411 -282 281 -297 282 -623 613 -613 612 -596 330 -330 329 -585 574 -618 608 -608 607 -503 489 -489 488 -582 571 -466 449 -408 336 -366 335 -622 611 -619 608 -36 35 -195 36 -554 469 -61 30 -647 626 -408 365 -365 364 -302 287 -195 54 -54 36 -256 47 -623 612 -55 48 -48 37 -597 277 -479 464 -464 463 -480 464 -597 279 -331 314 -401 303 -346 345 -361 346 -404 290 -290 289 -540 524 -251 44 -598 335 -329 312 -331 329 -329 314 -408 352 -328 313 -313 312 -285 284 -299 285 -330 312 -333 315 -404 292 -292 290 -614 602 -284 283 -298 284 -58 26 -638 488 -483 247 -669 150 -246 231 -231 230 -78 77 -79 78 -736 685 -84 65 -86 71 -87 86 -80 77 -81 80 -561 560 -560 550 -534 409 -264 262 -93 92 -92 64 -93 64 -363 347 -430 104 -479 477 -477 405 -93 65 -417 414 -414 413 -94 93 -93 66 -431 101 -96 67 -616 605 -97 68 -446 445 -558 446 -98 97 -97 69 -98 69 -100 71 -445 428 -101 72 -102 101 -101 73 -165 163 -163 162 -362 347 -347 346 -103 74 -451 94 -104 75 -718 670 -670 664 -452 94 -518 410 -105 77 -429 428 -445 429 -451 95 -583 550 -584 583 -79 63 -107 79 -107 63 -446 429 -539 523 -601 600 -624 601 -352 336 -412 362 -362 361 -598 348 -242 229 -229 228 -50 20 -101 100 -100 72 -514 210 -394 377 -102 73 -439 410 -562 411 -411 403 -605 567 -106 78 -108 88 -88 82 -364 349 -349 348 -478 405 -113 80 -413 375 -375 374 -364 348 -109 90 -90 88 -611 568 -608 563 -596 401 -591 570 -592 579 -594 592 -624 613 -599 385 -421 420 -437 421 -374 373 -413 374 -573 546 -546 545 -350 335 -598 350 -463 404 -450 95 -453 92 -605 563 -557 549 -517 410 -599 408 -538 537 -593 538 -582 572 -572 571 -520 410 -505 490 -490 489 -621 610 -598 408 -462 404 -618 552 -619 618 -437 420 -402 399 -596 402 -572 545 -461 406 -117 90 -461 404 -188 170 -113 81 -118 113 -506 400 -508 506 -196 167 -584 574 -574 573 -414 412 -597 399 -494 406 -460 406 -413 99 -534 532 -532 409 -614 567 -515 514 -529 515 -396 378 -438 422 -368 367 -416 368 -588 577 -420 414 -625 604 -414 410 -410 409 -531 515 -591 581 -581 570 -625 614 -614 603 -106 79 -107 106 -419 418 -433 419 -387 385 -385 370 -562 560 -560 411 -406 403 -493 406 -510 509 -509 400 -352 351 -351 335 -382 367 -383 382 -416 370 -370 369 -192 180 -180 179 -427 107 -593 537 -537 536 -567 551 -602 567 -715 692 -437 436 -436 421 -439 414 -586 549 -587 586 -418 414 -453 91 -357 342 -342 341 -476 400 -532 517 -517 516 -491 403 -109 88 -435 419 -599 387 -396 379 -464 404 -366 350 -396 393 -393 378 -524 523 -539 524 -493 403 -534 517 -599 384 -617 606 -437 412 -428 107 -622 612 -612 611 -373 372 -413 373 -491 490 -506 491 -421 414 -439 422 -593 539 -539 538 -490 403 -599 386 -386 385 -553 547 -547 391 -581 571 -571 570 -525 524 -540 525 -420 419 -435 420 -416 369 -369 368 -599 416 -416 408 -412 409 -436 412 -386 384 -384 368 -508 400 -598 347 -387 370 -450 96 -386 368 -606 563 -599 413 -535 533 -533 409 -449 98 -408 364 -364 363 -538 523 -523 522 -398 382 -541 525 -613 600 -600 565 -562 550 -394 392 -392 376 -622 554 -623 622 -618 607 -507 493 -493 492 -573 545 -431 102 -464 449 -449 404 -428 427 -444 428 -562 407 -384 367 -478 476 -476 405 -509 507 -507 400 -429 106 -492 403 -114 109 -109 108 -395 379 -394 376 -519 410 -384 383 -383 367 -428 106 -419 414 -562 403 -587 577 -577 576 -619 609 -609 608 -596 399 -597 596 -355 339 -617 552 -618 617 -480 479 -479 405 -393 377 -599 383 -412 359 -359 358 -594 579 -114 110 -110 109 -115 110 -30 24 -24 12 -632 247 -26 8 -8 7 -129 128 -128 127 -115 111 -111 110 -134 120 -120 119 -135 134 -134 119 -139 130 -140 120 -141 136 -136 123 -144 143 -143 119 -144 119 -334 303 -203 175 -298 283 -145 120 -532 516 -516 515 -502 501 -556 502 -392 341 -600 548 -147 122 -460 459 -475 460 -585 584 -586 585 -418 417 -434 418 -584 550 -550 549 -592 400 -533 518 -534 533 -495 458 -556 501 -501 499 -415 409 -416 367 -154 129 -407 400 -592 407 -399 291 -638 489 -489 403 -351 336 -353 351 -583 572 -592 556 -157 133 -133 119 -260 259 -259 236 -145 144 -144 120 -80 79 -79 77 -147 146 -146 122 -148 124 -616 606 -606 605 -542 526 -526 525 -149 125 -587 575 -162 136 -164 135 -166 134 -479 463 -463 462 -578 576 -166 140 -140 134 -587 576 -576 575 -597 388 -388 274 -548 332 -559 540 -540 539 -570 559 -593 570 -590 579 -519 518 -533 519 -595 591 -591 580 -321 304 -296 279 -279 278 -592 506 -506 505 -598 398 -599 598 -575 546 -389 274 -569 446 -564 554 -622 564 -518 517 -534 518 -612 565 -359 343 -343 342 -516 439 -439 438 -609 568 -621 564 -622 621 -164 139 -354 337 -559 541 -541 540 -322 321 -321 306 -571 559 -118 117 -117 113 -495 459 -402 315 -579 556 -402 310 -160 158 -504 486 -206 157 -594 407 -535 519 -401 315 -402 401 -558 542 -559 558 -201 143 -563 553 -567 563 -334 318 -318 303 -292 273 -296 278 -354 338 -338 337 -316 314 -402 316 -620 610 -610 609 -542 525 -566 415 -595 566 -566 561 -157 119 -583 582 -582 550 -565 548 -548 547 -620 619 -619 564 -398 383 -599 398 -558 444 -444 443 -372 371 -416 372 -613 565 -532 515 -571 545 -475 458 -448 430 -459 406 -494 459 -573 572 -583 573 -479 462 -415 411 -560 415 -611 565 -617 607 -607 606 -520 519 -535 520 -292 274 -274 273 -568 565 -565 547 -412 358 -413 412 -301 300 -304 301 -589 578 -578 577 -556 546 -578 556 -586 584 -584 549 -413 372 -416 413 -165 140 -166 165 -556 499 -205 157 -595 415 -319 303 -153 129 -154 153 -542 541 -559 542 -592 505 -505 503 -575 573 -340 339 -355 340 -457 143 -578 546 -359 342 -584 573 -388 387 -387 372 -588 549 -456 144 -504 487 -487 486 -536 535 -535 409 -569 447 -447 446 -594 590 -590 557 -371 370 -416 371 -595 561 -200 143 -580 570 -593 580 -568 563 -608 568 -445 444 -558 445 -579 578 -589 579 -455 454 -469 455 -555 407 -594 555 -619 552 -590 589 -589 557 -360 344 -344 343 -404 399 -399 292 -589 577 -551 345 -499 484 -500 499 -283 282 -297 283 -356 340 -405 400 -406 405 -202 143 -166 135 -448 431 -431 430 -471 455 -484 483 -500 484 -552 545 -564 552 -595 580 -415 410 -598 412 -457 144 -593 559 -559 539 -564 545 -553 551 -567 553 -302 271 -591 561 -516 410 -288 271 -302 288 -425 152 -476 460 -161 136 -162 161 -599 388 -602 551 -551 412 -404 302 -433 418 -434 433 -458 457 -473 458 -360 343 -353 337 -334 333 -333 318 -557 555 -594 557 -589 588 -588 557 -480 466 -466 464 -603 434 -387 371 -404 288 -320 319 -319 305 -617 616 -616 552 -333 317 -203 143 -587 549 -588 587 -536 520 -470 469 -469 454 -512 474 -474 473 -683 666 -666 665 -174 173 -173 172 -221 184 -183 182 -182 181 -673 148 -187 169 -194 180 -323 284 -270 269 -269 262 -393 339 -389 273 -197 168 -355 354 -379 355 -504 502 -556 504 -196 195 -195 167 -199 170 -354 353 -380 354 -598 351 -673 147 -672 456 -456 146 -510 400 -396 395 -395 338 -404 98 -204 203 -203 176 -597 280 -496 458 -514 423 -423 210 -553 342 -378 355 -379 378 -218 190 -496 481 -481 457 -211 210 -210 182 -211 182 -543 443 -443 442 -302 301 -305 302 -561 550 -582 561 -200 199 -199 171 -200 171 -379 354 -380 379 -670 107 -107 91 -210 208 -438 423 -515 438 -496 457 -298 297 -309 298 -325 324 -324 282 -380 353 -381 380 -322 286 -358 357 -376 358 -392 342 -553 392 -208 207 -207 179 -208 179 -394 393 -393 340 -320 287 -547 320 -297 281 -311 297 -213 192 -192 185 -212 192 -602 435 -435 433 -215 187 -187 186 -390 273 -548 333 -215 186 -397 337 -198 196 -402 311 -311 281 -217 212 -212 185 -217 185 -219 193 -193 188 -214 193 -480 405 -601 480 -376 375 -375 358 -596 280 -599 597 -597 413 -548 334 -334 319 -500 498 -498 469 -597 404 -396 338 -627 484 -353 336 -381 353 -531 432 -432 422 -357 356 -377 357 -325 282 -382 381 -381 336 -398 351 -351 337 -510 476 -476 475 -325 283 -548 319 -322 284 -416 336 -652 633 -436 409 -532 436 -601 466 -531 422 -500 469 -398 337 -327 280 -603 433 -553 391 -323 283 -547 319 -602 433 -603 602 -551 344 -592 504 -322 285 -215 189 -216 215 -377 356 -378 377 -326 280 -356 355 -378 356 -516 438 -598 346 -326 282 -543 542 -542 443 -309 297 -311 309 -222 214 -214 187 -396 339 -222 187 -413 358 -544 543 -543 442 -601 465 -551 346 -598 551 -394 340 -497 473 -473 472 -515 423 -305 301 -581 561 -582 581 -397 338 -558 443 -510 475 -475 474 -304 300 -306 304 -321 286 -416 382 -382 336 -532 531 -531 436 -394 341 -401 302 -554 499 -499 469 -402 281 -210 207 -376 357 -377 376 -308 298 -309 308 -512 473 -472 457 -457 456 -190 185 -185 177 -699 668 -241 234 -234 231 -239 238 -238 223 -243 234 -241 231 -246 241 -220 184 -249 248 -248 225 -712 688 -250 249 -249 225 -250 225 -251 250 -250 227 -90 77 -77 76 -252 227 -253 228 -473 457 -255 230 -234 233 -233 231 -648 626 -257 232 -663 660 -660 152 -258 233 -720 719 -719 716 -259 235 -189 181 -261 237 -237 223 -247 237 -634 524 -635 524 -248 224 -250 226 -252 251 -251 227 -253 252 -252 228 -719 717 -717 716 -254 229 -655 639 -257 256 -256 232 -697 689 -260 236 -630 411 -642 630 -263 262 -262 241 -263 241 -267 238 -243 241 -262 243 -635 634 -654 635 -629 628 -628 488 -257 233 -258 257 -260 258 -628 487 -656 639 -654 634 -647 627 -530 441 -441 440 -111 85 -85 84 -636 634 -634 525 -652 636 -636 633 -270 238 -269 243 -711 688 -688 672 -641 411 -156 132 -209 181 -692 670 -670 91 -113 109 -665 663 -663 425 -711 672 -498 472 -472 471 -710 667 -25 3 -3 2 -704 693 -693 689 -482 249 -668 661 -661 149 -714 692 -718 717 -719 718 -674 667 -667 662 -705 693 -702 662 -720 687 -687 683 -112 84 -84 83 -729 669 -705 681 -202 173 -709 708 -710 709 -245 224 -736 735 -735 703 -707 681 -150 149 -149 126 -62 57 -57 31 -679 669 -669 152 -90 76 -648 632 -632 626 -649 632 -708 678 -669 151 -511 510 -510 474 -736 702 -707 678 -712 707 -707 706 -240 228 -228 227 -165 160 -149 148 -148 125 -544 441 -210 157 -92 91 -91 63 -688 684 -684 455 -691 664 -711 707 -712 711 -136 124 -124 123 -735 704 -704 703 -233 232 -232 231 -713 712 -712 706 -112 110 -110 84 -717 664 -696 684 -714 696 -86 82 -82 72 -498 497 -497 472 -710 708 -711 710 -390 389 -389 374 -737 725 -725 724 -50 19 -714 684 -726 663 -725 663 -717 691 -688 455 -710 672 -692 691 -691 670 -449 97 -729 699 -699 669 -694 666 -698 695 -695 690 -737 724 -736 703 -703 702 -450 97 -711 708 -708 707 -62 31 -31 25 -721 687 -706 681 -242 228 -725 665 -117 109 -514 211 -211 46 -514 46 -25 4 -4 3 -27 10 -10 9 -156 155 -155 132 -214 188 -188 187 -512 511 -511 474 -31 4 -696 692 -692 91 -31 5 -5 4 -33 6 -36 11 -36 10 -40 39 -39 17 -211 50 -50 46 -478 477 -477 461 -477 462 -462 461 -49 48 -48 15 -48 14 -52 51 -51 22 -52 22 -53 44 -44 5 -163 161 -54 34 -34 8 -54 8 -103 102 -102 74 -478 460 -478 461 -461 460 -50 40 -40 18 -50 18 -253 45 -252 45 -45 43 -704 689 -211 40 -528 257 -260 257 -650 632 -650 631 -61 60 -60 59 -60 58 -544 442 -442 441 -195 32 -211 195 -195 39 -195 35 -600 401 -548 401 -596 548 -116 111 -687 666 -290 272 -290 273 -273 272 -294 276 -294 277 -277 276 -361 344 -361 345 -345 344 -327 326 -326 310 -326 311 -311 310 -657 641 -641 637 -289 271 -289 272 -272 271 -301 285 -301 286 -286 285 -500 482 -500 483 -483 482 -332 331 -331 316 -332 316 -316 315 -51 47 -47 21 -51 21 -512 495 -512 496 -496 495 -511 494 -511 495 -495 494 -663 152 -49 37 -49 35 -83 65 -65 63 -218 217 -217 190 -65 64 -64 63 -90 81 -81 77 -96 95 -95 67 -508 507 -507 491 -507 492 -492 491 -105 104 -104 76 -105 76 -106 105 -105 78 -268 264 -386 370 -386 369 -97 96 -96 68 -100 99 -99 71 -202 201 -201 173 -104 103 -103 75 -113 112 -112 80 -112 83 -83 80 -114 108 -108 86 -108 82 -439 421 -422 421 -436 422 -538 521 -538 522 -522 521 -389 388 -388 373 -388 372 -431 103 -430 103 -452 92 -94 92 -397 395 -395 381 -395 380 -521 410 -521 411 -411 410 -398 397 -397 382 -397 381 -543 526 -543 527 -527 526 -414 409 -89 70 -70 69 -544 527 -544 528 -528 527 -586 574 -586 575 -575 574 -443 426 -442 426 -426 425 -537 520 -537 521 -521 520 -417 413 -413 100 -118 81 -117 81 -429 104 -106 104 -133 132 -132 131 -139 135 -135 131 -139 131 -131 130 -456 145 -504 503 -503 487 -503 488 -488 487 -152 151 -151 128 -151 127 -593 536 -536 409 -155 131 -625 603 -615 603 -603 569 -146 145 -145 122 -145 121 -559 545 -558 545 -466 465 -465 449 -465 450 -450 449 -159 158 -158 139 -159 139 -139 137 -160 159 -159 142 -159 137 -441 423 -441 424 -424 423 -624 623 -623 601 -623 554 -637 521 -637 411 -468 451 -465 451 -451 450 -425 153 -444 427 -443 427 -427 426 -407 403 -403 400 -406 400 -442 424 -442 425 -425 424 -293 276 -291 276 -276 275 -596 332 -596 331 -472 456 -471 456 -456 455 -498 482 -497 482 -482 481 -199 196 -199 143 -196 143 -468 467 -467 452 -468 452 -452 451 -204 157 -203 157 -157 143 -321 320 -320 304 -320 305 -305 304 -156 154 -156 153 -603 448 -569 448 -448 447 -194 184 -184 181 -632 631 -631 261 -218 216 -628 486 -498 471 -471 469 -632 261 -261 247 -211 167 -211 183 -183 167 -199 198 -198 170 -203 202 -202 175 -202 174 -659 653 -653 643 -219 218 -218 191 -219 191 -308 307 -307 299 -308 299 -299 298 -197 196 -196 168 -30 28 -28 24 -307 306 -306 300 -307 300 -300 299 -207 157 -481 33 -553 343 -551 343 -391 272 -390 272 -667 661 -86 72 -72 71 -237 236 -236 235 -270 267 -630 403 -256 255 -255 232 -255 231 -636 525 -659 658 -658 657 -157 156 -156 133 -88 76 -76 75 -268 265 -255 254 -254 230 -261 260 -260 237 -718 664 -530 440 -654 653 -656 654 -656 655 -655 654 -653 652 -652 650 -652 651 -651 650 -254 41 -640 522 -26 9 -9 8 -58 56 -683 426 -669 668 -668 150 -668 149 -734 723 -734 724 -724 723 -729 679 -700 668 -700 661 -113 110 -27 9 -673 672 -672 146 -638 403 -702 676 -676 662 -678 674 -676 674 -674 662 -703 689 -721 694 -694 687 -23 22 -22 13 -23 13 -13 12 -636 261 -22 21 -21 13 -21 20 -20 13 -736 698 -736 695 -42 1 -42 24 -24 1 -27 12 -12 11 -27 11 -11 10 -568 553 -568 547 -250 33 -250 53 -53 33 -37 35 -35 11 -37 11 -649 648 -648 644 -245 240 -240 226 -240 227 -227 226 -246 229 -246 230 -230 229 -85 66 -84 66 -66 65 -595 593 -593 415 -593 409 -640 523 -635 523 -95 94 -94 67 -94 66 -45 41 -41 1 -45 1 -447 429 -447 430 -430 429 -116 115 -115 89 -115 87 -115 114 -114 87 -114 86 -116 85 -116 89 -89 85 -644 630 -644 638 -638 630 -696 453 -696 91 -89 87 -87 70 -87 71 -71 70 -148 147 -147 124 -147 123 -728 679 -727 679 -679 660 -99 98 -98 70 -99 70 -163 136 -163 138 -138 136 -502 486 -501 486 -486 485 -544 530 -530 528 -530 513 -406 401 -406 404 -404 401 -438 432 -440 438 -440 423 -601 405 -600 405 -405 401 -28 25 -25 2 -183 181 -189 183 -201 200 -200 173 -200 172 -221 216 -216 189 -221 189 -189 184 -531 529 -529 432 -529 440 -440 432 -601 554 -554 468 -601 468 -468 465 -530 529 -529 513 -529 514 -514 513 -547 271 -547 287 -287 271 -29 26 -26 7 -29 7 -7 6 -697 678 -678 676 -653 634 -652 634 -88 74 -88 75 -75 74 -264 263 -263 242 -263 246 -246 242 -266 265 -265 245 -265 240 -265 264 -264 240 -264 242 -242 240 -268 266 -266 244 -266 245 -245 244 -528 260 -527 260 -735 716 -716 715 -735 715 -715 704 -138 124 -138 125 -125 124 -31 29 -29 5 -29 6 -6 5 -255 41 -255 42 -42 41 -645 638 -645 629 -727 660 -726 660 -723 677 -735 698 -733 698 -698 690 -715 714 -714 705 -715 705 -705 704 -185 178 -178 177 -732 730 -730 686 -730 680 -483 249 -483 248 -142 125 -142 126 -126 125 -89 68 -89 69 -69 68 -724 666 -723 666 -186 169 -169 167 -169 168 -168 167 -734 733 -733 690 -734 690 -690 682 -733 723 -723 722 -733 722 -722 716 -714 713 -713 705 -713 706 -706 705 -716 691 -715 691 -720 683 -719 683 -683 671 -165 158 -82 74 -74 73 -82 73 -73 72 -719 671 -718 671 -671 670 -701 662 -700 662 -662 661 -737 726 -726 725 -155 154 -154 130 -155 130 -696 454 -684 454 -732 686 -731 686 -686 685 -209 208 -208 180 -209 180 -722 721 -721 720 -722 720 -720 716 -39 38 -38 17 -38 16 -54 9 -36 9 -222 218 -392 391 -391 375 -392 375 -602 412 -435 412 -437 435 -133 131 -135 133 -135 119 -137 130 -130 127 -130 129 -129 127 -151 150 -150 126 -151 126 -163 160 -160 138 -160 142 -142 138 -556 554 -564 556 -564 546 -391 390 -390 375 -390 374 -198 197 -197 169 -198 169 -628 627 -627 485 -628 485 -703 676 -703 697 -697 676 -205 204 -204 176 -205 176 -207 206 -206 178 -207 178 -220 194 -213 194 -194 192 -709 674 -709 667 -248 247 -247 223 -248 223 -651 631 -651 633 -633 631 -259 258 -258 235 -258 234 -659 657 -657 656 -659 656 -656 653 -649 644 -644 643 -659 642 -658 642 -642 641 -646 629 -646 628 -210 156 -657 639 -657 637 -713 688 -713 684 -141 121 -140 121 -121 120 -423 156 -528 513 -513 257 -513 256 -732 728 -730 728 -728 727 -28 1 -28 2 -2 1 -722 677 -721 677 -729 728 -732 729 -732 699 -141 123 -123 121 -123 122 -122 121 -636 526 -636 527 -527 261 -62 59 -59 58 -62 58 -58 57 -55 14 -55 13 -62 25 -59 25 -513 46 -256 46 -648 647 -647 645 -648 645 -645 644 -655 640 -654 640 -640 635 -165 162 -162 141 -165 141 -141 140 -189 186 -186 183 -186 167 -206 205 -205 177 -206 177 -256 52 -255 52 -52 42 -697 693 -693 681 -697 681 -681 678 -244 224 -238 224 -224 223 -732 731 -731 701 -737 675 -730 675 -270 262 -268 262 -192 178 -192 179 -179 178 -166 158 -166 164 -164 158 -686 682 -695 685 -690 685 -685 682 -737 730 -730 727 -737 727 -727 726 -60 26 -60 27 -27 26 -222 215 -218 215 -270 268 -268 244 -270 244 -244 238 -237 235 -239 237 -239 223 -243 239 -239 235 -243 235 -235 234 -653 650 -650 643 -650 649 -649 643 -732 701 -701 699 -701 700 -700 699 -221 217 -217 216 -220 213 -213 212 -424 153 -423 153 -737 734 -734 675 -734 682 -682 675 -686 680 -682 680 -680 675 -245 226 -226 225 -245 225 -225 224 -269 267 -267 239 -269 239 -221 220 -220 212 -221 212 -1 2 31 Face Edge Indices Starting from 1 -2161 3 4 -1709 2105 5 -6 1683 1035 -388 7 8 -9 10 61 -11 419 744 -12 50 1126 -16 13 14 -59 15 16 -17 18 55 -899 1052 19 -11 1569 20 -21 22 47 -63 23 24 -25 26 1842 -27 28 25 -29 30 366 -2027 31 1067 -1747 32 33 -33 1362 1320 -9 34 35 -36 37 67 -13 38 39 -40 41 37 -949 42 43 -44 45 1742 -46 47 48 -48 49 40 -50 360 952 -130 51 1609 -52 1801 1351 -53 54 682 -55 56 496 -57 58 1408 -35 59 60 -17 1111 61 -62 686 890 -1992 63 64 -65 66 12 -67 68 1815 -1821 171 69 -1313 70 71 -72 73 312 -1933 79 74 -1501 329 75 -1463 76 685 -289 77 178 -78 79 76 -80 1487 81 -82 778 83 -84 350 1740 -85 86 1016 -87 262 237 -88 200 89 -90 91 215 -92 981 1007 -1393 93 464 -561 1080 94 -21 1471 95 -96 2083 2119 -97 98 1017 -347 99 127 -102 100 101 -1428 123 102 -103 1541 377 -1382 689 104 -105 106 817 -994 107 108 -1315 101 109 -460 110 628 -1475 111 109 -719 630 112 -1814 293 113 -160 538 114 -115 116 2188 -117 1535 118 -1272 223 119 -120 379 121 -1246 1882 122 -1441 1460 123 -124 125 1175 -126 127 811 -49 2050 128 -1784 129 130 -118 131 128 -132 228 133 -53 1819 134 -249 135 136 -19 137 138 -2179 139 134 -195 140 141 -1810 2155 142 -143 1009 1997 -144 145 142 -511 146 147 -148 149 62 -43 150 7 -151 152 1958 -1034 153 746 -1968 241 154 -155 797 156 -157 320 158 -159 180 160 -161 207 302 -100 341 162 -165 163 164 -1965 1344 165 -166 731 167 -168 1515 169 -1930 164 170 -171 2208 172 -173 828 174 -177 175 176 -1735 318 177 -1691 178 179 -180 636 648 -1054 181 182 -183 184 218 -1513 1745 185 -1131 186 273 -234 257 187 -508 188 189 -8 190 433 -112 191 192 -1528 193 194 -195 998 196 -197 1265 198 -307 895 199 -200 348 126 -1759 201 1509 -1174 1507 202 -203 264 161 -868 204 205 -206 351 207 -247 469 208 -321 209 445 -210 796 833 -1853 1473 211 -227 212 213 -214 215 1780 -1212 256 216 -217 218 520 -282 219 220 -271 725 221 -222 223 2115 -224 1626 1159 -238 225 226 -1729 240 227 -228 427 229 -230 231 105 -232 254 225 -205 233 234 -235 854 236 -237 266 238 -1462 323 239 -1075 240 216 -241 1442 1829 -242 243 484 -1456 2177 244 -77 245 246 -247 209 248 -1737 213 249 -344 1680 250 -428 251 337 -252 617 865 -253 83 254 -202 255 256 -257 1678 75 -258 352 259 -781 260 482 -261 1500 262 -263 99 264 -265 372 837 -167 266 267 -2048 268 117 -253 298 269 -270 940 271 -272 944 273 -196 274 275 -1051 194 276 -277 278 335 -1690 1920 279 -500 280 588 -779 333 281 -675 282 283 -284 162 1259 -285 286 359 -1445 1477 287 -279 288 289 -168 1089 290 -291 357 1732 -292 1828 1233 -293 1525 294 -295 784 764 -843 296 664 -2117 297 1302 -298 1091 299 -300 301 326 -302 303 250 -714 304 502 -305 306 635 -1628 307 308 -1191 309 598 -640 991 310 -426 346 311 -468 572 312 -798 313 242 -488 314 305 -315 1490 316 -1004 288 317 -318 172 1482 -319 65 1289 -622 320 321 -1058 322 169 -323 324 316 -1524 244 325 -634 326 583 -327 328 144 -261 281 329 -758 330 331 -671 332 330 -82 1043 333 -830 1521 334 -825 230 335 -336 1503 337 -107 338 339 -576 769 340 -1459 292 341 -342 541 1033 -345 343 88 -334 344 345 -158 346 72 -206 347 348 -349 291 350 -303 351 343 -106 999 352 -338 353 354 -1157 527 355 -356 703 357 -358 170 1783 -359 308 732 -1990 360 2100 -1352 361 2067 -362 363 1840 -364 745 365 -366 2200 1817 -367 1536 1331 -368 1875 369 -370 1543 371 -1060 372 373 -620 722 374 -375 1273 1941 -378 376 377 -1540 383 378 -379 404 132 -380 1617 1858 -672 381 382 -387 383 1844 -1613 384 385 -1852 386 387 -400 639 388 -28 1559 389 -274 390 183 -1996 395 391 -392 924 393 -396 394 395 -1600 1884 396 -1749 434 397 -643 923 398 -2024 401 399 -400 401 437 -2167 402 403 -251 404 405 -1940 1565 406 -1850 416 407 -1551 408 1763 -1769 409 410 -407 1693 411 -475 789 412 -364 1554 413 -414 398 415 -416 471 1665 -417 718 418 -419 421 420 -1068 421 1367 -422 415 392 -423 624 592 -424 110 425 -734 540 426 -219 427 428 -446 208 429 -430 431 1421 -113 1448 432 -399 433 434 -1424 435 1053 -1087 436 673 -2022 1466 437 -521 556 438 -661 439 440 -441 147 184 -528 442 365 -1572 443 444 -451 445 446 -382 1449 447 -371 497 448 -449 450 465 -451 121 623 -567 452 453 -210 243 454 -455 252 306 -456 818 491 -457 919 776 -458 677 459 -1658 460 300 -461 532 569 -462 489 463 -464 586 465 -466 467 638 -468 342 469 -486 759 470 -1544 615 471 -472 1584 179 -473 823 441 -192 986 474 -967 565 475 -476 485 783 -477 549 478 -479 480 309 -656 866 481 -199 482 483 -156 484 832 -229 958 485 -495 1452 486 -487 931 488 -2059 489 603 -490 666 491 -853 480 492 -507 1469 493 -494 452 1423 -1896 493 495 -1434 496 85 -497 1615 498 -499 612 500 -501 2002 1734 -502 503 902 -873 385 504 -936 1124 505 -537 159 506 -856 712 507 -1614 508 1560 -374 509 510 -552 355 511 -512 1925 513 -570 514 1049 -1130 1898 515 -516 727 517 -1002 518 662 -660 602 519 -520 146 526 -521 522 1598 -1915 523 513 -524 525 457 -526 527 1636 -528 420 529 -530 978 531 -532 533 614 -534 535 439 -536 577 537 -1037 538 539 -73 540 541 -542 658 543 -544 545 604 -546 547 2194 -548 2 1669 -549 550 1633 -551 975 552 -1980 553 1321 -463 554 555 -589 1573 556 -557 1001 558 -559 384 716 -560 1366 472 -186 561 562 -563 945 647 -705 564 565 -593 587 566 -567 443 653 -531 1097 568 -569 903 974 -1038 570 654 -470 331 571 -572 248 157 -514 573 574 -575 423 576 -651 637 577 -578 564 509 -610 594 579 -997 580 749 -609 554 581 -582 548 642 -583 584 313 -585 882 586 -587 260 588 -519 462 589 -795 590 515 -591 592 478 -733 483 593 -594 595 461 -596 597 1153 -598 599 525 -600 340 601 -602 568 603 -604 605 517 -606 607 476 -608 1145 609 -616 610 611 -649 1546 612 -120 429 613 -915 993 614 -1414 615 1558 -605 1557 616 -617 473 750 -618 883 606 -910 619 620 -621 1040 641 -622 623 133 -1577 624 625 -626 543 845 -601 802 627 -851 628 629 -630 373 534 -655 631 632 -633 1660 634 -670 635 864 -1548 636 637 -638 492 858 -1465 1582 639 -571 640 641 -642 1667 643 -929 191 644 -516 611 645 -447 646 647 -539 648 649 -650 659 414 -566 1549 651 -652 653 1570 -1066 1588 654 -1210 436 655 -412 773 656 -645 657 658 -529 582 659 -559 530 660 -1670 644 661 -662 663 763 -664 665 314 -666 505 667 -668 174 1024 -669 487 670 -1113 671 672 -574 673 1164 -657 579 674 -675 676 872 -772 913 677 -678 679 652 -678 1862 680 -681 682 69 -1349 683 66 -1931 684 685 -686 687 2066 -680 688 689 -693 690 691 -692 693 2062 -2063 1651 694 -762 695 690 -2143 696 697 -698 699 700 -691 743 700 -1121 701 889 -1042 702 14 -703 943 1073 -1641 704 2127 -705 706 852 -707 724 708 -709 562 1082 -710 841 629 -2145 1879 711 -712 236 713 -714 880 715 -716 150 717 -718 719 881 -720 499 780 -721 790 722 -235 808 723 -724 725 886 -726 522 957 -727 542 1199 -2065 2034 728 -729 720 730 -731 204 937 -732 733 1798 -734 1127 735 -839 736 479 -737 810 458 -838 738 739 -740 741 1270 -704 742 743 -744 745 370 -711 746 747 -1964 1363 748 -749 750 390 -751 752 834 -1993 1342 753 -558 754 1605 -696 2168 755 -1621 799 756 -692 948 757 -758 759 860 -877 760 663 -757 761 762 -763 764 754 -187 765 766 -767 259 1101 -768 769 961 -770 960 771 -772 926 932 -773 721 774 -775 776 956 -777 1197 804 -778 779 827 -894 780 781 -782 846 783 -784 466 896 -766 1579 785 -140 786 393 -787 633 788 -789 578 790 -791 863 584 -792 793 901 -1168 794 795 -796 922 665 -797 788 798 -799 1649 2198 -1031 800 983 -801 802 768 -803 804 136 -599 805 770 -498 806 807 -857 1532 808 -1523 831 809 -810 879 925 -811 1508 1105 -1648 1652 812 -1026 813 1889 -814 887 2174 -815 730 459 -816 774 619 -817 809 818 -819 893 820 -918 1908 821 -822 964 823 -824 825 701 -354 826 1497 -226 827 87 -828 829 800 -830 89 831 -832 833 296 -892 834 627 -835 862 265 -917 836 837 -838 699 1696 -839 840 417 -841 842 871 -843 844 155 -845 674 846 -847 848 1193 -849 916 850 -851 791 301 -1201 852 523 -853 1642 805 -92 1195 854 -1705 855 1857 -856 506 857 -858 736 859 -381 860 1451 -861 535 862 -870 454 863 -864 865 580 -866 816 867 -868 869 826 -870 871 1826 -872 1179 873 -874 1196 875 -876 877 938 -878 900 879 -880 881 557 -882 850 883 -884 761 885 -2074 886 1205 -1694 2089 887 -888 835 836 -889 278 996 -890 728 891 -892 801 893 -224 894 895 -1606 896 503 -897 668 898 -698 959 899 -900 295 760 -676 901 94 -902 859 418 -903 904 1581 -905 474 989 -906 742 1625 -907 908 813 -909 910 1634 -911 912 786 -913 914 987 -915 544 916 -917 966 775 -1688 1062 918 -919 771 920 -921 455 922 -923 847 924 -925 876 926 -927 1005 928 -929 815 930 -931 955 844 -932 933 914 -934 935 982 -936 937 353 -988 938 518 -336 1183 939 -940 953 941 -942 299 943 -944 898 1166 -945 1672 946 -821 1562 947 -948 756 2197 -949 950 855 -951 928 1713 -952 1518 953 -954 962 955 -1845 956 920 -861 957 1591 -1184 958 976 -906 1215 959 -960 961 591 -467 2076 962 -963 551 964 -1929 322 965 -966 1190 524 -967 438 794 -968 965 969 -1666 970 148 -713 1139 971 -972 755 973 -1118 974 765 -975 976 2057 -1897 977 1204 -978 717 979 -980 1239 981 -283 982 792 -1137 735 983 -984 985 824 -986 930 987 -988 989 933 -332 990 991 -1703 992 42 -993 849 904 -994 969 977 -995 996 1699 -669 997 998 -999 231 985 -1000 947 1721 -1001 905 1002 -1003 867 909 -245 1004 1005 -1006 1007 1213 -1008 1009 129 -1010 1011 10 -2251 1012 1226 -1906 1013 1014 -32 71 1015 -1016 1999 1099 -1017 546 2097 -135 1018 1142 -1019 1020 2191 -1021 897 1088 -869 785 1022 -2001 2081 1023 -1024 1065 1025 -1026 708 1027 -1028 1029 501 -56 1063 1030 -1031 1077 1032 -1033 1136 782 -1015 1034 1877 -1035 1036 1797 -1037 563 1138 -1038 1039 1125 -189 1040 1883 -2090 1041 1042 -1043 1117 667 -723 1529 1044 -435 1045 1046 -793 1743 1047 -1048 1025 1049 -1050 15 1727 -1072 1051 1052 -1055 1053 1054 -1013 1717 1055 -1056 1057 1181 -1058 1189 1059 -1060 840 1061 -1064 1062 1063 -18 1910 1064 -1065 1032 1066 -1067 1068 1306 -1069 2041 181 -1070 1188 1071 -980 1044 1072 -1073 1173 1074 -1075 1076 1133 -1077 1128 1078 -803 1079 1198 -1080 1209 1081 -1082 1047 1083 -1086 1084 1085 -547 2042 1086 -1087 1088 1185 -1089 1928 1090 -1091 1106 1092 -1095 2234 1093 -1094 1108 1095 -1156 1096 1097 -1102 1098 1099 -1022 1392 1100 -1101 984 1120 -1161 1102 2171 -1103 829 1192 -2080 1104 1733 -1105 1106 1207 -1109 1107 1108 -1216 1539 1109 -1112 125 1110 -1111 1433 1112 -1113 1901 1114 -1081 1115 1116 -1117 1151 203 -1118 1119 618 -1120 1121 1141 -1122 1123 1149 -1124 188 1119 -1125 173 1177 -2084 1126 270 -1127 1135 1128 -1129 1130 1148 -1131 1163 1132 -1133 942 1140 -1134 1135 1200 -1136 1137 1150 -1194 1138 1139 -212 1140 1154 -842 1141 1155 -1142 349 1160 -607 1143 311 -1144 2104 1777 -1145 510 1146 -990 1114 1147 -1148 1575 1202 -941 1149 1206 -1592 1150 1103 -1165 1505 1151 -979 992 1152 -2054 1083 1153 -1154 356 1018 -995 1090 1155 -1156 1152 1157 -1504 939 1158 -1159 1027 737 -1160 1516 1079 -1161 1912 1162 -1163 1167 1164 -1165 269 1170 -1166 1048 1167 -1168 1071 706 -405 613 1169 -255 1170 1076 -1056 1171 1172 -1173 1092 1174 -1178 1175 1176 -573 1177 1021 -1178 1098 2210 -1179 1116 449 -1180 1181 1485 -1644 1147 1182 -1183 1169 1184 -1185 272 1203 -1186 1187 1389 -512 1188 1045 -875 1700 1189 -1190 1061 1191 -1586 1192 1039 -1193 1172 819 -1354 1194 1195 -1196 1738 1197 -1697 1198 290 -1199 1200 1143 -1201 1202 1146 -631 1203 709 -1204 1059 277 -1205 1206 317 -490 1207 232 -1069 1208 1084 -1209 1132 1210 -1211 1074 1212 -193 1213 1186 -1214 1215 1681 -1216 1217 38 -1218 1785 1407 -1224 1219 1220 -1221 1222 2218 -1219 1277 1223 -1224 362 1225 -1226 1706 2095 -1231 1227 1228 -1372 1229 1300 -1232 1230 1231 -2245 1258 1232 -1260 1233 1234 -1235 1236 1347 -1360 1262 1237 -431 197 1238 -1187 1239 1214 -363 1756 1240 -1220 1241 1242 -2160 1243 319 -1377 1283 1244 -1245 1246 1533 -1241 2108 1247 -2047 1248 1249 -1751 741 1250 -1914 1251 1707 -1715 1252 1254 -1253 2101 1254 -1295 1255 600 -1279 1256 1255 -2247 1228 1257 -1838 1234 1258 -1237 1259 1260 -1238 1261 1262 -1249 1263 1264 -1841 1766 1265 -214 2164 1266 -1244 1267 1268 -1269 1317 2180 -1750 1768 1270 -1271 297 1272 -1275 1273 1274 -1225 1943 1275 -1221 2249 1276 -1277 1274 1278 -1279 1288 1280 -1281 1282 286 -1283 1247 1284 -740 1285 2106 -1282 1286 1629 -1287 1266 1773 -1288 1936 1771 -1289 96 3 -1770 1290 1291 -104 1292 1293 -1294 1295 1757 -1296 1297 1144 -1298 1276 1752 -1299 1278 1020 -1300 1301 1310 -1510 1302 1662 -1761 1303 1619 -182 1304 1014 -1305 1306 1439 -1794 1307 679 -1308 1309 51 -1391 1310 1402 -1311 1312 1712 -2099 1336 1313 -1905 1314 1315 -1316 1317 1476 -44 1686 1318 -1319 1320 1787 -1321 1438 1385 -1322 1263 1323 -1324 1325 1803 -1983 1326 1316 -116 1327 2028 -1328 1329 2017 -1330 1331 1568 -1791 1332 1345 -1333 2181 1326 -1334 1010 1723 -1335 1390 1336 -2184 1955 1337 -1338 1339 1412 -1340 1420 1358 -1341 1342 2068 -1343 1344 1417 -122 1345 1346 -453 1347 1762 -1348 1349 1243 -1833 1350 1348 -1416 1351 1356 -1346 1352 1630 -1353 1354 1436 -115 29 1355 -1356 2183 1340 -1380 1357 1358 -1359 1360 1837 -1361 2070 402 -1362 1363 753 -1290 1892 1364 -1365 1741 1208 -1366 1367 103 -1368 1369 1401 -1404 1370 410 -1371 1357 1372 -1373 1374 697 -1339 1375 1376 -1242 1377 1378 -1379 1380 2013 -1381 1382 1330 -1370 1400 1383 -1384 1397 1385 -1386 1387 1748 -1388 1389 1311 -1390 1415 1391 -2079 1392 1393 -1411 1394 1395 -432 1396 36 -2011 1397 2124 -2032 1398 1399 -1422 1399 1308 -1264 1400 2015 -6 1301 1401 -1402 1796 70 -1305 1403 1404 -1405 394 621 -1406 1407 1332 -1806 1408 1495 -1409 1410 1979 -1789 2237 1411 -1355 1412 1413 -1647 1414 1405 -1371 1415 1416 -1417 1418 2156 -2045 1419 1328 -2014 1420 1333 -1359 1951 1421 -1395 1422 143 -807 1423 1307 -1426 1424 1425 -2158 1926 1426 -1314 1427 1428 -1429 1430 1795 -1303 1431 1432 -1176 1433 1434 -1435 1436 1006 -1418 1437 1427 -1438 1439 1872 -1440 1441 1437 -80 1442 74 -1831 315 1443 -1443 1444 1824 -1445 1446 95 -1425 1447 1448 -1468 1449 1450 -1450 1451 1452 -131 1453 1454 -1454 1455 41 -1456 1457 1458 -1458 1807 139 -154 1459 1460 -403 1461 973 -1462 1463 1464 -1464 1782 2051 -406 1465 1466 -971 646 1467 -1467 1468 1469 -1470 1471 1472 -1472 46 1396 -1261 1473 1474 -1474 1475 284 -1376 1476 1804 -1447 1477 1470 -1956 1478 1479 -1479 1284 1285 -1350 2225 1480 -1480 1481 1708 -175 1482 1483 -1483 1484 2151 -1364 1485 1486 -239 1487 78 -287 1488 1489 -1489 1490 268 -710 1491 1492 -1492 456 1493 -1859 1494 688 -1329 1495 1008 -1512 339 1496 -1496 1497 1498 -1676 267 1499 -1499 1500 1501 -934 220 1502 -1502 1503 1504 -263 1505 1506 -1506 1507 1508 -1509 1510 2122 -968 108 1511 -1511 1512 1513 -84 874 1514 -1514 1515 1516 -1684 1122 1517 -1517 1518 1519 -1520 1521 1522 -1522 1523 258 -1524 1525 1526 -1526 1812 1457 -1531 1435 1527 -1527 1528 1529 -114 1353 1530 -1530 1531 1532 -1533 970 1309 -328 1453 1534 -1534 1535 1830 -20 1536 1537 -1538 1539 1050 -1537 1540 1541 -1542 1543 1235 -1544 1545 389 -280 1546 1547 -1547 1548 1549 -1550 1551 1552 -1552 1236 413 -442 1553 1554 -1948 1764 1555 -533 595 1556 -1556 1557 545 -391 1558 1559 -397 1560 1561 -1562 1563 1334 -408 1564 1565 -448 1566 1567 -1567 1568 1569 -1864 1570 1571 -1571 1572 1386 -590 1573 1574 -1574 555 1575 -1611 477 1576 -1576 1577 1578 -93 1579 1580 -1580 1581 585 -950 1582 1583 -1583 1564 380 -411 1584 1585 -1585 376 386 -1594 1586 1587 -1587 1588 1078 -481 1612 1589 -1589 1590 1591 -626 1592 1593 -1593 1594 1134 -751 1171 1595 -1595 1596 1597 -504 1598 608 -1599 1600 1995 -1596 1180 1601 -1601 1602 1603 -304 715 1604 -1604 1605 1606 -1057 1607 1608 -1608 1609 1674 -1003 550 1610 -1610 1611 1612 -190 1613 1614 -806 1615 1616 -1616 1542 494 -650 1617 1618 -1618 1550 1553 -2060 1619 1620 -1621 1622 1623 -1623 1624 694 -1036 1625 1639 -907 1626 1627 -1627 1628 1629 -149 1630 1631 -1631 1632 687 -1847 1633 1634 -1432 1635 1620 -217 1636 1637 -1637 1638 275 -747 1639 1640 -1640 1641 2146 -820 1642 1643 -1643 954 141 -310 1644 1645 -1645 1646 1647 -1648 1649 1650 -1650 1651 1654 -2072 1652 1653 -1653 1654 23 -1900 1291 1655 -1655 1656 1657 -425 1658 1659 -1659 1660 1919 -1578 91 1661 -1661 1662 1590 -1922 1663 1664 -1664 1665 1646 -1675 1666 2235 -848 1667 1668 -1668 1669 1607 -729 1670 1671 -1671 536 1672 -1656 1486 1673 -1673 1674 1675 -166 1676 1677 -1677 1678 233 -767 1493 1679 -1679 1680 1520 -1312 1681 1682 -1682 1683 951 -1388 1684 1685 -1685 1686 276 -1104 1719 1687 -1687 1688 1689 -138 1028 1689 -1690 1691 1692 -1692 1693 1663 -1041 1694 1695 -1695 1696 1000 -777 1697 1698 -1698 1699 1700 -2033 1431 1701 -1701 1702 891 -1638 1703 1704 -1704 1705 911 -1706 1707 97 -1708 1709 1714 -1538 1710 2232 -1711 908 1286 -1712 1713 1123 -1714 1715 683 -1029 1488 1716 -1716 1717 1718 -1030 1719 1720 -702 1721 1722 -1722 1723 60 -1724 1725 222 -1726 1727 1728 -1728 34 1110 -1729 1730 1731 -1731 1732 1211 -1733 1734 1023 -681 1735 1736 -1737 1738 1739 -1739 1740 1730 -1741 814 2092 -1742 81 137 -963 1743 1744 -1744 935 1158 -2077 1745 1746 -1746 1498 1100 -2030 1325 1747 -1748 1749 368 -2216 1750 1751 -1019 1752 2248 -1753 440 1271 -1268 1754 1755 -1755 1756 1378 -2147 1757 752 -2109 1758 1759 -738 1760 1761 -1762 1763 1939 -1945 1952 1764 -1765 1766 1240 -1767 1768 1252 -1383 1322 1769 -1917 1923 1770 -1771 2112 1772 -1772 1773 1774 -2223 1775 1776 -1776 1777 1778 -1779 211 198 -1848 1780 625 -684 1781 1782 -2153 1783 163 -1 2019 1784 -361 1785 1786 -1786 1787 1341 -2007 2003 1788 -1788 1789 1790 -1880 2140 1791 -1218 2230 1792 -1792 1793 1319 -1381 1566 1794 -2209 1795 1781 -153 1796 1797 -1870 1798 1753 -1799 1800 1327 -1935 1801 1802 -1802 1803 1800 -1804 1269 2087 -1805 1806 1419 -1807 1808 1809 -1809 1810 54 -5 1297 1811 -1808 1812 1813 -1813 1814 1815 -1977 1338 1816 -1816 1817 1409 -1854 1971 1818 -1818 1819 1820 -1821 1822 1823 -1823 1824 1429 -822 921 1825 -1825 1826 596 -45 1230 1827 -1827 1828 1829 -1830 1831 1832 -1832 1822 145 -2113 1833 1834 -2244 1835 1836 -1836 1837 1838 -430 1944 1839 -1839 1840 1841 -1293 1842 1843 -1843 1844 367 -888 1845 1846 -1846 1847 726 -2166 1848 1849 -1849 575 1256 -1545 1850 1851 -1851 1852 26 -1853 1854 1855 -1855 2137 111 -422 912 1856 -1856 1857 1858 -1866 1859 1860 -1860 1861 1873 -1861 1862 1863 -1863 1864 369 -1292 1494 1865 -1865 1866 1867 -119 2114 1868 -1868 1869 1870 -246 2036 1871 -1871 1872 560 -1599 1873 1874 -1874 1875 1876 -748 1877 1878 -1878 1879 1374 -2134 1880 1881 -1881 1882 1974 -1883 1884 1885 -1885 1876 1561 -972 1461 1886 -1886 1887 1888 -707 1889 1890 -1890 1891 221 -1602 1892 1893 -1893 1894 2129 -1903 946 1895 -1895 1896 1897 -1898 1918 1899 -1899 1900 1070 -424 1901 1902 -1902 1903 1491 -1904 1905 2136 -1906 1251 1907 -1563 1908 1909 -1909 1910 1011 -1911 1912 1913 -1913 1914 1012 -1129 1915 1916 -1916 1917 1918 -1919 1920 1921 -1921 1922 1182 -1894 1923 1924 -1924 1925 1926 -185 597 1927 -1927 1928 1929 -1930 1931 1932 -1932 1933 1967 -1934 1935 2088 -1775 1936 1937 -1937 1294 1296 -2021 444 1938 -1938 1939 1940 -1950 1941 1942 -1942 1943 1944 -1954 1945 1946 -1946 1947 1835 -1947 1948 1949 -1949 1950 1951 -2213 1952 1953 -1953 1954 1955 -1603 1956 1957 -1957 1767 2149 -1958 1959 1960 -1960 1961 1375 -1373 1888 1962 -1962 1963 1964 -1440 1965 1966 -1966 1967 1968 -1779 1765 1969 -1969 1970 1971 -1869 2163 1972 -1972 1973 285 -2206 1974 1975 -1975 1245 1398 -2008 1976 2138 -151 1977 1978 -1978 1979 2004 -1980 1981 1982 -1982 1983 1961 -1984 1985 1217 -2038 1986 1987 -1987 1988 2241 -1318 1519 1989 -1989 1990 1227 -1963 2073 1991 -1991 1992 1993 -27 1867 1994 -1994 1995 1996 -1790 1997 1998 -1998 58 1976 -2173 1999 2000 -2000 2001 2002 -2003 2004 2005 -2005 2006 2239 -2007 2008 2009 -2009 2010 152 -1981 2011 2012 -2012 2013 2014 -1959 2015 2016 -2016 1403 553 -1248 2017 2018 -2018 2019 2025 -2020 812 1361 -2021 2022 2023 -2023 2024 1387 -1323 2025 2026 -2026 2027 409 -2229 2028 2029 -2029 2030 1793 -2031 2032 1394 -2033 2034 2035 -2035 1624 1635 -1384 2036 2037 -2037 927 1369 -2187 2038 2039 -2039 2040 30 -2041 2042 2043 -2043 98 1304 -2044 2045 2046 -2046 2047 2010 -1446 2048 2049 -2049 2050 22 -324 2051 2052 -2052 1430 1444 -1726 124 2053 -2054 2055 2056 -2056 1115 632 -1096 2057 2058 -2058 581 2059 -2060 1622 2061 -2061 2062 739 -24 2063 2064 -2064 2065 2066 -2067 2068 2069 -2069 64 1632 -1887 2070 2071 -2071 2072 2073 -2074 787 2075 -2075 2076 878 -2055 2077 2078 -2078 2079 450 -2080 2081 2082 -2082 86 1720 -2083 2084 2085 -2085 1891 1711 -1799 1413 2086 -2086 2087 2088 -2089 2090 2091 -2091 39 2175 -2092 2093 2094 -2094 2195 1085 -2233 2095 2096 -2096 2097 1093 -52 1335 2098 -2098 2099 1324 -2100 2101 2102 -2102 2186 1257 -1481 1778 2103 -2103 2104 2105 -1250 2106 2107 -2107 2108 2222 -2109 2110 2111 -2111 2112 1724 -2226 2113 2114 -1758 2115 2116 -2116 2117 201 -1973 4 2118 -2118 2119 1281 -2120 1760 1365 -1287 2110 2121 -2121 2122 90 -1229 1379 2123 -2123 2124 1368 -2170 2125 2126 -2126 2127 695 -2128 2120 1046 -1478 2129 2130 -2130 2131 1267 -1986 2132 2133 -2133 2134 2204 -1820 1736 2135 -2135 2136 2137 -2044 2138 2139 -2139 57 1805 -2140 2132 2141 -2141 2142 1406 -2125 2143 2144 -2144 2145 2146 -2147 1597 2148 -2148 2149 1811 -2150 2151 2152 -2152 2153 1343 -1455 327 2154 -2154 2155 68 -2150 2156 2157 -2157 1904 176 -2131 2158 2159 -2159 294 325 -2160 2161 2162 -2162 2163 1834 -1774 2164 2165 -2165 2166 1280 -2167 2168 2169 -2169 2170 884 -1907 2171 2172 -2172 2173 1718 -2174 2175 2176 -2176 1985 2093 -1754 2177 2178 -2178 2179 1970 -2180 2181 2182 -2182 2183 1934 -2215 2184 2185 -2185 2186 1222 -2187 2188 2227 -2203 2189 2190 -2190 2243 1988 -2212 2191 2192 -2192 375 1555 -1984 1094 2193 -2193 2194 2195 -2020 885 2196 -2196 2197 2198 -2202 2040 2199 -1410 2200 2201 -2201 2202 2006 -2203 2204 2205 -2205 2206 2031 -358 1484 2207 -2207 2208 2209 -2053 2210 2211 -2211 1162 1710 -2212 2213 2214 -2214 2215 1298 -2216 2220 2217 -2217 2218 1253 -2219 2220 2221 -2221 2222 1223 -1725 2223 2224 -2224 2225 2226 -2142 2227 2228 -2228 2229 2230 -2231 2232 1911 -2252 2233 2234 -1657 2235 2236 -2236 1702 2128 -2189 2237 2238 -2238 2239 2240 -2199 2241 2242 -2242 2243 2240 -2244 2245 2246 -2246 2247 1337 -2248 2249 2250 -2250 2219 1299 -2251 2252 2253 -2253 1107 2231 diff --git a/SkeinPyPy_NewUI/models/box.obj b/SkeinPyPy_NewUI/models/box.obj deleted file mode 100644 index 1e1c785401..0000000000 --- a/SkeinPyPy_NewUI/models/box.obj +++ /dev/null @@ -1,79 +0,0 @@ -# ----------------- -# Start of obj file -g Box01 -mtllib box.mat -usemtl box -v -62.0579 -41.4791 0.0 -v 58.8424 -41.4791 0.0 -v -62.0579 22.1865 0.0 -v 58.8424 22.1865 0.0 -v -62.0579 -41.4791 39.8714 -v 58.8424 -41.4791 39.8714 -v -62.0579 22.1865 39.8714 -v 58.8424 22.1865 39.8714 - -vt 0.843206 0.405444 0.000499517 -vt 0.482802 0.71377 0.9995 -vt 0.478066 0.404023 0.000499636 -vt 0.482802 0.716612 0.9995 -vt 0.841627 0.688332 0.000499517 -vt 0.482013 0.981029 0.9995 -vt 0.480434 0.688332 0.000499636 -vt 0.485959 0.978188 0.9995 -vt 0.450102 0.00618343 0.000499547 -vt 0.45247 0.509304 0.000499547 -vt 0.000499517 0.512146 0.000499547 -vt 0.000499517 0.512146 0.000499547 -vt -0.0010791 0.00618302 0.000499547 -vt 0.450102 0.00618343 0.000499547 -vt 0.000499517 0.512009 0.9995 -vt 0.450891 0.510588 0.9995 -vt 0.45247 0.995237 0.9995 -vt 0.45247 0.996658 0.9995 -vt 0.000499636 0.9995 0.9995 -vt 0.000499517 0.51343 0.9995 -vt 0.478855 0.405444 0.000500023 -vt 0.841627 0.408286 0.000499576 -vt 0.83847 0.688332 0.000499576 -vt 0.83847 0.688332 0.000499576 -vt 0.477276 0.694016 0.000500023 -vt 0.478855 0.405444 0.000500023 -vt 0.482802 0.71377 0.9995 -vt 0.845574 0.71377 0.999501 -vt 0.844784 0.976767 0.999501 -vt 0.844784 0.976767 0.999501 -vt 0.482802 0.716612 0.9995 -vt 0.842417 0.710929 0.9995 -vt 0.843995 0.975346 0.9995 -vt 0.843995 0.975346 0.9995 -vt 0.478066 0.404023 0.000499636 -vt 0.841627 0.688332 0.000499517 - -vn 0.0 0.0 -1.0 -vn 0.0 0.0 -1.0 -vn 0.0 0.0 1.0 -vn 0.0 0.0 1.0 -vn 0.0 -1.0 0.0 -vn 0.0 -1.0 0.0 -vn 1.0 0.0 0.0 -vn 1.0 0.0 0.0 -vn 0.0 1.0 0.0 -vn 0.0 1.0 0.0 -vn -1.0 0.0 0.0 -vn -1.0 0.0 0.0 - -f 1/9/1 3/10/1 4/11/1 -f 4/12/2 2/13/2 1/14/2 -f 5/15/3 6/16/3 8/17/3 -f 8/18/4 7/19/4 5/20/4 -f 1/21/5 2/22/5 6/23/5 -f 6/24/6 5/25/6 1/26/6 -f 2/27/7 4/28/7 8/29/7 -f 8/30/8 6/6/8 2/2/8 -f 4/31/9 3/32/9 7/33/9 -f 7/34/10 8/8/10 4/4/10 -f 3/35/11 1/1/11 5/36/11 -f 5/5/12 7/7/12 3/3/12 - -# end of obj file -# --------------- diff --git a/SkeinPyPy_NewUI/models/inkscape_star.svg b/SkeinPyPy_NewUI/models/inkscape_star.svg deleted file mode 100644 index 8d994492b5..0000000000 --- a/SkeinPyPy_NewUI/models/inkscape_star.svg +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/SkeinPyPy_NewUI/profiles/CupDeJoris.ini b/SkeinPyPy_NewUI/profiles/CupDeJoris.ini new file mode 100644 index 0000000000..d0e7c1f3a8 --- /dev/null +++ b/SkeinPyPy_NewUI/profiles/CupDeJoris.ini @@ -0,0 +1,40 @@ +[profile] +max_z_speed = 1.0 +sequence = Infill > Loops > Perimeter +nozzle_size = 0.4 +machine_center_x = 100 +machine_center_y = 100 +flip_z = False +flip_x = False +cool_min_layer_time = 10 +infill_type = Line +skirt_line_count = 3 +retraction_amount = 0.0 +travel_speed = 150 +model_rotate_base = 0 +support_rate = 100 +wall_thickness = 0.4 +print_temperature = 0 +skirt_gap = 6.0 +support = None +bottom_layer_speed = 25 +filament_density = 1.00 +joris = True +model_multiply_y = 1 +model_multiply_x = 1 +support_distance = 0.5 +fill_density = 0 +filament_diameter = 2.89 +print_speed = 50 +fill_overlap = 15 +retraction_min_travel = 5.0 +solid_top = False +retraction_speed = 13.5 +extra_base_wall_thickness = 15 +flip_y = False +solid_layer_thickness = 0.6 +model_scale = 1.0 +retraction_extra = 0.0 +force_first_layer_sequence = False +layer_height = 0.2 + From f9940a31730e3d8906a3e9bca39bffacfdd9ac48 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 15:15:08 +0100 Subject: [PATCH 24/31] Don't hate me, but I renamed the sources directory. --- {SkeinPyPy_NewUI => SkeinPyPy}/SkeinforgeVersion | 0 {SkeinPyPy_NewUI => SkeinPyPy}/__init__.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/__init__.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/chipDB.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/intelHex.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/ispBase.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/stk500v2.py | 0 .../fabmetheus_utilities/__init__.py | 0 .../fabmetheus_utilities/archive.py | 0 .../fabmetheus_utilities/euclidean.py | 0 .../fabmetheus_tools/__init__.py | 0 .../fabmetheus_tools/alphabetize.py | 0 .../fabmetheus_tools/fabmetheus_interpret.py | 0 .../fabmetheus_tools/interpret_plugins/__init__.py | 0 .../fabmetheus_tools/interpret_plugins/csv.py | 0 .../fabmetheus_tools/interpret_plugins/gts.py | 0 .../fabmetheus_tools/interpret_plugins/obj.py | 0 .../fabmetheus_tools/interpret_plugins/slc.py | 0 .../fabmetheus_tools/interpret_plugins/stl.py | 0 .../fabmetheus_tools/interpret_plugins/svg.py | 0 .../fabmetheus_tools/prepare.py | 0 .../fabmetheus_tools/wikifier.py | 0 .../fonts/gentium_basic_regular.svg | 0 .../fabmetheus_utilities/gcodec.py | 0 .../fabmetheus_utilities/geometry/__init__.py | 0 .../geometry/creation/__init__.py | 0 .../geometry/creation/_drill.py | 0 .../fabmetheus_utilities/geometry/creation/_svg.py | 0 .../geometry/creation/circle.py | 0 .../geometry/creation/concatenate.py | 0 .../geometry/creation/extrude.py | 0 .../fabmetheus_utilities/geometry/creation/gear.py | 0 .../fabmetheus_utilities/geometry/creation/grid.py | 0 .../geometry/creation/heightmap.py | 0 .../fabmetheus_utilities/geometry/creation/lathe.py | 0 .../fabmetheus_utilities/geometry/creation/line.py | 0 .../geometry/creation/linear_bearing_cage.py | 0 .../geometry/creation/lineation.py | 0 .../geometry/creation/mechaslab.py | 0 .../fabmetheus_utilities/geometry/creation/peg.py | 0 .../geometry/creation/polygon.py | 0 .../fabmetheus_utilities/geometry/creation/shaft.py | 0 .../fabmetheus_utilities/geometry/creation/solid.py | 0 .../geometry/creation/sponge_slice.py | 0 .../geometry/creation/square.py | 0 .../geometry/creation/teardrop.py | 0 .../fabmetheus_utilities/geometry/creation/text.py | 0 .../geometry/geometry_tools/__init__.py | 0 .../geometry/geometry_tools/dictionary.py | 0 .../geometry/geometry_tools/face.py | 0 .../geometry/geometry_tools/path.py | 0 .../geometry_tools/path_elements/__init__.py | 0 .../geometry/geometry_tools/path_elements/arc.py | 0 .../geometry/geometry_tools/path_elements/cubic.py | 0 .../geometry_tools/path_elements/quadratic.py | 0 .../geometry/geometry_tools/vertex.py | 0 .../geometry/geometry_utilities/__init__.py | 0 .../geometry/geometry_utilities/boolean_geometry.py | 0 .../geometry/geometry_utilities/boolean_solid.py | 0 .../geometry/geometry_utilities/evaluate.py | 0 .../evaluate_elements/__init__.py | 0 .../evaluate_elements/creation.py | 0 .../evaluate_elements/document.py | 0 .../geometry_utilities/evaluate_elements/setting.py | 0 .../evaluate_enumerables/__init__.py | 0 .../evaluate_enumerables/dictionary_attribute.py | 0 .../evaluate_enumerables/list_attribute.py | 0 .../evaluate_enumerables/string_attribute.py | 0 .../evaluate_fundamentals/__init__.py | 0 .../evaluate_fundamentals/_math.py | 0 .../evaluate_fundamentals/euclid.py | 0 .../evaluate_fundamentals/measure.py | 0 .../evaluate_fundamentals/print.py | 0 .../geometry/geometry_utilities/example.csv | 0 .../geometry/geometry_utilities/matrix.py | 0 .../geometry/manipulation_matrix/__init__.py | 0 .../geometry/manipulation_matrix/_scale.py | 0 .../geometry/manipulation_matrix/rotate.py | 0 .../geometry/manipulation_matrix/transform.py | 0 .../geometry/manipulation_matrix/translate.py | 0 .../geometry/manipulation_meta/__init__.py | 0 .../geometry/manipulation_meta/_array.py | 0 .../geometry/manipulation_meta/_carve.py | 0 .../geometry/manipulation_meta/_copy.py | 0 .../geometry/manipulation_meta/disjoin.py | 0 .../geometry/manipulation_meta/import.py | 0 .../geometry/manipulation_meta/write.py | 0 .../geometry/manipulation_paths/__init__.py | 0 .../geometry/manipulation_paths/bevel.py | 0 .../geometry/manipulation_paths/convex.py | 0 .../geometry/manipulation_paths/outline.py | 0 .../geometry/manipulation_paths/overhang.py | 0 .../geometry/manipulation_paths/round.py | 0 .../geometry/manipulation_paths/segment.py | 0 .../geometry/manipulation_paths/wedge.py | 0 .../geometry/manipulation_shapes/__init__.py | 0 .../geometry/manipulation_shapes/_bottom.py | 0 .../geometry/manipulation_shapes/_inset.py | 0 .../geometry/manipulation_shapes/_outset.py | 0 .../geometry/manipulation_shapes/equation.py | 0 .../geometry/manipulation_shapes/flip.py | 0 .../geometry/manipulation_shapes/mirror.py | 0 .../geometry/solids/__init__.py | 0 .../fabmetheus_utilities/geometry/solids/cube.py | 0 .../geometry/solids/cylinder.py | 0 .../geometry/solids/difference.py | 0 .../fabmetheus_utilities/geometry/solids/group.py | 0 .../geometry/solids/intersection.py | 0 .../fabmetheus_utilities/geometry/solids/sphere.py | 0 .../geometry/solids/triangle_mesh.py | 0 .../fabmetheus_utilities/geometry/solids/union.py | 0 .../geometry/statements/__init__.py | 0 .../geometry/statements/_print.py | 0 .../geometry/statements/class.py | 0 .../geometry/statements/elif.py | 0 .../geometry/statements/else.py | 0 .../fabmetheus_utilities/geometry/statements/for.py | 0 .../geometry/statements/function.py | 0 .../fabmetheus_utilities/geometry/statements/if.py | 0 .../geometry/statements/return.py | 0 .../geometry/statements/statement.py | 0 .../geometry/statements/while.py | 0 .../geometry_plugins/__init__.py | 0 .../geometry_plugins/creation/__init__.py | 0 .../manipulation_matrix/__init__.py | 0 .../geometry_plugins/manipulation_meta/__init__.py | 0 .../geometry_plugins/manipulation_paths/__init__.py | 0 .../manipulation_shapes/__init__.py | 0 .../fabmetheus_utilities/images/display_line.ppm | 0 .../fabmetheus_utilities/images/dive.ppm | 0 .../fabmetheus_utilities/images/soar.ppm | 0 .../fabmetheus_utilities/images/stop.ppm | 0 .../fabmetheus_utilities/images/view_move.ppm | Bin .../fabmetheus_utilities/images/view_rotate.ppm | Bin .../fabmetheus_utilities/images/zoom_in.ppm | 0 .../fabmetheus_utilities/images/zoom_out.ppm | 0 .../fabmetheus_utilities/intercircle.py | 0 .../fabmetheus_utilities/settings.py | 0 .../fabmetheus_utilities/svg_reader.py | 0 .../fabmetheus_utilities/svg_writer.py | 0 .../templates/canvas_template.svg | 0 .../templates/layer_template.svg | 0 .../fabmetheus_utilities/vector3.py | 0 .../fabmetheus_utilities/vector3index.py | 0 .../fabmetheus_utilities/version.txt | 0 .../fabmetheus_utilities/xml_simple_reader.py | 0 .../fabmetheus_utilities/xml_simple_writer.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/firmware/default.h | 0 {SkeinPyPy_NewUI => SkeinPyPy}/firmware/default.hex | 0 {SkeinPyPy_NewUI => SkeinPyPy}/newui/__init__.py | 0 .../newui/advancedConfig.py | 0 .../newui/alterationPanel.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/newui/configBase.py | 0 .../newui/configWizard.py | 0 .../newui/gcodeInterpreter.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/newui/machineCom.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/newui/mainWindow.py | 0 .../newui/preferencesDialog.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/newui/preview3d.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/newui/skeinRun.py | 0 .../newui/sliceProgessPanel.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/newui/util3d.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/newui/validators.py | 0 .../profiles/CupDeJoris.ini | 0 .../skeinforge_application/__init__.py | 0 .../skeinforge_application/alterations/end.gcode | 0 .../alterations/example_cool_end.gcode | 0 .../alterations/example_cool_start.gcode | 0 .../alterations/example_end.gcode | 0 .../alterations/example_home.gcode | 0 .../alterations/example_replace.csv | 0 .../alterations/example_replace_M108.csv | 0 .../alterations/example_start.gcode | 0 .../alterations/example_support_end.gcode | 0 .../alterations/example_support_start.gcode | 0 .../skeinforge_application/alterations/start.gcode | 0 .../skeinforge_plugins/__init__.py | 0 .../skeinforge_plugins/analyze.py | 0 .../skeinforge_plugins/analyze_plugins/__init__.py | 0 .../skeinforge_plugins/craft.py | 0 .../skeinforge_plugins/craft_plugins/__init__.py | 0 .../skeinforge_plugins/craft_plugins/alteration.py | 0 .../skeinforge_plugins/craft_plugins/bottom.py | 0 .../skeinforge_plugins/craft_plugins/carve.py | 0 .../skeinforge_plugins/craft_plugins/chamber.py | 0 .../skeinforge_plugins/craft_plugins/chop.py | 0 .../skeinforge_plugins/craft_plugins/cleave.py | 0 .../skeinforge_plugins/craft_plugins/clip.py | 0 .../skeinforge_plugins/craft_plugins/coil.py | 0 .../skeinforge_plugins/craft_plugins/comb.py | 0 .../skeinforge_plugins/craft_plugins/cool.py | 0 .../skeinforge_plugins/craft_plugins/dimension.py | 0 .../skeinforge_plugins/craft_plugins/drill.py | 0 .../skeinforge_plugins/craft_plugins/dwindle.py | 0 .../skeinforge_plugins/craft_plugins/export.py | 0 .../craft_plugins/export_plugins/__init__.py | 0 .../craft_plugins/export_plugins/binary_16_byte.py | 0 .../craft_plugins/export_plugins/gcode_step.py | 0 .../export_plugins/gcode_time_segment.py | 0 .../export_plugins/static_plugins/__init__.py | 0 .../export_plugins/static_plugins/gcode_small.py | 0 .../skeinforge_plugins/craft_plugins/feed.py | 0 .../skeinforge_plugins/craft_plugins/fill.py | 0 .../skeinforge_plugins/craft_plugins/fillet.py | 0 .../skeinforge_plugins/craft_plugins/flow.py | 0 .../skeinforge_plugins/craft_plugins/home.py | 0 .../skeinforge_plugins/craft_plugins/hop.py | 0 .../skeinforge_plugins/craft_plugins/inset.py | 0 .../skeinforge_plugins/craft_plugins/jitter.py | 0 .../skeinforge_plugins/craft_plugins/joris.py | 0 .../skeinforge_plugins/craft_plugins/lash.py | 0 .../skeinforge_plugins/craft_plugins/lift.py | 0 .../skeinforge_plugins/craft_plugins/limit.py | 0 .../skeinforge_plugins/craft_plugins/mill.py | 0 .../skeinforge_plugins/craft_plugins/multiply.py | 0 .../skeinforge_plugins/craft_plugins/oozebane.py | 0 .../skeinforge_plugins/craft_plugins/outset.py | 0 .../skeinforge_plugins/craft_plugins/preface.py | 0 .../skeinforge_plugins/craft_plugins/raft.py | 0 .../skeinforge_plugins/craft_plugins/scale.py | 0 .../skeinforge_plugins/craft_plugins/skin.py | 0 .../skeinforge_plugins/craft_plugins/skirt.py | 0 .../skeinforge_plugins/craft_plugins/smooth.py | 0 .../skeinforge_plugins/craft_plugins/speed.py | 0 .../skeinforge_plugins/craft_plugins/splodge.py | 0 .../skeinforge_plugins/craft_plugins/stretch.py | 0 .../skeinforge_plugins/craft_plugins/temperature.py | 0 .../skeinforge_plugins/craft_plugins/tower.py | 0 .../skeinforge_plugins/craft_plugins/unpause.py | 0 .../skeinforge_plugins/craft_plugins/whittle.py | 0 .../skeinforge_plugins/craft_plugins/widen.py | 0 .../skeinforge_plugins/craft_plugins/wipe.py | 0 .../skeinforge_plugins/help.py | 0 .../skeinforge_plugins/meta.py | 0 .../skeinforge_plugins/meta_plugins/__init__.py | 0 .../skeinforge_plugins/meta_plugins/description.py | 0 .../skeinforge_plugins/meta_plugins/polyfile.py | 0 .../skeinforge_plugins/profile.py | 0 .../skeinforge_plugins/profile_plugins/__init__.py | 0 .../skeinforge_plugins/profile_plugins/cutting.py | 0 .../skeinforge_plugins/profile_plugins/extrusion.py | 0 .../skeinforge_plugins/profile_plugins/milling.py | 0 .../skeinforge_plugins/profile_plugins/winding.py | 0 .../skeinforge_utilities/__init__.py | 0 .../skeinforge_utilities/skeinforge_analyze.py | 0 .../skeinforge_utilities/skeinforge_craft.py | 0 .../skeinforge_utilities/skeinforge_help.py | 0 .../skeinforge_utilities/skeinforge_meta.py | 0 .../skeinforge_utilities/skeinforge_polyfile.py | 0 .../skeinforge_utilities/skeinforge_profile.py | 0 {SkeinPyPy_NewUI => SkeinPyPy}/skeinpypy.py | 0 package.sh | 4 ++-- 252 files changed, 2 insertions(+), 2 deletions(-) rename {SkeinPyPy_NewUI => SkeinPyPy}/SkeinforgeVersion (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/chipDB.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/intelHex.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/ispBase.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/avr_isp/stk500v2.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/archive.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/euclidean.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/alphabetize.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/prepare.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fabmetheus_tools/wikifier.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/fonts/gentium_basic_regular.svg (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/gcodec.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/_drill.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/_svg.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/circle.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/concatenate.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/extrude.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/gear.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/grid.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/heightmap.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/lathe.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/line.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/lineation.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/mechaslab.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/peg.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/polygon.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/shaft.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/solid.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/sponge_slice.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/square.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/teardrop.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/creation/text.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/dictionary.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/face.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/path.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_tools/vertex.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/example.csv (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/geometry_utilities/matrix.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_matrix/transform.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_matrix/translate.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_meta/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_meta/_array.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_meta/_carve.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_meta/_copy.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_meta/import.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_meta/write.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_paths/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_paths/bevel.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_paths/convex.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_paths/outline.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_paths/overhang.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_paths/round.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_paths/segment.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_paths/wedge.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_shapes/equation.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_shapes/flip.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/cube.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/cylinder.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/difference.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/group.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/intersection.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/sphere.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/triangle_mesh.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/solids/union.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/_print.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/class.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/elif.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/else.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/for.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/function.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/if.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/return.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/statement.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry/statements/while.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry_plugins/creation/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/images/display_line.ppm (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/images/dive.ppm (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/images/soar.ppm (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/images/stop.ppm (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/images/view_move.ppm (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/images/view_rotate.ppm (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/images/zoom_in.ppm (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/images/zoom_out.ppm (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/intercircle.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/settings.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/svg_reader.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/svg_writer.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/templates/canvas_template.svg (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/templates/layer_template.svg (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/vector3.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/vector3index.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/version.txt (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/xml_simple_reader.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/fabmetheus_utilities/xml_simple_writer.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/firmware/default.h (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/firmware/default.hex (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/advancedConfig.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/alterationPanel.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/configBase.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/configWizard.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/gcodeInterpreter.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/machineCom.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/mainWindow.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/preferencesDialog.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/preview3d.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/skeinRun.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/sliceProgessPanel.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/util3d.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/newui/validators.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/profiles/CupDeJoris.ini (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/end.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_cool_end.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_cool_start.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_end.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_home.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_replace.csv (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_replace_M108.csv (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_start.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_support_end.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/example_support_start.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/alterations/start.gcode (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/analyze.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/export.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/home.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/help.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/meta.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/meta_plugins/description.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/profile.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_utilities/__init__.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_utilities/skeinforge_craft.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_utilities/skeinforge_help.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_utilities/skeinforge_meta.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinforge_application/skeinforge_utilities/skeinforge_profile.py (100%) rename {SkeinPyPy_NewUI => SkeinPyPy}/skeinpypy.py (100%) diff --git a/SkeinPyPy_NewUI/SkeinforgeVersion b/SkeinPyPy/SkeinforgeVersion similarity index 100% rename from SkeinPyPy_NewUI/SkeinforgeVersion rename to SkeinPyPy/SkeinforgeVersion diff --git a/SkeinPyPy_NewUI/__init__.py b/SkeinPyPy/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/__init__.py rename to SkeinPyPy/__init__.py diff --git a/SkeinPyPy_NewUI/avr_isp/__init__.py b/SkeinPyPy/avr_isp/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/avr_isp/__init__.py rename to SkeinPyPy/avr_isp/__init__.py diff --git a/SkeinPyPy_NewUI/avr_isp/chipDB.py b/SkeinPyPy/avr_isp/chipDB.py similarity index 100% rename from SkeinPyPy_NewUI/avr_isp/chipDB.py rename to SkeinPyPy/avr_isp/chipDB.py diff --git a/SkeinPyPy_NewUI/avr_isp/intelHex.py b/SkeinPyPy/avr_isp/intelHex.py similarity index 100% rename from SkeinPyPy_NewUI/avr_isp/intelHex.py rename to SkeinPyPy/avr_isp/intelHex.py diff --git a/SkeinPyPy_NewUI/avr_isp/ispBase.py b/SkeinPyPy/avr_isp/ispBase.py similarity index 100% rename from SkeinPyPy_NewUI/avr_isp/ispBase.py rename to SkeinPyPy/avr_isp/ispBase.py diff --git a/SkeinPyPy_NewUI/avr_isp/stk500v2.py b/SkeinPyPy/avr_isp/stk500v2.py similarity index 100% rename from SkeinPyPy_NewUI/avr_isp/stk500v2.py rename to SkeinPyPy/avr_isp/stk500v2.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/__init__.py b/SkeinPyPy/fabmetheus_utilities/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/__init__.py rename to SkeinPyPy/fabmetheus_utilities/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/archive.py b/SkeinPyPy/fabmetheus_utilities/archive.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/archive.py rename to SkeinPyPy/fabmetheus_utilities/archive.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/euclidean.py b/SkeinPyPy/fabmetheus_utilities/euclidean.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/euclidean.py rename to SkeinPyPy/fabmetheus_utilities/euclidean.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/__init__.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/__init__.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/alphabetize.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/alphabetize.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/alphabetize.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/alphabetize.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/prepare.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/prepare.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/prepare.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/prepare.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/wikifier.py b/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/wikifier.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fabmetheus_tools/wikifier.py rename to SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/wikifier.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/fonts/gentium_basic_regular.svg b/SkeinPyPy/fabmetheus_utilities/fonts/gentium_basic_regular.svg similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/fonts/gentium_basic_regular.svg rename to SkeinPyPy/fabmetheus_utilities/fonts/gentium_basic_regular.svg diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/gcodec.py b/SkeinPyPy/fabmetheus_utilities/gcodec.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/gcodec.py rename to SkeinPyPy/fabmetheus_utilities/gcodec.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/_drill.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/_drill.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/_drill.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/_drill.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/_svg.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/_svg.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/_svg.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/_svg.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/circle.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/circle.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/circle.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/circle.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/concatenate.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/concatenate.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/concatenate.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/concatenate.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/extrude.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/extrude.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/extrude.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/extrude.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/gear.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/gear.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/gear.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/gear.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/grid.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/grid.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/grid.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/grid.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/heightmap.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/heightmap.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/heightmap.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/heightmap.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/lathe.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/lathe.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/lathe.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/lathe.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/line.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/line.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/line.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/line.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/lineation.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/lineation.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/lineation.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/lineation.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/mechaslab.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/mechaslab.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/mechaslab.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/mechaslab.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/peg.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/peg.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/peg.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/peg.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/polygon.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/polygon.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/polygon.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/polygon.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/shaft.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/shaft.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/shaft.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/shaft.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/solid.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/solid.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/solid.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/solid.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/sponge_slice.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/sponge_slice.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/sponge_slice.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/sponge_slice.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/square.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/square.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/square.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/square.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/teardrop.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/teardrop.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/teardrop.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/teardrop.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/text.py b/SkeinPyPy/fabmetheus_utilities/geometry/creation/text.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/creation/text.py rename to SkeinPyPy/fabmetheus_utilities/geometry/creation/text.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/dictionary.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/dictionary.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/dictionary.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/dictionary.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/face.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/face.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/face.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/face.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/vertex.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/vertex.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_tools/vertex.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/vertex.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/example.csv b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/example.csv similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/example.csv rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/example.csv diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/matrix.py b/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/matrix.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/geometry_utilities/matrix.py rename to SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/matrix.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/transform.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/transform.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/transform.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/transform.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/translate.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/translate.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_matrix/translate.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/translate.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/_array.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_array.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/_array.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_array.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/_carve.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_carve.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/_carve.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_carve.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/_copy.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_copy.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/_copy.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_copy.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/import.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/import.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/import.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/import.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/write.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/write.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_meta/write.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/write.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/bevel.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/bevel.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/bevel.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/bevel.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/convex.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/convex.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/convex.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/convex.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/outline.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/outline.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/outline.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/outline.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/overhang.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/overhang.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/overhang.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/overhang.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/round.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/round.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/round.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/round.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/segment.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/segment.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/segment.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/segment.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/wedge.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/wedge.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_paths/wedge.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/wedge.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/equation.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/equation.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/equation.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/equation.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/flip.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/flip.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/flip.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/flip.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py b/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py rename to SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/cube.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/cube.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/cube.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/cube.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/cylinder.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/cylinder.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/cylinder.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/cylinder.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/difference.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/difference.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/difference.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/difference.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/group.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/group.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/group.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/group.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/intersection.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/intersection.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/intersection.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/intersection.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/sphere.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/sphere.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/sphere.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/sphere.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/triangle_mesh.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/triangle_mesh.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/triangle_mesh.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/union.py b/SkeinPyPy/fabmetheus_utilities/geometry/solids/union.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/solids/union.py rename to SkeinPyPy/fabmetheus_utilities/geometry/solids/union.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/_print.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/_print.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/_print.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/_print.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/class.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/class.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/class.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/class.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/elif.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/elif.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/elif.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/elif.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/else.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/else.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/else.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/else.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/for.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/for.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/for.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/for.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/function.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/function.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/function.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/function.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/if.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/if.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/if.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/if.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/return.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/return.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/return.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/return.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/statement.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/statement.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/statement.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/statement.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/while.py b/SkeinPyPy/fabmetheus_utilities/geometry/statements/while.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry/statements/while.py rename to SkeinPyPy/fabmetheus_utilities/geometry/statements/while.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/creation/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry_plugins/creation/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/creation/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry_plugins/creation/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py b/SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py rename to SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/images/display_line.ppm b/SkeinPyPy/fabmetheus_utilities/images/display_line.ppm similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/images/display_line.ppm rename to SkeinPyPy/fabmetheus_utilities/images/display_line.ppm diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/images/dive.ppm b/SkeinPyPy/fabmetheus_utilities/images/dive.ppm similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/images/dive.ppm rename to SkeinPyPy/fabmetheus_utilities/images/dive.ppm diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/images/soar.ppm b/SkeinPyPy/fabmetheus_utilities/images/soar.ppm similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/images/soar.ppm rename to SkeinPyPy/fabmetheus_utilities/images/soar.ppm diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/images/stop.ppm b/SkeinPyPy/fabmetheus_utilities/images/stop.ppm similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/images/stop.ppm rename to SkeinPyPy/fabmetheus_utilities/images/stop.ppm diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/images/view_move.ppm b/SkeinPyPy/fabmetheus_utilities/images/view_move.ppm similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/images/view_move.ppm rename to SkeinPyPy/fabmetheus_utilities/images/view_move.ppm diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/images/view_rotate.ppm b/SkeinPyPy/fabmetheus_utilities/images/view_rotate.ppm similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/images/view_rotate.ppm rename to SkeinPyPy/fabmetheus_utilities/images/view_rotate.ppm diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/images/zoom_in.ppm b/SkeinPyPy/fabmetheus_utilities/images/zoom_in.ppm similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/images/zoom_in.ppm rename to SkeinPyPy/fabmetheus_utilities/images/zoom_in.ppm diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/images/zoom_out.ppm b/SkeinPyPy/fabmetheus_utilities/images/zoom_out.ppm similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/images/zoom_out.ppm rename to SkeinPyPy/fabmetheus_utilities/images/zoom_out.ppm diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/intercircle.py b/SkeinPyPy/fabmetheus_utilities/intercircle.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/intercircle.py rename to SkeinPyPy/fabmetheus_utilities/intercircle.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/settings.py b/SkeinPyPy/fabmetheus_utilities/settings.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/settings.py rename to SkeinPyPy/fabmetheus_utilities/settings.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/svg_reader.py b/SkeinPyPy/fabmetheus_utilities/svg_reader.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/svg_reader.py rename to SkeinPyPy/fabmetheus_utilities/svg_reader.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/svg_writer.py b/SkeinPyPy/fabmetheus_utilities/svg_writer.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/svg_writer.py rename to SkeinPyPy/fabmetheus_utilities/svg_writer.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/templates/canvas_template.svg b/SkeinPyPy/fabmetheus_utilities/templates/canvas_template.svg similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/templates/canvas_template.svg rename to SkeinPyPy/fabmetheus_utilities/templates/canvas_template.svg diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/templates/layer_template.svg b/SkeinPyPy/fabmetheus_utilities/templates/layer_template.svg similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/templates/layer_template.svg rename to SkeinPyPy/fabmetheus_utilities/templates/layer_template.svg diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/vector3.py b/SkeinPyPy/fabmetheus_utilities/vector3.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/vector3.py rename to SkeinPyPy/fabmetheus_utilities/vector3.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/vector3index.py b/SkeinPyPy/fabmetheus_utilities/vector3index.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/vector3index.py rename to SkeinPyPy/fabmetheus_utilities/vector3index.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/version.txt b/SkeinPyPy/fabmetheus_utilities/version.txt similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/version.txt rename to SkeinPyPy/fabmetheus_utilities/version.txt diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/xml_simple_reader.py b/SkeinPyPy/fabmetheus_utilities/xml_simple_reader.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/xml_simple_reader.py rename to SkeinPyPy/fabmetheus_utilities/xml_simple_reader.py diff --git a/SkeinPyPy_NewUI/fabmetheus_utilities/xml_simple_writer.py b/SkeinPyPy/fabmetheus_utilities/xml_simple_writer.py similarity index 100% rename from SkeinPyPy_NewUI/fabmetheus_utilities/xml_simple_writer.py rename to SkeinPyPy/fabmetheus_utilities/xml_simple_writer.py diff --git a/SkeinPyPy_NewUI/firmware/default.h b/SkeinPyPy/firmware/default.h similarity index 100% rename from SkeinPyPy_NewUI/firmware/default.h rename to SkeinPyPy/firmware/default.h diff --git a/SkeinPyPy_NewUI/firmware/default.hex b/SkeinPyPy/firmware/default.hex similarity index 100% rename from SkeinPyPy_NewUI/firmware/default.hex rename to SkeinPyPy/firmware/default.hex diff --git a/SkeinPyPy_NewUI/newui/__init__.py b/SkeinPyPy/newui/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/newui/__init__.py rename to SkeinPyPy/newui/__init__.py diff --git a/SkeinPyPy_NewUI/newui/advancedConfig.py b/SkeinPyPy/newui/advancedConfig.py similarity index 100% rename from SkeinPyPy_NewUI/newui/advancedConfig.py rename to SkeinPyPy/newui/advancedConfig.py diff --git a/SkeinPyPy_NewUI/newui/alterationPanel.py b/SkeinPyPy/newui/alterationPanel.py similarity index 100% rename from SkeinPyPy_NewUI/newui/alterationPanel.py rename to SkeinPyPy/newui/alterationPanel.py diff --git a/SkeinPyPy_NewUI/newui/configBase.py b/SkeinPyPy/newui/configBase.py similarity index 100% rename from SkeinPyPy_NewUI/newui/configBase.py rename to SkeinPyPy/newui/configBase.py diff --git a/SkeinPyPy_NewUI/newui/configWizard.py b/SkeinPyPy/newui/configWizard.py similarity index 100% rename from SkeinPyPy_NewUI/newui/configWizard.py rename to SkeinPyPy/newui/configWizard.py diff --git a/SkeinPyPy_NewUI/newui/gcodeInterpreter.py b/SkeinPyPy/newui/gcodeInterpreter.py similarity index 100% rename from SkeinPyPy_NewUI/newui/gcodeInterpreter.py rename to SkeinPyPy/newui/gcodeInterpreter.py diff --git a/SkeinPyPy_NewUI/newui/machineCom.py b/SkeinPyPy/newui/machineCom.py similarity index 100% rename from SkeinPyPy_NewUI/newui/machineCom.py rename to SkeinPyPy/newui/machineCom.py diff --git a/SkeinPyPy_NewUI/newui/mainWindow.py b/SkeinPyPy/newui/mainWindow.py similarity index 100% rename from SkeinPyPy_NewUI/newui/mainWindow.py rename to SkeinPyPy/newui/mainWindow.py diff --git a/SkeinPyPy_NewUI/newui/preferencesDialog.py b/SkeinPyPy/newui/preferencesDialog.py similarity index 100% rename from SkeinPyPy_NewUI/newui/preferencesDialog.py rename to SkeinPyPy/newui/preferencesDialog.py diff --git a/SkeinPyPy_NewUI/newui/preview3d.py b/SkeinPyPy/newui/preview3d.py similarity index 100% rename from SkeinPyPy_NewUI/newui/preview3d.py rename to SkeinPyPy/newui/preview3d.py diff --git a/SkeinPyPy_NewUI/newui/skeinRun.py b/SkeinPyPy/newui/skeinRun.py similarity index 100% rename from SkeinPyPy_NewUI/newui/skeinRun.py rename to SkeinPyPy/newui/skeinRun.py diff --git a/SkeinPyPy_NewUI/newui/sliceProgessPanel.py b/SkeinPyPy/newui/sliceProgessPanel.py similarity index 100% rename from SkeinPyPy_NewUI/newui/sliceProgessPanel.py rename to SkeinPyPy/newui/sliceProgessPanel.py diff --git a/SkeinPyPy_NewUI/newui/util3d.py b/SkeinPyPy/newui/util3d.py similarity index 100% rename from SkeinPyPy_NewUI/newui/util3d.py rename to SkeinPyPy/newui/util3d.py diff --git a/SkeinPyPy_NewUI/newui/validators.py b/SkeinPyPy/newui/validators.py similarity index 100% rename from SkeinPyPy_NewUI/newui/validators.py rename to SkeinPyPy/newui/validators.py diff --git a/SkeinPyPy_NewUI/profiles/CupDeJoris.ini b/SkeinPyPy/profiles/CupDeJoris.ini similarity index 100% rename from SkeinPyPy_NewUI/profiles/CupDeJoris.ini rename to SkeinPyPy/profiles/CupDeJoris.ini diff --git a/SkeinPyPy_NewUI/skeinforge_application/__init__.py b/SkeinPyPy/skeinforge_application/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/__init__.py rename to SkeinPyPy/skeinforge_application/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/end.gcode b/SkeinPyPy/skeinforge_application/alterations/end.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/end.gcode rename to SkeinPyPy/skeinforge_application/alterations/end.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_cool_end.gcode b/SkeinPyPy/skeinforge_application/alterations/example_cool_end.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_cool_end.gcode rename to SkeinPyPy/skeinforge_application/alterations/example_cool_end.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_cool_start.gcode b/SkeinPyPy/skeinforge_application/alterations/example_cool_start.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_cool_start.gcode rename to SkeinPyPy/skeinforge_application/alterations/example_cool_start.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_end.gcode b/SkeinPyPy/skeinforge_application/alterations/example_end.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_end.gcode rename to SkeinPyPy/skeinforge_application/alterations/example_end.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_home.gcode b/SkeinPyPy/skeinforge_application/alterations/example_home.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_home.gcode rename to SkeinPyPy/skeinforge_application/alterations/example_home.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_replace.csv b/SkeinPyPy/skeinforge_application/alterations/example_replace.csv similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_replace.csv rename to SkeinPyPy/skeinforge_application/alterations/example_replace.csv diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_replace_M108.csv b/SkeinPyPy/skeinforge_application/alterations/example_replace_M108.csv similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_replace_M108.csv rename to SkeinPyPy/skeinforge_application/alterations/example_replace_M108.csv diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_start.gcode b/SkeinPyPy/skeinforge_application/alterations/example_start.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_start.gcode rename to SkeinPyPy/skeinforge_application/alterations/example_start.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_support_end.gcode b/SkeinPyPy/skeinforge_application/alterations/example_support_end.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_support_end.gcode rename to SkeinPyPy/skeinforge_application/alterations/example_support_end.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/example_support_start.gcode b/SkeinPyPy/skeinforge_application/alterations/example_support_start.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/example_support_start.gcode rename to SkeinPyPy/skeinforge_application/alterations/example_support_start.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/alterations/start.gcode b/SkeinPyPy/skeinforge_application/alterations/start.gcode similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/alterations/start.gcode rename to SkeinPyPy/skeinforge_application/alterations/start.gcode diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/__init__.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/__init__.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/analyze.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/analyze.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/analyze.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/analyze.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/home.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/home.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/home.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/home.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/help.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/help.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/help.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/help.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/meta.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/meta.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/meta.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/meta.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/meta_plugins/description.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/description.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/meta_plugins/description.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/description.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/profile.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py b/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py rename to SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/__init__.py b/SkeinPyPy/skeinforge_application/skeinforge_utilities/__init__.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/__init__.py rename to SkeinPyPy/skeinforge_application/skeinforge_utilities/__init__.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py b/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py rename to SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_craft.py b/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_craft.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_craft.py rename to SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_craft.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_help.py b/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_help.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_help.py rename to SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_help.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_meta.py b/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_meta.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_meta.py rename to SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_meta.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py b/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py rename to SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py diff --git a/SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_profile.py b/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_profile.py similarity index 100% rename from SkeinPyPy_NewUI/skeinforge_application/skeinforge_utilities/skeinforge_profile.py rename to SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_profile.py diff --git a/SkeinPyPy_NewUI/skeinpypy.py b/SkeinPyPy/skeinpypy.py similarity index 100% rename from SkeinPyPy_NewUI/skeinpypy.py rename to SkeinPyPy/skeinpypy.py diff --git a/package.sh b/package.sh index 8421085ac2..27d12daad7 100755 --- a/package.sh +++ b/package.sh @@ -1,6 +1,6 @@ #!/bin/bash -# This script is to build the SkeinPyPy package for Windows/Linux and OSx +# This script is to package the SkeinPyPy package for Windows/Linux and OSx # This script should run under Linux and OSx, as well as Windows with Cygwin. ############################# @@ -137,7 +137,7 @@ fi rm -rf ${TARGET_DIR}/pypy/lib-python/2.7/test #add Skeinforge -cp -a SkeinPyPy_NewUI ${TARGET_DIR}/SkeinPyPy +cp -a SkeinPyPy ${TARGET_DIR}/SkeinPyPy #add printrun cp -a Printrun ${TARGET_DIR}/Printrun From dd79a4c140dedddc64e196d644694814e128da00 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 15:25:40 +0100 Subject: [PATCH 25/31] Small package fix for win32 --- package.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.sh b/package.sh index 27d12daad7..1af88a2537 100755 --- a/package.sh +++ b/package.sh @@ -128,11 +128,10 @@ fi #Extract pypy if [ $BUILD_TARGET = "win32" ]; then 7z x pypy-${PYPY_VERSION}-win32.zip -o${TARGET_DIR} - mv ${TARGET_DIR}/pypy-${PYPY_VERSION}* ${TARGET_DIR}/pypy else cd ${TARGET_DIR}; $TAR -xjf ../pypy-${PYPY_VERSION}-${BUILD_TARGET}.tar.bz2; cd .. - mv ${TARGET_DIR}/pypy-*-${BUILD_TARGET} ${TARGET_DIR}/pypy fi +mv ${TARGET_DIR}/pypy-*-${BUILD_TARGET} ${TARGET_DIR}/pypy #Cleanup pypy rm -rf ${TARGET_DIR}/pypy/lib-python/2.7/test From 982ad9d829cbf7aa4c1a509a24f12cddff3aef46 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 15:41:39 +0100 Subject: [PATCH 26/31] Add print time estimate --- SkeinPyPy/newui/gcodeInterpreter.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/SkeinPyPy/newui/gcodeInterpreter.py b/SkeinPyPy/newui/gcodeInterpreter.py index acea228a74..750a663257 100644 --- a/SkeinPyPy/newui/gcodeInterpreter.py +++ b/SkeinPyPy/newui/gcodeInterpreter.py @@ -13,6 +13,7 @@ class gcode(): currentE = 0.0 totalExtrusion = 0.0 maxExtrusion = 0.0 + totalMoveTimeMinute = 0.0 pathList = [] scale = 1.0 posAbs = True @@ -34,6 +35,7 @@ class gcode(): z = self.getCodeFloat(line, 'Z') e = self.getCodeFloat(line, 'E') f = self.getCodeFloat(line, 'F') + oldPos = pos.copy() if x is not None: if posAbs: pos.x = x * scale @@ -45,15 +47,16 @@ class gcode(): else: pos.y += y * scale if z is not None: - oldZ = pos.z if posAbs: pos.z = z * scale else: pos.z += z * scale - if oldZ != pos.z and startCodeDone: + if oldPos.z != pos.z and startCodeDone: layerNr += 1 if f is not None: feedRate = f + if x is not None or y is not None or z is not None: + totalMoveTimeMinute += (oldPos - pos).vsize() / feedRate moveType = 'move' if e is not None: if posAbs: @@ -138,7 +141,9 @@ class gcode(): self.layerCount = layerNr self.pathList = pathList self.extrusionAmount = maxExtrusion + self.totalMoveTimeMinute = totalMoveTimeMinute print "Extruded a total of: %d mm of filament" % (self.extrusionAmount) + print "Estimated print duration: %.2f minutes" % (self.totalMoveTimeMinute) def getCodeInt(self, str, id): m = re.search(id + '([^\s]+)', str) From 1fe18369b32a3d6676a53c5494347bd3439f83d2 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 16:38:39 +0100 Subject: [PATCH 27/31] Extrude the 100mm a bit faster, and wait a bit longer. --- SkeinPyPy/newui/configWizard.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SkeinPyPy/newui/configWizard.py b/SkeinPyPy/newui/configWizard.py index 60f5682df4..b561da4e87 100644 --- a/SkeinPyPy/newui/configWizard.py +++ b/SkeinPyPy/newui/configWizard.py @@ -360,8 +360,8 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): self.sendGCommand('M302') #Disable cold extrusion protection self.sendGCommand("M92 E%f" % (currentEValue)); self.sendGCommand("G92 E0"); - self.sendGCommand("G1 E100 F300"); - time.sleep(10) + self.sendGCommand("G1 E100 F600"); + time.sleep(15) self.comm.close() self.extrudeButton.Enable() self.heatButton.Enable() From 2cda64a2c9fb7104cdaca3233ac163eeff52c9ef Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 17:10:05 +0100 Subject: [PATCH 28/31] Added skeinpypy.sh script for linux --- scripts/linux/skeinpypy.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100755 scripts/linux/skeinpypy.sh diff --git a/scripts/linux/skeinpypy.sh b/scripts/linux/skeinpypy.sh new file mode 100755 index 0000000000..6fa98b86ec --- /dev/null +++ b/scripts/linux/skeinpypy.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +python -c 'import OpenGL' +if [ $? != 0 ]; then + echo "Requires PyOpenGL" + echo " sudo easy_install-2.7 PyOpenGL" + exit 1 +fi + +python -c 'import wx' +if [ $? != 0 ]; then + echo "Requires wxPython" + exit 1 +fi + +python -c 'import serial' +if [ $? != 0 ]; then + echo "Requires pyserial." + exit 1 +fi + +SCRIPT_DIR=`dirname $0` +python2.7 ${SCRIPT_DIR}/SkeinPyPy/skeinpypy.py + From 2296e475cbf663a5d0f479466f24760724eec251 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 16 Mar 2012 17:10:56 +0100 Subject: [PATCH 29/31] Changed linux script to use python, not python2.7 --- scripts/linux/skeinpypy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/linux/skeinpypy.sh b/scripts/linux/skeinpypy.sh index 6fa98b86ec..6393f3941c 100755 --- a/scripts/linux/skeinpypy.sh +++ b/scripts/linux/skeinpypy.sh @@ -20,5 +20,5 @@ if [ $? != 0 ]; then fi SCRIPT_DIR=`dirname $0` -python2.7 ${SCRIPT_DIR}/SkeinPyPy/skeinpypy.py +python ${SCRIPT_DIR}/SkeinPyPy/skeinpypy.py From ff7782fa14c89c94bd9a7c83cc855a7c2728c6a3 Mon Sep 17 00:00:00 2001 From: Daid Date: Fri, 16 Mar 2012 19:46:40 +0100 Subject: [PATCH 30/31] Fixing a problem with the heatup button in the first run wizard --- SkeinPyPy/newui/configWizard.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SkeinPyPy/newui/configWizard.py b/SkeinPyPy/newui/configWizard.py index b561da4e87..26edcd8064 100644 --- a/SkeinPyPy/newui/configWizard.py +++ b/SkeinPyPy/newui/configWizard.py @@ -369,7 +369,7 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): def OnHeatClick(self, e): threading.Thread(target=self.OnHeatRun).start() - def OnHeatRun(self, e): + def OnHeatRun(self): self.comm = machineCom.MachineCom() while True: line = self.comm.readline() From 2fcd59bfb6f3580784252ce2691ce48a95eea284 Mon Sep 17 00:00:00 2001 From: Daid Date: Sat, 17 Mar 2012 12:03:38 +0100 Subject: [PATCH 31/31] Moved profile read/write functions to newui. Better seperation of Skeinforge and NewUI. Moved all the defaults to profile.py, instead of all over the place. --- SkeinPyPy/fabmetheus_utilities/settings.py | 107 ++++------------ SkeinPyPy/newui/advancedConfig.py | 2 - SkeinPyPy/newui/configBase.py | 21 ++-- SkeinPyPy/newui/configWizard.py | 35 +++--- SkeinPyPy/newui/mainWindow.py | 23 ++-- SkeinPyPy/newui/preview3d.py | 23 ++-- SkeinPyPy/newui/profile.py | 135 +++++++++++++++++++++ SkeinPyPy/newui/validators.py | 4 +- 8 files changed, 211 insertions(+), 139 deletions(-) create mode 100644 SkeinPyPy/newui/profile.py diff --git a/SkeinPyPy/fabmetheus_utilities/settings.py b/SkeinPyPy/fabmetheus_utilities/settings.py index 41c4d460bc..daa99dc923 100644 --- a/SkeinPyPy/fabmetheus_utilities/settings.py +++ b/SkeinPyPy/fabmetheus_utilities/settings.py @@ -7,30 +7,30 @@ from __future__ import absolute_import #Init has to be imported first because it has code to workaround the python bug where relative imports don't work if the module is imported as a main module. import __init__ -import ConfigParser import os, sys import types, math +from newui import profile from fabmetheus_utilities import archive def DEFSET(setting): return setting.value def storedSetting(name): - return lambda setting: getProfileSetting(name, setting.value) + return lambda setting: profile.getProfileSetting(name) def ifSettingAboveZero(name): - return lambda setting: float(getProfileSetting(name, '0.0')) > 0 + return lambda setting: float(profile.getProfileSetting(name)) > 0 -def ifSettingIs(name, value, default): - return lambda setting: getProfileSetting(name, default) == value +def ifSettingIs(name, value): + return lambda setting: profile.getProfileSetting(name) == value def storedPercentSetting(name): - return lambda setting: float(getProfileSetting(name, setting.value * 100)) / 100 + return lambda setting: float(profile.getProfileSetting(name)) / 100 def calculateEdgeWidth(setting): - wallThickness = float(getProfileSetting('wall_thickness')) - nozzleSize = float(getProfileSetting('nozzle_size')) + wallThickness = float(profile.getProfileSetting('wall_thickness')) + nozzleSize = float(profile.getProfileSetting('nozzle_size')) if wallThickness < nozzleSize: return wallThickness @@ -43,13 +43,13 @@ def calculateEdgeWidth(setting): return lineWidth def calculateShells(setting): - return calculateShellsImp(float(getProfileSetting('wall_thickness'))) + return calculateShellsImp(float(profile.getProfileSetting('wall_thickness'))) def calculateShellsBase(setting): - return calculateShellsImp(float(getProfileSetting('wall_thickness')) + float(getProfileSetting('extra_base_wall_thickness', '0'))) + return calculateShellsImp(float(profile.getProfileSetting('wall_thickness')) + float(profile.getProfileSetting('extra_base_wall_thickness'))) def calculateShellsImp(wallThickness): - nozzleSize = float(getProfileSetting('nozzle_size')) + nozzleSize = float(profile.getProfileSetting('nozzle_size')) if wallThickness < nozzleSize: return 0 @@ -62,19 +62,19 @@ def calculateShellsImp(wallThickness): return lineCount - 1 def calculateSolidLayerCount(setting): - layerHeight = float(getProfileSetting('layer_height')) - solidThickness = float(getProfileSetting('solid_layer_thickness')) + layerHeight = float(profile.getProfileSetting('layer_height')) + solidThickness = float(profile.getProfileSetting('solid_layer_thickness')) ret = int(math.ceil(solidThickness / layerHeight - 0.0001)) return ret def firstLayerSpeedRatio(setting): - bottomSpeed = float(getProfileSetting('bottom_layer_speed')) - speed = float(getProfileSetting('print_speed')) + bottomSpeed = float(profile.getProfileSetting('bottom_layer_speed')) + speed = float(profile.getProfileSetting('print_speed')) return bottomSpeed/speed def calcSupportDistanceRatio(setting): edgeWidth = calculateEdgeWidth(setting) - distance = float(getProfileSetting('support_distance', '0.5')) + distance = float(profile.getProfileSetting('support_distance')) return distance / edgeWidth def getSkeinPyPyProfileInformation(): @@ -139,10 +139,10 @@ def getSkeinPyPyProfileInformation(): 'Infill_Begin_Rotation_degrees': DEFSET, 'Infill_Begin_Rotation_Repeat_layers': DEFSET, 'Infill_Odd_Layer_Extra_Rotation_degrees': DEFSET, - 'Grid_Circular': ifSettingIs('infill_type', 'Grid Circular', 'Line'), - 'Grid_Hexagonal': ifSettingIs('infill_type', 'Grid Hexagonal', 'Line'), - 'Grid_Rectangular': ifSettingIs('infill_type', 'Grid Rectangular', 'Line'), - 'Line': ifSettingIs('infill_type', 'Line', 'Line'), + 'Grid_Circular': ifSettingIs('infill_type', 'Grid Circular'), + 'Grid_Hexagonal': ifSettingIs('infill_type', 'Grid Hexagonal'), + 'Grid_Rectangular': ifSettingIs('infill_type', 'Grid Rectangular'), + 'Line': ifSettingIs('infill_type', 'Line'), 'Infill_Perimeter_Overlap_ratio': storedPercentSetting('fill_overlap'), 'Infill_Solidity_ratio': storedPercentSetting('fill_density'), 'Infill_Width': storedSetting("nozzle_size"), @@ -380,69 +380,6 @@ def getSkeinPyPyProfileInformation(): } } -def loadGlobalProfile(filename): - "Read a configuration file as global config" - global globalProfileParser - globalProfileParser = ConfigParser.ConfigParser() - globalProfileParser.read(filename) - -def saveGlobalProfile(filename): - globalProfileParser.write(open(filename, 'w')) - -def getProfileSetting(name, default = "ERR", section = 'profile'): - #Check if we have a configuration file loaded, else load the default. - if not globals().has_key('globalProfileParser'): - loadGlobalProfile(getDefaultProfilePath()) - if not globalProfileParser.has_option(section, name): - if not globalProfileParser.has_section(section): - globalProfileParser.add_section(section) - globalProfileParser.set(section, name, str(default)) - print name + " not found in profile, so using default: " + str(default) - return default - return globalProfileParser.get(section, name) - -def putProfileSetting(name, value, section = 'profile'): - #Check if we have a configuration file loaded, else load the default. - if not globals().has_key('globalProfileParser'): - loadGlobalProfile(getDefaultProfilePath()) - if not globalProfileParser.has_section(section): - globalProfileParser.add_section(section) - globalProfileParser.set(section, name, str(value)) - -global globalPreferenceParser -globalPreferenceParser = None - -def getPreferencePath(): - return os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../preferences.ini")) - -def getPreference(name, default = "ERR"): - global globalPreferenceParser - if globalPreferenceParser == None: - globalPreferenceParser = ConfigParser.ConfigParser() - globalPreferenceParser.read(getPreferencePath()) - if not globalPreferenceParser.has_option('preference', name): - if not globalPreferenceParser.has_section('preference'): - globalPreferenceParser.add_section('preference') - globalPreferenceParser.set('preference', name, str(default)) - print name + " not found in preferences, so using default: " + str(default) - return default - return globalPreferenceParser.get('preference', name) - -def putPreference(name, value): - #Check if we have a configuration file loaded, else load the default. - global globalPreferenceParser - if globalPreferenceParser == None: - globalPreferenceParser = ConfigParser.ConfigParser() - globalPreferenceParser.read(getPreferencePath()) - if not globalPreferenceParser.has_section('preference'): - globalPreferenceParser.add_section('preference') - globalPreferenceParser.set('preference', name, str(value)) - globalPreferenceParser.write(open(getPreferencePath(), 'w')) - - -def getDefaultProfilePath(): - return os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../current_profile.ini")) - def safeConfigName(name): return name.replace("=", "").replace(":", "").replace(" ", "_").replace("(", "").replace(")", "") @@ -491,10 +428,10 @@ def getAlterationFile(fileName, allowMagicPrefix = True): if fileName == 'start.gcode': #For the start code, hack the temperature and the steps per E value into it. So the temperature is reached before the start code extrusion. #We also set our steps per E here, if configured. - eSteps = float(getPreference('steps_per_e', '0')) + eSteps = float(profile.getPreference('steps_per_e')) if eSteps > 0: prefix += 'M92 E'+str(eSteps)+'\n' - temp = float(getProfileSetting('print_temperature', '0')) + temp = float(profile.getProfileSetting('print_temperature')) if temp > 0: prefix += 'M109 S'+str(temp)+'\n' elif fileName == 'replace.csv': diff --git a/SkeinPyPy/newui/advancedConfig.py b/SkeinPyPy/newui/advancedConfig.py index dbc4ba6830..bb2beac728 100644 --- a/SkeinPyPy/newui/advancedConfig.py +++ b/SkeinPyPy/newui/advancedConfig.py @@ -4,8 +4,6 @@ import __init__ import wx, os, platform, types import ConfigParser -from fabmetheus_utilities import settings - from newui import configBase from newui import preview3d from newui import sliceProgessPanel diff --git a/SkeinPyPy/newui/configBase.py b/SkeinPyPy/newui/configBase.py index aa028e5256..efc747f753 100644 --- a/SkeinPyPy/newui/configBase.py +++ b/SkeinPyPy/newui/configBase.py @@ -3,9 +3,8 @@ import __init__ import wx, os, sys, platform, types -from fabmetheus_utilities import settings - from newui import validators +from newui import profile def main(): app = wx.App(False) @@ -82,9 +81,9 @@ class configWindowBase(wx.Frame): "Update the configuration wx controls to show the new configuration settings" for setting in self.settingControlList: if setting.type == 'profile': - setting.SetValue(settings.getProfileSetting(setting.configName)) + setting.SetValue(profile.getProfileSetting(setting.configName)) else: - setting.SetValue(settings.getPreference(setting.configName)) + setting.SetValue(profile.getPreference(setting.configName)) class TitleRow(): def __init__(self, panel, name): @@ -112,18 +111,18 @@ class SettingRow(): self.type = type self.label = wx.StaticText(panel, -1, label) - getSettingFunc = settings.getPreference + getSettingFunc = profile.getPreference if self.type == 'profile': - getSettingFunc = settings.getProfileSetting + getSettingFunc = profile.getProfileSetting if isinstance(defaultValue, types.StringTypes): - self.ctrl = wx.TextCtrl(panel, -1, getSettingFunc(configName, defaultValue)) + self.ctrl = wx.TextCtrl(panel, -1, getSettingFunc(configName)) self.ctrl.Bind(wx.EVT_TEXT, self.OnSettingChange) elif isinstance(defaultValue, types.BooleanType): self.ctrl = wx.CheckBox(panel, -1, style=wx.ALIGN_RIGHT) - self.SetValue(getSettingFunc(configName, defaultValue)) + self.SetValue(getSettingFunc(configName)) self.ctrl.Bind(wx.EVT_CHECKBOX, self.OnSettingChange) else: - self.ctrl = wx.ComboBox(panel, -1, getSettingFunc(configName, defaultValue[0]), choices=defaultValue, style=wx.CB_DROPDOWN|wx.CB_READONLY) + self.ctrl = wx.ComboBox(panel, -1, getSettingFunc(configName), choices=defaultValue, style=wx.CB_DROPDOWN|wx.CB_READONLY) self.ctrl.Bind(wx.EVT_TEXT, self.OnSettingChange) sizer.Add(self.label, (x,y), flag=wx.ALIGN_CENTER_VERTICAL) @@ -149,9 +148,9 @@ class SettingRow(): def OnSettingChange(self, e): if self.type == 'profile': - settings.putProfileSetting(self.configName, self.GetValue()) + profile.putProfileSetting(self.configName, self.GetValue()) else: - settings.putPreference(self.configName, self.GetValue()) + profile.putPreference(self.configName, self.GetValue()) result = validators.SUCCESS msgs = [] for validator in self.validators: diff --git a/SkeinPyPy/newui/configWizard.py b/SkeinPyPy/newui/configWizard.py index 26edcd8064..2e5ecf14ac 100644 --- a/SkeinPyPy/newui/configWizard.py +++ b/SkeinPyPy/newui/configWizard.py @@ -4,8 +4,8 @@ import __init__ import wx, os, platform, types, webbrowser, threading, time, re import wx.wizard -from fabmetheus_utilities import settings from newui import machineCom +from newui import profile class InfoPage(wx.wizard.WizardPageSimple): def __init__(self, parent, title): @@ -94,19 +94,20 @@ class MachineSelectPage(InfoPage): def StoreData(self): if self.UltimakerRadio.GetValue(): - settings.putPreference('machine_width', '205') - settings.putPreference('machine_depth', '205') - settings.putPreference('machine_height', '200') - settings.putProfileSetting('nozzle_size', '0.4') - settings.putProfileSetting('machine_center_x', '100') - settings.putProfileSetting('machine_center_y', '100') + profile.putPreference('machine_width', '205') + profile.putPreference('machine_depth', '205') + profile.putPreference('machine_height', '200') + profile.putProfileSetting('nozzle_size', '0.4') + profile.putProfileSetting('machine_center_x', '100') + profile.putProfileSetting('machine_center_y', '100') else: - settings.putPreference('machine_width', '80') - settings.putPreference('machine_depth', '80') - settings.putPreference('machine_height', '60') - settings.putProfileSetting('nozzle_size', '0.5') - settings.putProfileSetting('machine_center_x', '40') - settings.putProfileSetting('machine_center_y', '40') + profile.putPreference('machine_width', '80') + profile.putPreference('machine_depth', '80') + profile.putPreference('machine_height', '60') + profile.putProfileSetting('nozzle_size', '0.5') + profile.putProfileSetting('machine_center_x', '40') + profile.putProfileSetting('machine_center_y', '40') + profile.putProfileSetting('wall_thickness', float(profile.getProfileSetting('nozzle_size')) * 2) class FirmwareUpgradePage(InfoPage): def __init__(self, parent): @@ -299,13 +300,13 @@ class UltimakerCalibrationPage(InfoPage): self.AddText("The better you have calibrated these values, the better your prints\nwill become."); self.AddSeperator() self.AddText("First we need the diameter of your filament:"); - self.filamentDiameter = wx.TextCtrl(self, -1, settings.getProfileSetting('filament_diameter', '2.89')) + self.filamentDiameter = wx.TextCtrl(self, -1, profile.getProfileSetting('filament_diameter')) self.GetSizer().Add(self.filamentDiameter, 0, wx.LEFT, 5) self.AddText("If you do not own digital Calipers that can measure\nat least 2 digits then use 2.89mm.\nWhich is the average diameter of most filament."); self.AddText("Note: This value can be changed later at any time."); def StoreData(self): - settings.putProfileSetting('filament_diameter', self.filamentDiameter.GetValue()) + profile.putProfileSetting('filament_diameter', self.filamentDiameter.GetValue()) class UltimakerCalibrateStepsPerEPage(InfoPage): def __init__(self, parent): @@ -325,7 +326,7 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): p.GetSizer().Add(self.saveLengthButton, 0) self.GetSizer().Add(p, 0, wx.LEFT, 5) self.AddText("This results in the following steps per E:") - self.stepsPerEInput = wx.TextCtrl(self, -1, settings.getPreference('steps_per_e', '865.888')) + self.stepsPerEInput = wx.TextCtrl(self, -1, profile.getPreference('steps_per_e')) self.GetSizer().Add(self.stepsPerEInput, 0, wx.LEFT, 5) self.AddText("You can repeat these steps to get better calibration.") self.AddSeperator() @@ -393,7 +394,7 @@ class UltimakerCalibrateStepsPerEPage(InfoPage): break def StoreData(self): - settings.putPreference('steps_per_e', self.stepsPerEInput.GetValue()) + profile.putPreference('steps_per_e', self.stepsPerEInput.GetValue()) class configWizard(wx.wizard.Wizard): def __init__(self): diff --git a/SkeinPyPy/newui/mainWindow.py b/SkeinPyPy/newui/mainWindow.py index c7d91a2086..13f0e89388 100644 --- a/SkeinPyPy/newui/mainWindow.py +++ b/SkeinPyPy/newui/mainWindow.py @@ -3,8 +3,6 @@ import __init__ import wx, os, platform, types, webbrowser -from fabmetheus_utilities import settings - from newui import configBase from newui import advancedConfig from newui import preview3d @@ -14,14 +12,15 @@ from newui import validators from newui import preferencesDialog from newui import configWizard from newui import machineCom +from newui import profile def main(): app = wx.App(False) - if settings.getPreference('wizardDone', 'False') == 'False': + if profile.getPreference('wizardDone') == 'False': if os.name == 'darwin': wx.MessageBox('The MacOS version of SkeinPyPy is experimental.\nThere are still UI/usability bugs. Check the issue list at:\nhttps://github.com/daid/SkeinPyPy/issues\nfor details.\nPlease report any extra issue you find.', 'MacOS Warning', wx.OK | wx.ICON_INFORMATION) configWizard.configWizard() - settings.putPreference("wizardDone", "True") + profile.putPreference("wizardDone", "True") mainWindow() app.MainLoop() @@ -71,7 +70,7 @@ class mainWindow(configBase.configWindowBase): self.SetMenuBar(menubar) self.lastPath = "" - self.filename = settings.getPreference('lastFile', "None") + self.filename = profile.getPreference('lastFile') self.progressPanelList = [] #Preview window @@ -223,7 +222,7 @@ class mainWindow(configBase.configWindowBase): if dlg.ShowModal() == wx.ID_OK: profileFile = dlg.GetPath() self.lastPath = os.path.split(profileFile)[0] - settings.loadGlobalProfile(profileFile) + profile.loadGlobalProfile(profileFile) self.updateProfileToControls() dlg.Destroy() @@ -233,7 +232,7 @@ class mainWindow(configBase.configWindowBase): if dlg.ShowModal() == wx.ID_OK: profileFile = dlg.GetPath() self.lastPath = os.path.split(profileFile)[0] - settings.saveGlobalProfile(profileFile) + profile.saveGlobalProfile(profileFile) dlg.Destroy() def OnPreferences(self, e): @@ -242,7 +241,7 @@ class mainWindow(configBase.configWindowBase): prefDialog.Show(True) def OnDefaultMarlinFirmware(self, e): - machineCom.InstallFirmware(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../firmware/default.hex"), settings.getPreference('serial_port', 'AUTO')) + machineCom.InstallFirmware(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../firmware/default.hex"), profile.getPreference('serial_port')) def OnCustomFirmware(self, e): dlg=wx.FileDialog(self, "Open firmware to upload", self.lastPath, style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) @@ -252,7 +251,7 @@ class mainWindow(configBase.configWindowBase): if not(os.path.exists(filename)): return #For some reason my Ubuntu 10.10 crashes here. - machineCom.InstallFirmware(filename, settings.getPreference('serial_port', 'AUTO')) + machineCom.InstallFirmware(filename, profile.getPreference('serial_port')) def OnFirstRunWizard(self, e): configWizard.configWizard() @@ -263,7 +262,7 @@ class mainWindow(configBase.configWindowBase): dlg.SetWildcard("STL files (*.stl)|*.stl") if dlg.ShowModal() == wx.ID_OK: self.filename=dlg.GetPath() - settings.putPreference('lastFile', self.filename) + profile.putPreference('lastFile', self.filename) if not(os.path.exists(self.filename)): return self.lastPath = os.path.split(self.filename)[0] @@ -273,7 +272,7 @@ class mainWindow(configBase.configWindowBase): def OnSlice(self, e): if self.filename == None: return - settings.saveGlobalProfile(settings.getDefaultProfilePath()) + profile.saveGlobalProfile(profile.getDefaultProfilePath()) #Create a progress panel and add it to the window. The progress panel will start the Skein operation. spp = sliceProgessPanel.sliceProgessPanel(self, self, self.filename) @@ -308,5 +307,5 @@ class mainWindow(configBase.configWindowBase): self.Close() def OnClose(self, e): - settings.saveGlobalProfile(settings.getDefaultProfilePath()) + profile.saveGlobalProfile(profile.getDefaultProfilePath()) self.Destroy() diff --git a/SkeinPyPy/newui/preview3d.py b/SkeinPyPy/newui/preview3d.py index 041c615cb7..af7d107437 100644 --- a/SkeinPyPy/newui/preview3d.py +++ b/SkeinPyPy/newui/preview3d.py @@ -14,10 +14,11 @@ except: print "Failed to find PyOpenGL: http://pyopengl.sourceforge.net/" hasOpenGLlibs = False -from fabmetheus_utilities import settings +from newui import profile from newui import gcodeInterpreter from newui import util3d +from fabmetheus_utilities import settings from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret from fabmetheus_utilities.vector3 import Vector3 @@ -32,7 +33,7 @@ class previewPanel(wx.Panel): self.init = 0 self.triangleMesh = None self.gcode = None - self.machineSize = Vector3(float(settings.getPreference('machine_width', '205')), float(settings.getPreference('machine_depth', '205')), float(settings.getPreference('machine_height', '200'))) + self.machineSize = Vector3(float(profile.getPreference('machine_width')), float(profile.getPreference('machine_depth')), float(profile.getPreference('machine_height'))) self.machineCenter = Vector3(0, 0, 0) self.toolbar = wx.ToolBar( self, -1 ) @@ -93,10 +94,12 @@ class previewPanel(wx.Panel): self.glCanvas.Refresh() def updateWallLineWidth(self, setting): + #TODO: this shouldn't be needed, you can calculate the line width from the E values combined with the steps_per_E and the filament diameter (reverse volumatric) self.glCanvas.lineWidth = settings.calculateEdgeWidth(setting) def updateInfillLineWidth(self, setting): - self.glCanvas.infillLineWidth = settings.getProfileSetting('nozzle_size') + #TODO: this shouldn't be needed, you can calculate the line width from the E values combined with the steps_per_E and the filament diameter (reverse volumatric) + self.glCanvas.infillLineWidth = profile.getProfileSetting('nozzle_size') def loadModelFile(self, filename): self.modelFilename = filename @@ -158,18 +161,18 @@ class previewPanel(wx.Panel): scale = 1.0 rotate = 0.0 try: - scale = float(settings.getProfileSetting('model_scale', '1.0')) - rotate = float(settings.getProfileSetting('model_rotate_base', '0.0')) / 180 * math.pi + scale = float(profile.getProfileSetting('model_scale')) + rotate = float(profile.getProfileSetting('model_rotate_base')) / 180 * math.pi except: pass scaleX = scale scaleY = scale scaleZ = scale - if settings.getProfileSetting('flip_x') == 'True': + if profile.getProfileSetting('flip_x') == 'True': scaleX = -scaleX - if settings.getProfileSetting('flip_y') == 'True': + if profile.getProfileSetting('flip_y') == 'True': scaleY = -scaleY - if settings.getProfileSetting('flip_z') == 'True': + if profile.getProfileSetting('flip_z') == 'True': scaleZ = -scaleZ mat00 = math.cos(rotate) * scaleX mat01 =-math.sin(rotate) * scaleY @@ -381,8 +384,8 @@ class PreviewGLCanvas(glcanvas.GLCanvas): self.modelDisplayList = glGenLists(1); if self.parent.modelDirty: self.parent.modelDirty = False - multiX = int(settings.getProfileSetting('model_multiply_x', '1')) - multiY = int(settings.getProfileSetting('model_multiply_y', '1')) + multiX = int(profile.getProfileSetting('model_multiply_x')) + multiY = int(profile.getProfileSetting('model_multiply_y')) modelSize = self.parent.triangleMesh.getCarveCornerMaximum() - self.parent.triangleMesh.getCarveCornerMinimum() glNewList(self.modelDisplayList, GL_COMPILE) glPushMatrix() diff --git a/SkeinPyPy/newui/profile.py b/SkeinPyPy/newui/profile.py new file mode 100644 index 0000000000..f672bc8a7f --- /dev/null +++ b/SkeinPyPy/newui/profile.py @@ -0,0 +1,135 @@ +from __future__ import absolute_import +#Init has to be imported first because it has code to workaround the python bug where relative imports don't work if the module is imported as a main module. +import __init__ + +import ConfigParser +import os +import traceback + +#Single place to store the defaults, so we have a consistent set of default settings. +profileDefaultSettings = { + 'layer_height': '0.2', + 'wall_thickness': '0.8', + 'solid_layer_thickness': '0.6', + 'fill_density': '20', + 'skirt_line_count': '1', + 'skirt_gap': '6.0', + 'print_speed': '50', + 'print_temperature': '0', + 'support': 'None', + 'filament_diameter': '2.89', + 'filament_density': '1.00', + 'machine_center_x': '100', + 'machine_center_y': '100', + 'nozzle_size': '0.4', + 'retraction_min_travel': '5.0', + 'retraction_speed': '13.5', + 'retraction_amount': '0.0', + 'retraction_extra': '0.0', + 'travel_speed': '150', + 'max_z_speed': '1.0', + 'bottom_layer_speed': '25', + 'cool_min_layer_time': '10', + 'model_scale': '1.0', + 'flip_x': 'False', + 'flip_y': 'False', + 'flip_z': 'False', + 'model_rotate_base': '0', + 'model_multiply_x': '1', + 'model_multiply_y': '1', + 'extra_base_wall_thickness': '0.0', + 'sequence': 'Loops > Perimeter > Infill', + 'force_first_layer_sequence': 'True', + 'infill_type': 'Line', + 'solid_top': 'True', + 'fill_overlap': '15', + 'support_rate': '100', + 'support_distance': '0.5', + 'joris': 'False', +} +preferencesDefaultSettings = { + 'wizardDone': 'False', + 'lastFile': 'None', + 'machine_width': '205', + 'machine_depth': '205', + 'machine_height': '200', + 'steps_per_e': '0', + 'serial_port': 'AUTO', + 'serial_baud': '250000', +} + +def getDefaultProfilePath(): + return os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../current_profile.ini")) + +def loadGlobalProfile(filename): + "Read a configuration file as global config" + global globalProfileParser + globalProfileParser = ConfigParser.ConfigParser() + globalProfileParser.read(filename) + +def saveGlobalProfile(filename): + globalProfileParser.write(open(filename, 'w')) + +def getProfileSetting(name): + if name in profileDefaultSettings: + default = profileDefaultSettings[name] + else: + print "Missing default setting for: '" + name + "'" + profileDefaultSettings[name] = '' + default = '' + + #Check if we have a configuration file loaded, else load the default. + if not globals().has_key('globalProfileParser'): + loadGlobalProfile(getDefaultProfilePath()) + if not globalProfileParser.has_option('profile', name): + if not globalProfileParser.has_section('profile'): + globalProfileParser.add_section('profile') + globalProfileParser.set('profile', name, str(default)) + print name + " not found in profile, so using default: " + str(default) + return default + return globalProfileParser.get('profile', name) + +def putProfileSetting(name, value): + #Check if we have a configuration file loaded, else load the default. + if not globals().has_key('globalProfileParser'): + loadGlobalProfile(getDefaultProfilePath()) + if not globalProfileParser.has_section('profile'): + globalProfileParser.add_section('profile') + globalProfileParser.set('profile', name, str(value)) + +global globalPreferenceParser +globalPreferenceParser = None + +def getPreferencePath(): + return os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../preferences.ini")) + +def getPreference(name): + if name in preferencesDefaultSettings: + default = preferencesDefaultSettings[name] + else: + print "Missing default setting for: '" + name + "'" + preferencesDefaultSettings[name] = '' + default = '' + + global globalPreferenceParser + if globalPreferenceParser == None: + globalPreferenceParser = ConfigParser.ConfigParser() + globalPreferenceParser.read(getPreferencePath()) + if not globalPreferenceParser.has_option('preference', name): + if not globalPreferenceParser.has_section('preference'): + globalPreferenceParser.add_section('preference') + globalPreferenceParser.set('preference', name, str(default)) + print name + " not found in preferences, so using default: " + str(default) + return default + return globalPreferenceParser.get('preference', name) + +def putPreference(name, value): + #Check if we have a configuration file loaded, else load the default. + global globalPreferenceParser + if globalPreferenceParser == None: + globalPreferenceParser = ConfigParser.ConfigParser() + globalPreferenceParser.read(getPreferencePath()) + if not globalPreferenceParser.has_section('preference'): + globalPreferenceParser.add_section('preference') + globalPreferenceParser.set('preference', name, str(value)) + globalPreferenceParser.write(open(getPreferencePath(), 'w')) diff --git a/SkeinPyPy/newui/validators.py b/SkeinPyPy/newui/validators.py index a8cb480485..d9d141a9d0 100644 --- a/SkeinPyPy/newui/validators.py +++ b/SkeinPyPy/newui/validators.py @@ -1,7 +1,7 @@ from __future__ import absolute_import import __init__ -from fabmetheus_utilities import settings +from newui import profile SUCCESS = 0 WARNING = 1 @@ -68,7 +68,7 @@ class wallThicknessValidator(): def validate(self): try: wallThickness = float(self.setting.GetValue()) - nozzleSize = float(settings.getProfileSetting('nozzle_size')) + nozzleSize = float(profile.getProfileSetting('nozzle_size')) if wallThickness <= nozzleSize * 0.5: return ERROR, 'Trying to print walls thinner then the half of your nozzle size, this will not produce anything usable' if wallThickness <= nozzleSize * 0.85: