diff --git a/.gitignore b/.gitignore index 07068f7..4d78b57 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ - -*.stl +venv/ +web/__pycache__/ +web/serve.py.bak +*.pyc diff --git a/Makefile b/Makefile index 422167b..9a79fd9 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ endif SCAD_DIR = scad SVG_DIR = resources -POLY_DIR = scad +POLY_DIR = scad/gen JSON_DIR = build # Files to include @@ -24,8 +24,11 @@ SCAD_SRC = $(SCAD_DIR)/schlage_classic.scad \ $(SCAD_DIR)/schlage_primus.scad \ $(SCAD_DIR)/medeco_classic.scad \ $(SCAD_DIR)/medeco_biaxial.scad \ + $(SCAD_DIR)/medeco_M3.scad \ $(SCAD_DIR)/master.scad \ $(SCAD_DIR)/X103-KW12.scad \ + $(SCAD_DIR)/falcon_025.scad \ + $(SCAD_DIR)/lockwood.scad \ # Generated polygon files POLY_OBJ = $(patsubst $(SVG_DIR)/%.svg,$(POLY_DIR)/%.gen.scad,$(SVG_SRC)) diff --git a/README.md b/README.md index 765b17d..4e0e5a9 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,61 @@ Tools for generating physical keys. ![Key in Inkscape](doc/inkscape.png "SC4") ![Key in OpenSCAD](doc/key.png "152698") +# Installation +Download the GitHub repository and extract the repository in the location you wish to use it. + + +## Prerequisites + +Keygen requires OpenSCAD and Python to work properly. Both can be downloaded from their official websites. + +https://openscad.org/ + +https://www.python.org/ + +## Windows +Windows users will need to add OpenSCAD and python3 to the User Path; otherwise you will encounter errors. + +OpenSCAD will install in "C:\Program Files\OpenSCAD" by default + +Add to Path: + +``` +C:\Program Files\OpenSCAD +``` + +## Linux +Linux installation is more straightforward, see OpenSCAD Installation Guide + +### Fedora +``` +sudo dnf install python3 +``` + +``` +sudo dnf install openscad +``` + + ## How to use it +The keygen.py file located in \keygen-master\bin will be your main method of interacting with keygen. + +Use the cd command to set your console's directory to keygen-master this will allow you to use the example commands as is. + +keygen-master is located in the download's folder. + +``` +cd Downloads\keygen-master\keygen-master +``` + +To enter the help menu shown below. + +``` +bin/keygen.py -h +``` + ``` -usage: keygen.py [-h] [-b BITTING] [-u OUTLINE] [-w WARDING] [-o OUTPUT] +usage: keygen.py [-h] [scad/SCADFILE] [-b BITTING] [-u OUTLINE] [-w WARDING] [-o OUTPUT] filename Generates keys. @@ -28,18 +80,24 @@ optional arguments: All remaining arguments are passed to OpenSCAD. ``` -### Examples +It is important to use the appropriate scad file with the key you are trying to generate, see examples below scad/kwikset.scad or scad/schlage_classic.scad. Do not use the files that have a .gen. In them, they are used for generating the keys in OpenSCAD. -```bin/keygen.py scad/kwikset.scad --bitting 25536 -o housekey.stl``` +If you do not get an output file, open the scad file you are trying to use and make sure you are using the correct variables as they are different across the key types some experimentation is required. -```bin/keygen.py scad/schlage_classic.scad -u 6-pin -w L -b 999999 -o all_section_bump_key.stl``` +## Examples -```bin/keygen.py scad/schlage_classic.scad -o key.png --render``` +``` +python bin/keygen.py scad/kwikset.scad --bitting 25536 -o housekey.stl +``` -## Contributing +``` +python bin/keygen.py scad/schlage_classic.scad -u 6-pin -w L -b 999999 -o all_section_bump_key.stl +``` -There is a very limited selection of keys right now, to help out, see the guide on [how to model keys](doc/how_to_model_keys.md). +``` +python bin/keygen.py scad/schlage_classic.scad -o key.png --render +``` -## Music +## Contributing -There is no keygen music yet, in the meantime, try [here](https://soundcloud.com/dualtrax/sets/orion-keygen-music) +There is a very limited selection of keys right now, to help out, see the guide on [how to model keys](doc/how_to_model_keys.md). diff --git a/bin/paths2openscad.py b/bin/paths2openscad.py index 9fe36d3..a4e8f66 100755 --- a/bin/paths2openscad.py +++ b/bin/paths2openscad.py @@ -1,10 +1,10 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python3 -# openscad.py +# paths2openscad.py -# This is an Inkscape extension to output paths to extruded OpenSCAD polygons +# This is an Inkscape extension to output paths to extruded OpenSCAD polygons. # The Inkscape objects must first be converted to paths (Path > Object to Path). -# Some paths may not work well -- the paths have to be polygons. As such, +# Some paths may not work well -- the paths have to be polygons. As such, # paths derived from text may meet with mixed results. # Written by Daniel C. Newman ( dan dot newman at mtbaldy dot us ) @@ -20,6 +20,12 @@ # Modified by Eric Van Albert to output complex polygons instead of # using OpenSCAD's difference() +# 29 Sept 2024 +# Updated by AdventureDan to Python 3 and fixed deprecation issues: +# - Replaced `cspsubdiv.maxdist` with `inkex.bezier.maxdist` +# - Replaced `bezmisc.beziersplitatt` with `inkex.bezier.beziersplitatt` +# - Updated to use `inkex.Transform` for matrix transformations. + # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or @@ -27,187 +33,131 @@ # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import math import os.path import inkex -import simplepath -import simplestyle -import simpletransform import cubicsuperpath import cspsubdiv -import bezmisc +import inkex.bezier # Import inkex.bezier for bezier operations import re DEFAULT_WIDTH = 100 DEFAULT_HEIGHT = 100 -def parseLengthWithUnits( str ): - +def parseLengthWithUnits(value): ''' - Parse an SVG value which may or may not have units attached - This version is greatly simplified in that it only allows: no units, - units of px, and units of %. Everything else, it returns None for. - There is a more general routine to consider in scour.py if more - generality is ever needed. + Parse an SVG value which may or may not have units attached. + This version is simplified to handle: no units, units of px, and %. ''' - u = 'px' - s = str.strip() - if s[-2:] == 'px': + s = value.strip() + if s.endswith('px'): s = s[:-2] - elif s[-1:] == '%': + elif s.endswith('%'): u = '%' s = s[:-1] - try: - v = float( s ) - except: + v = float(s) + except ValueError: return None, None - return v, u -def pointInBBox( pt, bbox ): - +def pointInBBox(pt, bbox): ''' Determine if the point pt=[x, y] lies on or within the bounding box bbox=[xmin, xmax, ymin, ymax]. ''' - - # if ( x < xmin ) or ( x > xmax ) or ( y < ymin ) or ( y > ymax ) - if ( pt[0] < bbox[0] ) or ( pt[0] > bbox[1] ) or \ - ( pt[1] < bbox[2] ) or ( pt[1] > bbox[3] ): + if (pt[0] < bbox[0]) or (pt[0] > bbox[1]) or (pt[1] < bbox[2]) or (pt[1] > bbox[3]): return False else: return True -def bboxInBBox( bbox1, bbox2 ): - +def bboxInBBox(bbox1, bbox2): ''' Determine if the bounding box bbox1 lies on or within the - bounding box bbox2. NOTE: we do not test for strict enclosure. - - Structure of the bounding boxes is - - bbox1 = [ xmin1, xmax1, ymin1, ymax1 ] - bbox2 = [ xmin2, xmax2, ymin2, ymax2 ] + bounding box bbox2. ''' - - # if ( xmin1 < xmin2 ) or ( xmax1 > xmax2 ) or ( ymin1 < ymin2 ) or ( ymax1 > ymax2 ) - - if ( bbox1[0] < bbox2[0] ) or ( bbox1[1] > bbox2[1] ) or \ - ( bbox1[2] < bbox2[2] ) or ( bbox1[3] > bbox2[3] ): + if (bbox1[0] < bbox2[0]) or (bbox1[1] > bbox2[1]) or (bbox1[2] < bbox2[2]) or (bbox1[3] > bbox2[3]): return False else: return True -def pointInPoly( p, poly, bbox=None ): - +def pointInPoly(p, poly, bbox=None): ''' Use a ray casting algorithm to see if the point p = [x, y] lies within - the polygon poly = [[x1,y1],[x2,y2],...]. Returns True if the point - is within poly, lies on an edge of poly, or is a vertex of poly. + the polygon poly = [[x1, y1], [x2, y2], ...]. + Returns True if the point is within poly, on an edge, or is a vertex. ''' - - if ( p is None ) or ( poly is None ): + if (p is None) or (poly is None): return False - # Check to see if the point lies outside the polygon's bounding box - if not bbox is None: - if not pointInBBox( p, bbox ): + if bbox is not None: + if not pointInBBox(p, bbox): return False - # Check to see if the point is a vertex if p in poly: return True - # Handle a boundary case associated with the point - # lying on a horizontal edge of the polygon x = p[0] y = p[1] p1 = poly[0] p2 = poly[1] - for i in range( len( poly ) ): + for i in range(len(poly)): if i != 0: p1 = poly[i-1] p2 = poly[i] - if ( y == p1[1] ) and ( p1[1] == p2[1] ) and \ - ( x > min( p1[0], p2[0] ) ) and ( x < max( p1[0], p2[0] ) ): + if (y == p1[1]) and (p1[1] == p2[1]) and (x > min(p1[0], p2[0])) and (x < max(p1[0], p2[0])): return True - n = len( poly ) + n = len(poly) inside = False - - p1_x,p1_y = poly[0] - for i in range( n + 1 ): - p2_x,p2_y = poly[i % n] - if y > min( p1_y, p2_y ): - if y <= max( p1_y, p2_y ): - if x <= max( p1_x, p2_x ): + p1_x, p1_y = poly[0] + for i in range(n + 1): + p2_x, p2_y = poly[i % n] + if y > min(p1_y, p2_y): + if y <= max(p1_y, p2_y): + if x <= max(p1_x, p2_x): if p1_y != p2_y: intersect = p1_x + (y - p1_y) * (p2_x - p1_x) / (p2_y - p1_y) if x <= intersect: inside = not inside else: inside = not inside - p1_x,p1_y = p2_x,p2_y + p1_x, p1_y = p2_x, p2_y return inside -def polyInPoly( poly1, bbox1, poly2, bbox2 ): - +def polyInPoly(poly1, bbox1, poly2, bbox2): ''' - Determine if polygon poly2 = [[x1,y1],[x2,y2],...] - contains polygon poly1. - - The bounding box information, bbox=[xmin, xmax, ymin, ymax] - is optional. When supplied it can be used to perform rejections. - Note that one bounding box containing another is not sufficient - to imply that one polygon contains another. It's necessary, but - not sufficient. + Determine if polygon poly2 contains polygon poly1. + The bounding box information is optional and used for rejections. ''' - - # See if poly1's bboundin box is NOT contained by poly2's bounding box - # if it isn't, then poly1 cannot be contained by poly2. - - if ( not bbox1 is None ) and ( not bbox2 is None ): - if not bboxInBBox( bbox1, bbox2 ): + if (bbox1 is not None) and (bbox2 is not None): + if not bboxInBBox(bbox1, bbox2): return False - # To see if poly1 is contained by poly2, we need to ensure that each - # vertex of poly1 lies on or within poly2 - for p in poly1: - if not pointInPoly( p, poly2, bbox2 ): + if not pointInPoly(p, poly2, bbox2): return False - # Looks like poly1 is contained on or in Poly2 - return True -def subdivideCubicPath( sp, flat, i=1 ): - +def subdivideCubicPath(sp, flat, i=1): ''' - [ Lifted from eggbot.py with impunity ] - Break up a bezier curve into smaller curves, each of which - is approximately a straight line within a given tolerance - (the "smoothness" defined by [flat]). - - This is a modified version of cspsubdiv.cspsubdiv(): rewritten - because recursion-depth errors on complicated line segments - could occur with cspsubdiv.cspsubdiv(). + approximates a straight line within a given tolerance. + Updated to use `inkex.bezier.maxdist`. ''' - while True: while True: - if i >= len( sp ): + if i >= len(sp): return p0 = sp[i - 1][1] @@ -215,206 +165,141 @@ def subdivideCubicPath( sp, flat, i=1 ): p2 = sp[i][0] p3 = sp[i][1] - b = ( p0, p1, p2, p3 ) + b = (p0, p1, p2, p3) - if cspsubdiv.maxdist( b ) > flat: + # Updated: Using inkex.bezier.maxdist for maximum distance calculation + if inkex.bezier.maxdist(b) > flat: break i += 1 - one, two = bezmisc.beziersplitatt( b, 0.5 ) + # Updated: Using inkex.bezier.beziersplitatt to split the bezier curve + one, two = inkex.bezier.beziersplitatt(b, 0.5) sp[i - 1][2] = one[1] sp[i][0] = two[2] p = [one[2], one[3], two[1]] sp[i:1] = [p] -class OpenSCAD( inkex.Effect ): - - def __init__( self ): - - inkex.Effect.__init__( self ) - - self.OptionParser.add_option( "--tab", #NOTE: value is not used. - action="store", type="string", - dest="tab", default="splash", - help="The active tab when Apply was pressed" ) - - self.OptionParser.add_option('--smoothness', dest='smoothness', - type='float', default=float( 0.02 ), action='store', - help='Curve smoothing (less for more)' ) +class OpenSCAD(inkex.EffectExtension): + def __init__(self): + super().__init__() - self.OptionParser.add_option('--fname', dest='fname', - type='string', default='~/inkscape.scad', - action='store', - help='Curve smoothing (less for more)' ) + self.arg_parser.add_argument('--smoothness', type=float, default=0.02, help='Curve smoothing (less for more)') + self.arg_parser.add_argument('--fname', default='~/inkscape.scad', help='Output filename for OpenSCAD') - self.cx = float( DEFAULT_WIDTH ) / 2.0 - self.cy = float( DEFAULT_HEIGHT ) / 2.0 - self.xmin, self.xmax = ( 1.0E70, -1.0E70 ) - self.ymin, self.ymax = ( 1.0E70, -1.0E70 ) + self.cx = float(DEFAULT_WIDTH) / 2.0 + self.cy = float(DEFAULT_HEIGHT) / 2.0 + self.xmin, self.xmax = (1.0E70, -1.0E70) + self.ymin, self.ymax = (1.0E70, -1.0E70) - # Dictionary of paths we will construct. It's keyed by the SVG node - # it came from. Such keying isn't too useful in this specific case, - # but it can be useful in other applications when you actually want - # to go back and update the SVG document self.paths = {} - - # Output file handling self.call_list = [] - self.pathid = int( 0 ) + self.pathid = int(0) - # Output file self.f = None - # For handling an SVG viewbox attribute, we will need to know the - # values of the document's width and height attributes as well - # as establishing a transform from the viewbox to the display. - - self.docWidth = float( DEFAULT_WIDTH ) - self.docHeight = float( DEFAULT_HEIGHT ) + self.docWidth = float(DEFAULT_WIDTH) + self.docHeight = float(DEFAULT_HEIGHT) self.docTransform = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]] - # Dictionary of warnings issued. This to prevent from warning - # multiple times about the same problem self.warnings = {} - def getLength( self, name, default ): - + def getLength(self, name, default): ''' - Get the attribute with name "name" and default value "default" - Parse the attribute into a value and associated units. Then, accept - units of cm, ft, in, m, mm, pc, or pt. Convert to pixels. - - Note that SVG defines 90 px = 1 in = 25.4 mm. + Get the attribute with name "name" and convert to pixels. ''' - - str = self.document.getroot().get( name ) - if str: - v, u = parseLengthWithUnits( str ) + value = self.svg.get(name) + if value: + v, u = parseLengthWithUnits(value) if not v: - # Couldn't parse the value return None - elif ( u == 'mm' ): - return float( v ) * ( 90.0 / 25.4 ) - elif ( u == 'cm' ): - return float( v ) * ( 90.0 * 10.0 / 25.4 ) - elif ( u == 'm' ): - return float( v ) * ( 90.0 * 1000.0 / 25.4 ) - elif ( u == 'in' ): - return float( v ) * 90.0 - elif ( u == 'ft' ): - return float( v ) * 12.0 * 90.0 - elif ( u == 'pt' ): - # Use modern "Postscript" points of 72 pt = 1 in instead - # of the traditional 72.27 pt = 1 in - return float( v ) * ( 90.0 / 72.0 ) - elif ( u == 'pc' ): - return float( v ) * ( 90.0 / 6.0 ) - elif ( u == 'px' ): - return float( v ) + elif u == 'mm': + return float(v) * (90.0 / 25.4) + elif u == 'cm': + return float(v) * (90.0 * 10.0 / 25.4) + elif u == 'm': + return float(v) * (90.0 * 1000.0 / 25.4) + elif u == 'in': + return float(v) * 90.0 + elif u == 'ft': + return float(v) * 12.0 * 90.0 + elif u == 'pt': + return float(v) * (90.0 / 72.0) + elif u == 'pc': + return float(v) * (90.0 / 6.0) + elif u == 'px': + return float(v) else: - # Unsupported units return None else: - # No width specified; assume the default value - return float( default ) - - def getDocProps( self ): + return float(default) + def getDocProps(self): ''' Get the document's height and width attributes from the tag. - Use a default value in case the property is not present or is - expressed in units of percentages. ''' - - self.docHeight = self.getLength( 'height', DEFAULT_HEIGHT ) - self.docWidth = self.getLength( 'width', DEFAULT_WIDTH ) - if ( self.docHeight == None ) or ( self.docWidth == None ): + self.docHeight = self.getLength('height', DEFAULT_HEIGHT) + self.docWidth = self.getLength('width', DEFAULT_WIDTH) + if (self.docHeight is None) or (self.docWidth is None): return False else: return True - def handleViewBox( self ): - + def handleViewBox(self): ''' - Set up the document-wide transform in the event that the document has an SVG viewbox + Set up the document-wide transform in case of an SVG viewbox. ''' - if self.getDocProps(): - viewbox = self.document.getroot().get( 'viewBox' ) + viewbox = self.svg.get('viewBox') if viewbox: - vinfo = viewbox.strip().replace( ',', ' ' ).split( ' ' ) - if ( vinfo[2] != 0 ) and ( vinfo[3] != 0 ): - sx = self.docWidth / float( vinfo[2] ) - sy = self.docHeight / float( vinfo[3] ) - self.docTransform = simpletransform.parseTransform( 'scale(%f,%f)' % (sx, sy) ) - - def getPathVertices( self, path, node=None, transform=None ): + vinfo = viewbox.strip().replace(',', ' ').split(' ') + if float(vinfo[2]) != 0 and float(vinfo[3]) != 0: + sx = self.docWidth / float(vinfo[2]) + sy = self.docHeight / float(vinfo[3]) + self.docTransform = inkex.Transform(f'scale({sx},{sy})').matrix + def getPathVertices(self, path, node=None, transform=None): ''' - Decompose the path data from an SVG element into individual - subpaths, each subpath consisting of absolute move to and line - to coordinates. Place these coordinates into a list of polygon - vertices. + Decompose the path data into individual subpaths. ''' - - if ( not path ) or ( len( path ) == 0 ): - # Nothing to do + if (not path) or (len(path) == 0): return None - # parsePath() may raise an exception. This is okay - sp = simplepath.parsePath( path ) - if ( not sp ) or ( len( sp ) == 0 ): - # Path must have been devoid of any real content - return None - - # Get a cubic super path - p = cubicsuperpath.CubicSuperPath( sp ) - if ( not p ) or ( len( p ) == 0 ): - # Probably never happens, but... + try: + sp = inkex.Path(path).to_superpath() + except Exception as e: + inkex.utils.debug(f"Error parsing path: {e}") return None if transform: - simpletransform.applyTransformToPath( transform, p ) + sp = inkex.Path(sp).transform(transform).to_superpath() - # Now traverse the cubic super path subpath_list = [] subpath_vertices = [] - for sp in p: - - # We've started a new subpath - # See if there is a prior subpath and whether we should keep it - if len( subpath_vertices ): - subpath_list.append( [ subpath_vertices, [ sp_xmin, sp_xmax, sp_ymin, sp_ymax ] ] ) + for sub_path in sp: + if len(subpath_vertices): + subpath_list.append([subpath_vertices, [sp_xmin, sp_xmax, sp_ymin, sp_ymax]]) subpath_vertices = [] - subdivideCubicPath( sp, float( self.options.smoothness ) ) + subdivideCubicPath(sub_path, float(self.options.smoothness)) - # Note the first point of the subpath - first_point = sp[0][1] - subpath_vertices.append( first_point ) + first_point = sub_path[0][1] + subpath_vertices.append(first_point) sp_xmin = first_point[0] sp_xmax = first_point[0] sp_ymin = first_point[1] sp_ymax = first_point[1] - # See if the first and last points are identical - # OpenSCAD doesn't mind if we duplicate the first and last - # vertex, but our polygon in polygon algorithm may - n = len( sp ) - last_point = sp[n-1][1] - if ( first_point[0] == last_point[0] ) and ( first_point[1] == last_point[1] ): + n = len(sub_path) + last_point = sub_path[n-1][1] + if (first_point[0] == last_point[0]) and (first_point[1] == last_point[1]): n = n - 1 - # Traverse each point of the subpath - for csp in sp[1:n]: - - # Append the vertex to our list of vertices + for csp in sub_path[1:n]: pt = csp[1] - subpath_vertices.append( pt ) + subpath_vertices.append(pt) - # Track the bounding box of this subpath if pt[0] < sp_xmin: sp_xmin = pt[0] elif pt[0] > sp_xmax: @@ -424,8 +309,6 @@ def getPathVertices( self, path, node=None, transform=None ): elif pt[1] > sp_ymax: sp_ymax = pt[1] - # Track the bounding box of the overall drawing - # This is used for centering the polygons in OpenSCAD around the (x,y) origin if sp_xmin < self.xmin: self.xmin = sp_xmin if sp_xmax > self.xmax: @@ -435,454 +318,125 @@ def getPathVertices( self, path, node=None, transform=None ): if sp_ymax > self.ymax: self.ymax = sp_ymax - # Handle the final subpath - if len( subpath_vertices ): - subpath_list.append( [ subpath_vertices, [ sp_xmin, sp_xmax, sp_ymin, sp_ymax ] ] ) + if len(subpath_vertices): + subpath_list.append([subpath_vertices, [sp_xmin, sp_xmax, sp_ymin, sp_ymax]]) - if len( subpath_list ) > 0: + if len(subpath_list) > 0: self.paths[node] = subpath_list - def convertPath( self, node ): - - path = self.paths[node] - if ( path is None ) or ( len( path ) == 0 ): + def convertPath(self, node): + ''' + Generate an OpenSCAD module for this path. + ''' + path = self.paths.get(node) + if (path is None) or (len(path) == 0): return - # Determine which polys contain which - - contains = [ [] for i in range( len( path ) ) ] - contained_by = [ [] for i in range( len( path ) ) ] - - for i in range( 0, len( path ) ): - for j in range( i + 1, len( path ) ): - if polyInPoly( path[j][0], path[j][1], path[i][0], path[i][1] ): - # subpath i contains subpath j - contains[i].append( j ) - # subpath j is contained in subpath i - contained_by[j].append( i ) - elif polyInPoly( path[i][0], path[i][1], path[j][0], path[j][1] ): - # subpath j contains subpath i - contains[j].append( i ) - # subpath i is containd in subpath j - contained_by[i].append( j ) - - # Generate an OpenSCAD module for this path - id = node.get ( 'id', '' ) - if ( id is None ) or ( id == '' ): - id = str( self.pathid ) + 'x' + contains = [[] for _ in range(len(path))] + contained_by = [[] for _ in range(len(path))] + + for i in range(len(path)): + for j in range(i + 1, len(path)): + if polyInPoly(path[j][0], path[j][1], path[i][0], path[i][1]): + contains[i].append(j) + contained_by[j].append(i) + elif polyInPoly(path[i][0], path[i][1], path[j][0], path[j][1]): + contains[j].append(i) + contained_by[i].append(j) + + id = node.get('id', '') + if (id is None) or (id == ''): + id = str(self.pathid) + 'x' self.pathid += 1 else: - id = re.sub( '[^A-Za-z0-9_]+', '', id ) - scale = (1, -1) # We appear to be working in mm by this point + id = re.sub('[^A-Za-z0-9_]+', '', id) - # And add the call to the call list - self.call_list.append( '//polygon(points={0}_points, paths={0}_paths);\n'.format(id) ) + scale = (1, -1) + self.call_list.append(f'//polygon(points={id}_points, paths={id}_paths);\n') points = [] paths = [] - for i in range( 0, len( path ) ): - - # Skip this subpath if it is contained by another one - if len( contained_by[i] ) != 0: + for i in range(len(path)): + if len(contained_by[i]) != 0: continue subpath = path[i][0] - bbox = path[i][1] + bbox = path[i][1] one_path = [] for point in subpath: one_path.append(len(points)) - points.append((point[0] - self.cx, point[1] - self.cy )) + points.append((point[0] - self.cx, point[1] - self.cy)) paths.append(one_path) - if len( contains[i] ) != 0: + if len(contains[i]) != 0: for j in contains[i]: one_path = [] for point in path[j][0]: one_path.append(len(points)) - points.append((point[0] - self.cx, point[1] - self.cy )) + points.append((point[0] - self.cx, point[1] - self.cy)) paths.append(list(reversed(one_path))) points_str = "[{}]".format(", ".join(["[{:8f}, {:8f}]".format(x * scale[0], y * scale[1]) for (x, y) in points])) paths_str = "[{}]".format(", ".join(["[{}]".format(", ".join(["{:d}".format(i) for i in indices])) for indices in paths])) - self.f.write( '{}_points = {};\n'.format(id, points_str) ) - self.f.write( '{}_paths = {};\n'.format(id, paths_str) ) - - def recursivelyTraverseSvg( self, aNodeList, - matCurrent=[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]], - parent_visibility='visible' ): + self.f.write(f'{id}_points = {points_str};\n') + self.f.write(f'{id}_paths = {paths_str};\n') + def recursivelyTraverseSvg(self, aNodeList, matCurrent=[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]], parent_visibility='visible'): ''' - [ This too is largely lifted from eggbot.py ] - Recursively walk the SVG document, building polygon vertex lists - for each graphical element we support. - - Rendered SVG elements: - , , , , , , - - Supported SVG elements: - , - - Ignored SVG elements: - , , , , , - processing directives - - All other SVG elements trigger an error (including ) + for each graphical element. ''' - for node in aNodeList: - - # Ignore invisible nodes - v = node.get( 'visibility', parent_visibility ) + v = node.get('visibility', parent_visibility) if v == 'inherit': v = parent_visibility if v == 'hidden' or v == 'collapse': - pass - - # First apply the current matrix transform to this node's tranform - matNew = simpletransform.composeTransform( matCurrent, simpletransform.parseTransform( node.get( "transform" ) ) ) - - if node.tag == inkex.addNS( 'g', 'svg' ) or node.tag == 'g': - - self.recursivelyTraverseSvg( node, matNew, v ) - - elif node.tag == inkex.addNS( 'use', 'svg' ) or node.tag == 'use': - - # A element refers to another SVG element via an xlink:href="#blah" - # attribute. We will handle the element by doing an XPath search through - # the document, looking for the element with the matching id="blah" - # attribute. We then recursively process that element after applying - # any necessary (x,y) translation. - # - # Notes: - # 1. We ignore the height and width attributes as they do not apply to - # path-like elements, and - # 2. Even if the use element has visibility="hidden", SVG still calls - # for processing the referenced element. The referenced element is - # hidden only if its visibility is "inherit" or "hidden". - - refid = node.get( inkex.addNS( 'href', 'xlink' ) ) - if not refid: - pass - - # [1:] to ignore leading '#' in reference - path = '//*[@id="%s"]' % refid[1:] - refnode = node.xpath( path ) - if refnode: - x = float( node.get( 'x', '0' ) ) - y = float( node.get( 'y', '0' ) ) - # Note: the transform has already been applied - if ( x != 0 ) or (y != 0 ): - matNew2 = composeTransform( matNew, parseTransform( 'translate(%f,%f)' % (x,y) ) ) - else: - matNew2 = matNew - v = node.get( 'visibility', v ) - self.recursivelyTraverseSvg( refnode, matNew2, v ) - - elif node.tag == inkex.addNS( 'path', 'svg' ): - - path_data = node.get( 'd') - if path_data: - self.getPathVertices( path_data, node, matNew ) - - elif node.tag == inkex.addNS( 'rect', 'svg' ) or node.tag == 'rect': - - # Manually transform - # - # - # - # into - # - # - # - # I.e., explicitly draw three sides of the rectangle and the - # fourth side implicitly - - # Create a path with the outline of the rectangle - x = float( node.get( 'x' ) ) - y = float( node.get( 'y' ) ) - if ( not x ) or ( not y ): - pass - w = float( node.get( 'width', '0' ) ) - h = float( node.get( 'height', '0' ) ) - a = [] - a.append( ['M ', [x, y]] ) - a.append( [' l ', [w, 0]] ) - a.append( [' l ', [0, h]] ) - a.append( [' l ', [-w, 0]] ) - a.append( [' Z', []] ) - self.getPathVertices( simplepath.formatPath( a ), node, matNew ) - - elif node.tag == inkex.addNS( 'line', 'svg' ) or node.tag == 'line': - - # Convert - # - # - - x1 = float( node.get( 'x1' ) ) - y1 = float( node.get( 'y1' ) ) - x2 = float( node.get( 'x2' ) ) - y2 = float( node.get( 'y2' ) ) - if ( not x1 ) or ( not y1 ) or ( not x2 ) or ( not y2 ): - pass - a = [] - a.append( ['M ', [x1, y1]] ) - a.append( [' L ', [x2, y2]] ) - self.getPathVertices( simplepath.formatPath( a ), node, matNew ) - - elif node.tag == inkex.addNS( 'polyline', 'svg' ) or node.tag == 'polyline': - - # Convert - # - # - # - # to - # - # - # - # Note: we ignore polylines with no points - - pl = node.get( 'points', '' ).strip() - if pl == '': - pass - - pa = pl.split() - d = "".join( ["M " + pa[i] if i == 0 else " L " + pa[i] for i in range( 0, len( pa ) )] ) - self.getPathVertices( d, node, matNew ) - - elif node.tag == inkex.addNS( 'polygon', 'svg' ) or node.tag == 'polygon': - - # Convert - # - # - # - # to - # - # - # - # Note: we ignore polygons with no points - - pl = node.get( 'points', '' ).strip() - if pl == '': - pass - - pa = pl.split() - d = "".join( ["M " + pa[i] if i == 0 else " L " + pa[i] for i in range( 0, len( pa ) )] ) - d += " Z" - self.getPathVertices( d, node, matNew ) - - elif node.tag == inkex.addNS( 'ellipse', 'svg' ) or \ - node.tag == 'ellipse' or \ - node.tag == inkex.addNS( 'circle', 'svg' ) or \ - node.tag == 'circle': - - # Convert circles and ellipses to a path with two 180 degree arcs. - # In general (an ellipse), we convert - # - # - # - # to - # - # - # - # where - # - # X1 = CX - RX - # X2 = CX + RX - # - # Note: ellipses or circles with a radius attribute of value 0 are ignored - - if node.tag == inkex.addNS( 'ellipse', 'svg' ) or node.tag == 'ellipse': - rx = float( node.get( 'rx', '0' ) ) - ry = float( node.get( 'ry', '0' ) ) - else: - rx = float( node.get( 'r', '0' ) ) - ry = rx - if rx == 0 or ry == 0: - pass - - cx = float( node.get( 'cx', '0' ) ) - cy = float( node.get( 'cy', '0' ) ) - x1 = cx - rx - x2 = cx + rx - d = 'M %f,%f ' % ( x1, cy ) + \ - 'A %f,%f ' % ( rx, ry ) + \ - '0 1 0 %f,%f ' % ( x2, cy ) + \ - 'A %f,%f ' % ( rx, ry ) + \ - '0 1 0 %f,%f' % ( x1, cy ) - self.mapPathVertices( d, node, matNew ) - - elif node.tag == inkex.addNS( 'pattern', 'svg' ) or node.tag == 'pattern': - - pass - - elif node.tag == inkex.addNS( 'metadata', 'svg' ) or node.tag == 'metadata': - - pass - - elif node.tag == inkex.addNS( 'defs', 'svg' ) or node.tag == 'defs': - - pass - - elif node.tag == inkex.addNS( 'desc', 'svg' ) or node.tag == 'desc': - - pass - - elif node.tag == inkex.addNS( 'namedview', 'sodipodi' ) or node.tag == 'namedview': - - pass - - elif node.tag == inkex.addNS( 'eggbot', 'svg' ) or node.tag == 'eggbot': - - pass - - elif node.tag == inkex.addNS( 'text', 'svg' ) or node.tag == 'text': - - inkex.errormsg( 'Warning: unable to draw text, please convert it to a path first.' ) - - pass - - elif node.tag == inkex.addNS( 'title', 'svg' ) or node.tag == 'title': - - pass - - elif node.tag == inkex.addNS( 'image', 'svg' ) or node.tag == 'image': - - if not self.warnings.has_key( 'image' ): - inkex.errormsg( 'Warning: unable to draw bitmap images; ' + - 'please convert them to line art first. Consider using the "Trace bitmap..." ' + - 'tool of the "Path" menu. Mac users please note that some X11 settings may ' + - 'cause cut-and-paste operations to paste in bitmap copies.' ) - self.warnings['image'] = 1 - pass - - elif node.tag == inkex.addNS( 'pattern', 'svg' ) or node.tag == 'pattern': - - pass - - elif node.tag == inkex.addNS( 'radialGradient', 'svg' ) or node.tag == 'radialGradient': - - # Similar to pattern - pass - - elif node.tag == inkex.addNS( 'linearGradient', 'svg' ) or node.tag == 'linearGradient': - - # Similar in pattern - pass - - elif node.tag == inkex.addNS( 'style', 'svg' ) or node.tag == 'style': - - # This is a reference to an external style sheet and not the value - # of a style attribute to be inherited by child elements - pass - - elif node.tag == inkex.addNS( 'cursor', 'svg' ) or node.tag == 'cursor': - - pass - - elif node.tag == inkex.addNS( 'color-profile', 'svg' ) or node.tag == 'color-profile': - - # Gamma curves, color temp, etc. are not relevant to single color output - pass - - elif not isinstance( node.tag, basestring ): - - # This is likely an XML processing instruction such as an XML - # comment. lxml uses a function reference for such node tags - # and as such the node tag is likely not a printable string. - # Further, converting it to a printable string likely won't - # be very useful. - - pass - - else: + continue - inkex.errormsg( 'Warning: unable to draw object <%s>, please convert it to a path first.' % node.tag ) - pass + matNew = inkex.Transform(matCurrent) @ inkex.Transform(node.get("transform")) + if node.tag == inkex.addNS('g', 'svg') or node.tag == 'g': + self.recursivelyTraverseSvg(node, matNew, v) - def recursivelyGetEnclosingTransform( self, node ): + elif node.tag == inkex.addNS('path', 'svg'): + path_data = node.get('d') + if path_data: + self.getPathVertices(path_data, node, matNew) + def effect(self): ''' - Determine the cumulative transform which node inherits from - its chain of ancestors. + Main effect execution. ''' - node = node.getparent() - if node is not None: - parent_transform = self.recursivelyGetEnclosingTransform( node ) - node_transform = node.get( 'transform', None ) - if node_transform is None: - return parent_transform - else: - tr = simpletransform.parseTransform( node_transform ) - if parent_transform is None: - return tr - else: - return simpletransform.composeTransform( parent_transform, tr ) - else: - return self.docTransform - - def effect( self ): - - # Viewbox handling self.handleViewBox() + self.recursivelyTraverseSvg(self.svg.root, self.docTransform) + self.cx = self.xmin + (self.xmax - self.xmin) / 2.0 + self.cy = self.ymin + (self.ymax - self.ymin) / 2.0 - # First traverse the document (or selected items), reducing - # everything to line segments. If working on a selection, - # then determine the selection's bounding box in the process. - # (Actually, we just need to know it's extrema on the x-axis.) - - if self.options.ids: - # Traverse the selected objects - for id in self.options.ids: - transform = self.recursivelyGetEnclosingTransform( self.selected[id] ) - self.recursivelyTraverseSvg( [self.selected[id]], transform ) - else: - # Traverse the entire document building new, transformed paths - self.recursivelyTraverseSvg( self.document.getroot(), self.docTransform ) - - # Determine the center of the drawing's bounding box - self.cx = self.xmin + ( self.xmax - self.xmin ) / 2.0 - self.cy = self.ymin + ( self.ymax - self.ymin ) / 2.0 - - # Determine which polygons lie entirely within other polygons try: - if '/' == os.sep: - self.f = open( os.path.expanduser( self.options.fname ), 'w') - else: - self.f = open( os.path.expanduser( self.options.fname ).replace('/', os.sep), 'w') - + self.f = open(os.path.expanduser(self.options.fname), 'w') self.f.write('''// Automatically generated using the Inkscape to OpenSCAD Converter // Variable names are of the form _points and -// _paths. As a result, you can associate a polygon in this +// _paths. As a result, you can associate a polygon in this // OpenSCAD program with the corresponding SVG element in the Inkscape document -// by looking for the XML element with the attribute id=\"inkscape-path-id\". -''' ) +// by looking for the XML element with the attribute id="inkscape-path-id". +''') for key in self.paths: - self.f.write( '\n' ) - self.convertPath( key ) + self.f.write('\n') + self.convertPath(key) - # Now output the list of modules to call - self.f.write( '\n' ) + self.f.write('\n') for call in self.call_list: - self.f.write( call ) + self.f.write(call) self.f.close() - - except IOError: - inkex.errormsg( 'Unable to open the file ' + self.options.fname ) + inkex.errormsg(f'Unable to open the file {self.options.fname}') if __name__ == '__main__': - e = OpenSCAD() - e.affect() + e.run() diff --git a/bin/serve.py b/bin/serve.py index 37d6965..c6a6138 100755 --- a/bin/serve.py +++ b/bin/serve.py @@ -26,7 +26,7 @@ def do_GET(self): self.wfile.write(b) else: key_filename = query_components["key"][0] - if not re.match(r"scad/[A-Za-z0-9_]+.scad$", key_filename): + if not re.match(r"scad/[A-Za-z0-9_-]+\.scad$", key_filename): self.send_response(400) self.send_header("Content-type", "text/plain; charset=utf-8") self.end_headers() diff --git a/resources/best.svg b/resources/best.svg index d710082..cd8ec86 100644 --- a/resources/best.svg +++ b/resources/best.svg @@ -2,20 +2,20 @@ + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="best.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" /> @@ -44,7 +47,7 @@ image/svg+xml - + @@ -97,7 +100,7 @@ inkscape:label="#path6440-9" /> A + style="stroke-width:0.264583px">A B + style="stroke-width:0.264583px">B C + style="stroke-width:0.264583px">C FM - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - D - DD - E - F - G - H - J - K - L - M - Q - + style="stroke-width:0.264583px">FM diff --git a/resources/falcon.svg b/resources/falcon.svg new file mode 100644 index 0000000..703cee9 --- /dev/null +++ b/resources/falcon.svg @@ -0,0 +1,394 @@ + + + +image/svg+xml diff --git a/resources/lockwood.svg b/resources/lockwood.svg new file mode 100644 index 0000000..e5eb3ca --- /dev/null +++ b/resources/lockwood.svg @@ -0,0 +1,443 @@ + + + +image/svg+xml diff --git a/resources/medeco.svg b/resources/medeco.svg index ee72695..f51f79b 100644 --- a/resources/medeco.svg +++ b/resources/medeco.svg @@ -2,7 +2,7 @@ image/svg+xml + + + + + + + + + + + - - - - - - - - - - -A15151515A1517A151715421542151815181543154315171517M3M31655165516441644A16381638 + y="73.019707" + x="-45.34626 -43.18116 -41.017921 -38.85096">1638 diff --git a/resources/schlage.svg b/resources/schlage.svg index fd776c0..d192c0a 100644 --- a/resources/schlage.svg +++ b/resources/schlage.svg @@ -7,7 +7,7 @@ viewBox="0 0 210 297" version="1.1" id="svg61366" - inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" sodipodi:docname="schlage.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" @@ -24,16 +24,16 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="480.5" - inkscape:cy="44" + inkscape:zoom="0.70710678" + inkscape:cx="172.53405" + inkscape:cy="425.67828" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1920" - inkscape:window-height="1017" - inkscape:window-x="1912" - inkscape:window-y="-8" + inkscape:window-height="1029" + inkscape:window-x="0" + inkscape:window-y="27" inkscape:window-maximized="1" inkscape:showpageshadow="2" inkscape:pagecheckerboard="0" @@ -164,14 +164,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-418.553300,-425.383600)" id="uset" /> - - - @@ -180,14 +172,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-284.260700,-540.054300)" id="useY" /> - - - @@ -244,14 +228,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-188.898000,-389.494900)" id="useV" /> - - - @@ -308,14 +284,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-324.159100,-389.494900)" id="usew" /> - - - @@ -324,14 +292,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-324.133400,-387.687700)" id="useYP" /> - - - @@ -340,14 +300,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-188.925200,-387.869100)" id="usepC" /> - - - @@ -428,14 +380,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-279.070600,-389.494900)" id="useE" /> - - - @@ -540,14 +484,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-229.213800,-397.413000)" id="useH" /> - - - @@ -564,14 +500,6 @@ transform="matrix(1.000000,0.000000,0.000000,1.000000,-188.925200,-387.869100)" id="usec-6" /> - - - @@ -606,7 +534,7 @@ inkscape:groupmode="layer" inkscape:label="Layer 1"> @@ -850,7 +778,7 @@ x="36.851078 38.871555" style="stroke-width:0.352778">CP @@ -865,7 +793,7 @@ x="51.868359 53.888836 55.717648" style="stroke-width:0.352778">CEP @@ -880,7 +808,7 @@ style="stroke-width:0.352778" y="265.68646">EFP @@ -895,7 +823,7 @@ x="100.62002 102.35567" style="stroke-width:0.352778">FP @@ -910,7 +838,7 @@ x="115.49069 117.19969 119.32665" style="stroke-width:0.352778">FGP @@ -925,12 +853,12 @@ x="68.735062 70.563866" style="stroke-width:0.352778">EP @@ -945,7 +873,7 @@ x="147.18733 148.8298" style="stroke-width:0.352778">LP diff --git a/scad/X103-KW12.scad b/scad/X103-KW12.scad index b612f46..78b967a 100644 --- a/scad/X103-KW12.scad +++ b/scad/X103-KW12.scad @@ -1,72 +1,72 @@ -use -include - -module X103_KW12(bitting="", - outline_name="X103-KW12", - warding_name="X103-KW12", - series_name="5001-6000") { - - name = "X103_KW12"; - - - /* - Bitting is specified from bow to tip, 0-4, with 0 being the shallowest cut and 1 being the deepest. - The 4th (5th?) entry in the depth table that seems way higher is the key I was trying to replicate seemed to skip the first cut location so I added that as a "Skip" value to use. - Example: 412221 - - This model is for a Kawasaki Key sometimes called a X103 or a KA14 I think - I pulled the outline and such from the motorcycle guide I have added and the main 2 depth and cut location tables from the Framon Key depth guide (v8) - */ - outlines_k = ["X103"]; - wardings_k = ["X103"]; - - wardingHeight_min = min([for(e=warding_points) e[1]]); - wardingHeight_max = max([for(e=warding_points) e[1]]); - wardingHeight = wardingHeight_max-wardingHeight_min; - - offset = [-outline_points[23][0], -outline_points[23][1]]; - depth_table= - series_name=="801-845" ? [for(i=[.255, .235, .215, .195, 20]) i*25.4] : - series_name=="5001-6000"? [for(i=[.260, .240, .220, .200, 20]) i*25.4] : - series_name=="custom" ? [for(i=[.245, .215, .220, .200, 20]) i*25.4] :[]; - cut_locations= - series_name=="801-845" ? [for(i=[.1, .2, .3, .4, .5, .6]) i*25.4] : - series_name=="5001-6000"? [for(i=[.1, .2, .3, .4, .5, .6]) i*25.4] : - series_name=="custom" ? [for(i=[.1, .2, .3, .4, .5, .6]) i*25.4] :[]; - - // Kwikset starts with 1?? - - heights = key_code_to_heights(bitting, depth_table); - - difference() - { - if($children == 0) { - key_blank(outline_points, - warding_points, - outline_paths=outline_paths, - engrave_right_points=engraving_points, - engrave_right_paths=engraving_paths, - engrave_left_points=engraving_points, - engrave_left_paths=engraving_paths, - offset=offset, - plug_diameter=12.7); - } else { - children(0); - } - key_bitting(heights, cut_locations, 1.4, 90); - //This is my attempt at adding double sidded cutting Hopefully it works for others. - translate([0,0,wardingHeight]){ - rotate([0,180,0]){ - key_bitting(heights, cut_locations, 1.4, 90); - } - } - } -} - -// Defaults -//bitting="412221"; -bitting =""; -outline="X103-KW12"; -warding="X103-KW12"; -series_name="5001-6000"; -X103_KW12(bitting, outline, warding, series_name); +use +include + +module X103_KW12(bitting="", + outline_name="X103-KW12", + warding_name="X103-KW12", + series_name="5001-6000") { + + name = "X103_KW12"; + + + /* + Bitting is specified from bow to tip, 0-4, with 0 being the shallowest cut and 1 being the deepest. + The 4th (5th?) entry in the depth table that seems way higher is the key I was trying to replicate seemed to skip the first cut location so I added that as a "Skip" value to use. + Example: 412221 + + This model is for a Kawasaki Key sometimes called a X103 or a KA14 I think + I pulled the outline and such from the motorcycle guide I have added and the main 2 depth and cut location tables from the Framon Key depth guide (v8) + */ + outlines_k = ["X103"]; + wardings_k = ["X103"]; + + wardingHeight_min = min([for(e=warding_points) e[1]]); + wardingHeight_max = max([for(e=warding_points) e[1]]); + wardingHeight = wardingHeight_max-wardingHeight_min; + + offset = [-outline_points[23][0], -outline_points[23][1]]; + depth_table= + series_name=="801-845" ? [for(i=[.255, .235, .215, .195, 20]) i*25.4] : + series_name=="5001-6000"? [for(i=[.260, .240, .220, .200, 20]) i*25.4] : + series_name=="custom" ? [for(i=[.245, .215, .220, .200, 20]) i*25.4] :[]; + cut_locations= + series_name=="801-845" ? [for(i=[.1, .2, .3, .4, .5, .6]) i*25.4] : + series_name=="5001-6000"? [for(i=[.1, .2, .3, .4, .5, .6]) i*25.4] : + series_name=="custom" ? [for(i=[.1, .2, .3, .4, .5, .6]) i*25.4] :[]; + + // Kwikset starts with 1?? + + heights = key_code_to_heights(bitting, depth_table); + + difference() + { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + engrave_right_points=engraving_points, + engrave_right_paths=engraving_paths, + engrave_left_points=engraving_points, + engrave_left_paths=engraving_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations, 1.4, 90); + //This is my attempt at adding double sidded cutting Hopefully it works for others. + translate([0,0,wardingHeight]){ + rotate([0,180,0]){ + key_bitting(heights, cut_locations, 1.4, 90); + } + } + } +} + +// Defaults +//bitting="412221"; +bitting =""; +outline="X103-KW12"; +warding="X103-KW12"; +series_name="5001-6000"; +X103_KW12(bitting, outline, warding, series_name); \ No newline at end of file diff --git a/scad/best.gen.scad b/scad/best.gen.scad deleted file mode 100644 index 47759ca..0000000 --- a/scad/best.gen.scad +++ /dev/null @@ -1,2286 +0,0 @@ -// Automatically generated using the Inkscape to OpenSCAD Converter -// Variable names are of the form _points and -// _paths. As a result, you can associate a polygon in this -// OpenSCAD program with the corresponding SVG element in the Inkscape document -// by looking for the XML element with the attribute id="inkscape-path-id". - -outline_points = [[-53.824685, -4.963507], [-61.504373, -6.244757], [-68.865701, -8.805307], [-70.144998, -9.764287], [-71.105935, -11.043588], [-73.664529, -20.963507], [-75.584451, -30.883427], [-76.545388, -33.123667], [-79.105935, -34.404917], [-83.584451, -35.684207], [-88.064919, -37.924447], [-91.584451, -41.443977], [-93.824685, -45.604137], [-95.105935, -50.404917], [-95.105935, -55.203747], [-93.824685, -60.004527], [-91.584451, -64.164677], [-88.064919, -67.684207], [-83.584451, -70.244757], [-79.105935, -71.524057], [-76.545388, -72.484997], [-75.584451, -74.725227], [-73.664529, -84.645147], [-71.105935, -94.565067], [-70.144998, -96.164677], [-68.865701, -97.123667], [-61.504373, -99.363897], [-53.824685, -100.645147], [-46.144998, -100.645147], [-38.465310, -99.363897], [-31.424295, -97.123667], [-29.824687, -96.164677], [-28.865697, -94.565067], [-26.305157, -83.363897], [-24.064917, -72.164677], [-23.424297, -70.565067], [-22.144997, -69.283817], [-20.225077, -68.644657], [110.972953, -68.644657], [112.575703, -68.324837], [113.534693, -67.363897], [113.855003, -65.764287], [113.855003, -59.684207], [114.495623, -58.404917], [115.774923, -57.764287], [117.374533, -57.764287], [118.974143, -57.123667], [119.935083, -55.203747], [120.255393, -52.645147], [119.614773, -50.404917], [107.134303, -38.244757], [105.855003, -37.283817], [104.255393, -36.964657], [-21.025857, -36.964657], [-22.465307, -36.484997], [-23.744607, -35.043587], [-24.064917, -33.443977], [-26.305157, -22.244757], [-28.865697, -11.043587], [-29.824687, -9.764287], [-31.424295, -8.805307], [-38.465310, -6.244757], [-46.144998, -4.963507], [-76.545388, -42.404917], [-73.344216, -43.043587], [-70.465310, -44.324837], [-68.225076, -46.565067], [-66.625466, -49.764287], [-66.305154, -52.963507], [-66.625466, -56.164677], [-68.225076, -59.043587], [-70.465310, -61.283817], [-73.344216, -62.883427], [-76.545388, -63.203747], [-79.744607, -62.883427], [-82.625466, -61.283817], [-85.184060, -59.043587], [-86.465310, -56.164677], [-87.105935, -52.963507], [-86.465310, -49.764287], [-85.184060, -46.565067], [-82.625466, -44.324837], [-79.744607, -43.043588]]; -outline_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62], [82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63]]; - -engrave_points = [[-104.084064, 99.713814], [-105.946730, 100.306481], [-107.894027, 100.645148], [-109.841431, 100.645148], [-111.704061, 100.306481], [-113.566728, 99.713814], [-113.905394, 99.375148], [-114.582727, 96.835149], [-115.090762, 94.210482], [-115.344727, 93.617817], [-115.768060, 93.109816], [-116.445393, 92.855817], [-117.546060, 92.601816], [-118.562060, 92.009150], [-119.408726, 91.162484], [-120.001393, 90.146484], [-120.255393, 89.045817], [-120.255393, 87.860485], [-120.001393, 86.759817], [-119.408726, 85.743819], [-118.562060, 84.981819], [-117.546060, 84.389151], [-116.445393, 84.050486], [-115.768060, 83.881152], [-115.344727, 83.373153], [-115.090762, 82.780485], [-114.582727, 80.155820], [-113.905394, 77.615821], [-113.566728, 77.277153], [-111.704061, 76.599821], [-109.841431, 76.345821], [-107.894027, 76.345821], [-105.946730, 76.599821], [-104.084064, 77.277153], [-103.745397, 77.615821], [-102.898730, 81.171819], [-102.306063, 84.812485], [-102.136730, 88.453151], [-102.306063, 92.178483], [-102.898730, 95.819150], [-103.745397, 99.375149]]; -engrave_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40]]; - -warding_fm_points = [[-25.484517, 85.235751], [-25.484517, 85.997751], [-24.251397, 87.183087], [-24.251397, 87.606412], [-25.638657, 89.469082], [-25.638657, 92.686411], [-26.486397, 92.686411], [-26.486397, 89.807761], [-25.561557, 88.707091], [-25.330387, 88.283761], [-25.253287, 87.775751], [-25.330387, 87.267752], [-25.561557, 86.844411], [-26.255187, 85.828421], [-26.486397, 85.659081], [-26.486397, 84.304412], [-25.022097, 84.304412], [-25.022097, 85.151066]]; -warding_fm_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]]; - -warding_a_points = [[-60.489095, 84.854745], [-60.489095, 84.304412], [-61.722309, 84.304412], [-62.724295, 84.304412], [-62.724295, 85.405080], [-61.259887, 88.199079], [-62.724295, 88.876413], [-62.724295, 92.686411], [-61.568157, 92.686411], [-61.568157, 89.215080], [-60.489095, 88.622412], [-60.489095, 87.945079], [-61.491081, 85.913079], [-61.491081, 85.235747]]; -warding_a_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]]; - -warding_b_points = [[-49.627860, 85.151081], [-49.627860, 86.167080], [-48.749824, 87.183080], [-48.749824, 88.029744], [-49.787502, 89.384411], [-49.787502, 92.686411], [-50.984824, 92.686411], [-50.984824, 89.045744], [-49.787502, 87.606411], [-50.984824, 86.336414], [-50.984824, 84.304412], [-49.148931, 84.304412], [-49.148931, 85.151081]]; -warding_b_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]; - -warding_c_points = [[-41.850002, 87.013745], [-40.608335, 88.114411], [-41.850002, 88.791710], [-41.850002, 92.686411], [-40.773897, 92.686411], [-40.773897, 89.469078], [-39.615002, 88.707078], [-39.615002, 87.606411], [-40.608335, 86.759745], [-40.608335, 85.320377], [-40.111669, 85.320377], [-40.111669, 84.304412], [-41.850002, 84.304412]]; -warding_c_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]; - -path17423_points = [[-109.054457, 10.860302], [-104.821123, 10.860302]]; -path17423_paths = [[0, 1]]; - -path17421_points = [[-111.340457, 10.860302], [-113.203123, 10.860302]]; -path17421_paths = [[0, 1]]; - -path17419_points = [[-109.223790, 10.775633], [-104.821123, 10.775633]]; -path17419_paths = [[0, 1]]; - -path17417_points = [[-111.255790, 10.775633], [-113.203123, 10.775633]]; -path17417_paths = [[0, 1]]; - -path17415_points = [[-109.393123, 10.606302], [-104.821123, 10.606302]]; -path17415_paths = [[0, 1]]; - -path17413_points = [[-111.171123, 10.606302], [-113.203123, 10.606302]]; -path17413_paths = [[0, 1]]; - -path17411_points = [[-109.562457, 10.521633], [-104.821123, 10.521633]]; -path17411_paths = [[0, 1]]; - -path17409_points = [[-111.086457, 10.521633], [-113.203123, 10.521633]]; -path17409_paths = [[0, 1]]; - -path17407_points = [[-109.731790, 10.352303], [-104.821123, 10.352303]]; -path17407_paths = [[0, 1]]; - -path17405_points = [[-111.001790, 10.352303], [-113.203123, 10.352303]]; -path17405_paths = [[0, 1]]; - -path17403_points = [[-109.901123, 10.267632], [-104.821123, 10.267632]]; -path17403_paths = [[0, 1]]; - -path17401_points = [[-110.917123, 10.267632], [-113.203123, 10.267632]]; -path17401_paths = [[0, 1]]; - -path17399_points = [[-109.985790, 10.098302], [-104.821123, 10.098302]]; -path17399_paths = [[0, 1]]; - -path17397_points = [[-110.832457, 10.098302], [-113.203123, 10.098302]]; -path17397_paths = [[0, 1]]; - -path17395_points = [[-110.155123, 10.013632], [-104.821123, 10.013632]]; -path17395_paths = [[0, 1]]; - -path17393_points = [[-110.663123, 10.013632], [-113.118457, 10.013632]]; -path17393_paths = [[0, 1]]; - -path17391_points = [[-110.324457, 9.844302], [-104.821123, 9.844302]]; -path17391_paths = [[0, 1]]; - -path17389_points = [[-110.578457, 9.844302], [-113.118457, 9.844302]]; -path17389_paths = [[0, 1]]; - -path17387_points = [[-110.493790, 9.759633], [-108.800457, 9.759633]]; -path17387_paths = [[0, 1]]; - -path17385_points = [[-110.493790, 9.759633], [-113.118457, 9.759633]]; -path17385_paths = [[0, 1]]; - -path17383_points = [[-113.118457, 9.590303], [-108.969790, 9.590303]]; -path17383_paths = [[0, 1]]; - -path17381_points = [[-109.139123, 9.505632], [-111.933123, 9.505632]]; -path17381_paths = [[0, 1]]; - -path17379_points = [[-112.271790, 9.505632], [-113.118457, 9.505632]]; -path17379_paths = [[0, 1]]; - -path17377_points = [[-111.848457, 9.336302], [-109.308457, 9.336302]]; -path17377_paths = [[0, 1]]; - -path17375_points = [[-112.271790, 9.336302], [-113.033790, 9.336302]]; -path17375_paths = [[0, 1]]; - -path17373_points = [[-111.679123, 9.251632], [-109.477790, 9.251632]]; -path17373_paths = [[0, 1]]; - -path17371_points = [[-112.271790, 9.251632], [-113.033790, 9.251632]]; -path17371_paths = [[0, 1]]; - -path17369_points = [[-111.594457, 9.082302], [-109.647123, 9.082302]]; -path17369_paths = [[0, 1]]; - -path17367_points = [[-112.271790, 9.082302], [-113.033790, 9.082302]]; -path17367_paths = [[0, 1]]; - -path17365_points = [[-111.509790, 8.997633], [-109.816457, 8.997633]]; -path17365_paths = [[0, 1]]; - -path17363_points = [[-109.985790, 8.828303], [-111.425123, 8.828303]]; -path17363_paths = [[0, 1]]; - -path17361_points = [[-111.340457, 8.743632], [-110.155123, 8.743632]]; -path17361_paths = [[0, 1]]; - -path17359_points = [[-111.425123, 10.944973], [-113.203123, 10.944973]]; -path17359_paths = [[0, 1]]; - -path17357_points = [[-111.425123, 10.944973], [-110.493790, 9.759633], [-108.969790, 10.944973]]; -path17357_paths = [[0, 1, 2]]; - -path17355_points = [[-108.715790, 9.759633], [-104.821123, 9.759633]]; -path17355_paths = [[0, 1]]; - -path17353_points = [[-104.821123, 10.944973], [-108.969790, 10.944973]]; -path17353_paths = [[0, 1]]; - -path17351_points = [[-108.715790, 9.759633], [-110.155123, 8.658973]]; -path17351_paths = [[0, 1]]; - -path17349_points = [[-111.340457, 8.658973], [-111.933123, 9.505632]]; -path17349_paths = [[0, 1]]; - -path17347_points = [[-113.033790, 9.082302], [-113.203123, 10.944973]]; -path17347_paths = [[0, 1]]; - -path17345_points = [[-112.271790, 9.505632], [-111.933123, 9.505632]]; -path17345_paths = [[0, 1]]; - -path17343_points = [[-111.340457, 8.658973], [-110.155123, 8.658973]]; -path17343_paths = [[0, 1]]; - -path17341_points = [[-112.271790, 9.082302], [-112.271790, 9.505632]]; -path17341_paths = [[0, 1]]; - -path17339_points = [[-112.271790, 9.082302], [-113.033790, 9.082302]]; -path17339_paths = [[0, 1]]; - -path17337_points = [[-104.821123, 9.759633], [-104.821123, 10.944973]]; -path17337_paths = [[0, 1]]; - -path17125_points = [[-83.294279, 11.486833], [-82.278279, 11.486833]]; -path17125_paths = [[0, 1]]; - -path17123_points = [[-82.362945, 9.624172], [-83.124945, 9.624172], [-83.294279, 11.486832]]; -path17123_paths = [[0, 1, 2]]; - -path17121_points = [[-82.278279, 11.486833], [-81.177612, 9.962833]]; -path17121_paths = [[0, 1]]; - -path17119_points = [[-81.939612, 10.047503], [-82.362945, 10.047503], [-82.362945, 9.624173]]; -path17119_paths = [[0, 1, 2]]; - -path17117_points = [[-81.939612, 10.047503], [-81.262279, 9.031503], [-80.415612, 9.031503], [-78.976279, 10.216833]]; -path17117_paths = [[0, 1, 2, 3]]; - -path17115_points = [[-79.145612, 11.486833], [-81.092945, 9.962833], [-81.177615, 9.962833], [-81.092945, 9.962833]]; -path17115_paths = [[0, 1, 2, 3]]; - -path17113_points = [[-79.145612, 11.486833], [-74.912279, 11.486833]]; -path17113_paths = [[0, 1]]; - -path17111_points = [[-74.912279, 10.216833], [-78.976279, 10.216833]]; -path17111_paths = [[0, 1]]; - -path17109_points = [[-74.912279, 10.216833], [-74.912279, 11.486833]]; -path17109_paths = [[0, 1]]; - -path17107_points = [[-80.415612, 9.031502], [-81.262279, 9.031502]]; -path17107_paths = [[0, 1]]; - -path17105_points = [[-81.346945, 9.200832], [-80.246279, 9.200832]]; -path17105_paths = [[0, 1]]; - -path17103_points = [[-80.076945, 9.285503], [-81.431612, 9.285503]]; -path17103_paths = [[0, 1]]; - -path17101_points = [[-81.516279, 9.454833], [-79.907612, 9.454833]]; -path17101_paths = [[0, 1]]; - -path17099_points = [[-79.738279, 9.539502], [-81.600945, 9.539502]]; -path17099_paths = [[0, 1]]; - -path17097_points = [[-82.362945, 9.708832], [-83.124945, 9.708832]]; -path17097_paths = [[0, 1]]; - -path17095_points = [[-81.685612, 9.708832], [-79.568945, 9.708832]]; -path17095_paths = [[0, 1]]; - -path17093_points = [[-82.362945, 9.793502], [-83.209612, 9.793502]]; -path17093_paths = [[0, 1]]; - -path17091_points = [[-81.770279, 9.793502], [-79.484279, 9.793502]]; -path17091_paths = [[0, 1]]; - -path17089_points = [[-82.362945, 9.962832], [-83.209612, 9.962832]]; -path17089_paths = [[0, 1]]; - -path17087_points = [[-81.854945, 9.962832], [-81.177612, 9.962832], [-81.092942, 9.962832], [-79.314942, 9.962832]]; -path17087_paths = [[0, 1, 2, 3]]; - -path17085_points = [[-82.362945, 10.047503], [-83.209612, 10.047503]]; -path17085_paths = [[0, 1]]; - -path17083_points = [[-81.939612, 10.047503], [-81.262279, 10.047503]]; -path17083_paths = [[0, 1]]; - -path17081_points = [[-80.923612, 10.047503], [-79.145612, 10.047503]]; -path17081_paths = [[0, 1]]; - -path17079_points = [[-81.346945, 10.216833], [-83.209612, 10.216833]]; -path17079_paths = [[0, 1]]; - -path17077_points = [[-80.838945, 10.216833], [-78.976279, 10.216833]]; -path17077_paths = [[0, 1]]; - -path17075_points = [[-81.431612, 10.301502], [-83.209612, 10.301502]]; -path17075_paths = [[0, 1]]; - -path17073_points = [[-80.669612, 10.301502], [-74.912279, 10.301502]]; -path17073_paths = [[0, 1]]; - -path17071_points = [[-81.516279, 10.470833], [-83.294279, 10.470833]]; -path17071_paths = [[0, 1]]; - -path17069_points = [[-80.500279, 10.470833], [-74.912279, 10.470833]]; -path17069_paths = [[0, 1]]; - -path17067_points = [[-81.600945, 10.555502], [-83.294279, 10.555502]]; -path17067_paths = [[0, 1]]; - -path17065_points = [[-80.330945, 10.555502], [-74.912279, 10.555502]]; -path17065_paths = [[0, 1]]; - -path17063_points = [[-81.685612, 10.724832], [-83.294279, 10.724832]]; -path17063_paths = [[0, 1]]; - -path17061_points = [[-80.161612, 10.724832], [-74.912279, 10.724832]]; -path17061_paths = [[0, 1]]; - -path17059_points = [[-81.770279, 10.809503], [-83.294279, 10.809503]]; -path17059_paths = [[0, 1]]; - -path17057_points = [[-79.992279, 10.809503], [-74.912279, 10.809503]]; -path17057_paths = [[0, 1]]; - -path17055_points = [[-81.854945, 10.978833], [-83.294279, 10.978833]]; -path17055_paths = [[0, 1]]; - -path17053_points = [[-79.822945, 10.978833], [-74.912279, 10.978833]]; -path17053_paths = [[0, 1]]; - -path17051_points = [[-82.024279, 11.063502], [-83.294279, 11.063502]]; -path17051_paths = [[0, 1]]; - -path17049_points = [[-79.738279, 11.063502], [-74.912279, 11.063502]]; -path17049_paths = [[0, 1]]; - -path17047_points = [[-82.108945, 11.232833], [-83.294279, 11.232833]]; -path17047_paths = [[0, 1]]; - -path17045_points = [[-79.568945, 11.232833], [-74.912279, 11.232833]]; -path17045_paths = [[0, 1]]; - -path17043_points = [[-82.193612, 11.317502], [-83.294279, 11.317502]]; -path17043_paths = [[0, 1]]; - -path17041_points = [[-79.399612, 11.317502], [-74.912279, 11.317502]]; -path17041_paths = [[0, 1]]; - -path17039_points = [[-82.278279, 11.486833], [-83.294279, 11.486833]]; -path17039_paths = [[0, 1]]; - -path17037_points = [[-79.230279, 11.486833], [-74.912279, 11.486833]]; -path17037_paths = [[0, 1]]; - -path16835_points = [[-51.919643, 11.569033], [-47.432310, 11.569033]]; -path16835_paths = [[0, 1]]; - -path16833_points = [[-53.612976, 11.569033], [-55.729643, 11.569033]]; -path16833_paths = [[0, 1]]; - -path16831_points = [[-52.004310, 11.399703], [-47.432310, 11.399703]]; -path16831_paths = [[0, 1]]; - -path16829_points = [[-53.528310, 11.399703], [-55.729643, 11.399703]]; -path16829_paths = [[0, 1]]; - -path16827_points = [[-52.088976, 11.315033], [-47.432310, 11.315033]]; -path16827_paths = [[0, 1]]; - -path16825_points = [[-53.443643, 11.315033], [-55.729643, 11.315033]]; -path16825_paths = [[0, 1]]; - -path16823_points = [[-52.173643, 11.145702], [-47.432310, 11.145702]]; -path16823_paths = [[0, 1]]; - -path16821_points = [[-53.274310, 11.145702], [-55.729643, 11.145702]]; -path16821_paths = [[0, 1]]; - -path16819_points = [[-52.173643, 11.061033], [-47.432310, 11.061033]]; -path16819_paths = [[0, 1]]; - -path16817_points = [[-53.189643, 11.061033], [-55.729643, 11.061033]]; -path16817_paths = [[0, 1]]; - -path16815_points = [[-52.258310, 10.891703], [-47.432310, 10.891703]]; -path16815_paths = [[0, 1]]; - -path16813_points = [[-53.104976, 10.891703], [-55.729643, 10.891703]]; -path16813_paths = [[0, 1]]; - -path16811_points = [[-52.342976, 10.807032], [-47.432310, 10.807032]]; -path16811_paths = [[0, 1]]; - -path16809_points = [[-53.020310, 10.807032], [-55.729643, 10.807032]]; -path16809_paths = [[0, 1]]; - -path16807_points = [[-52.427643, 10.637702], [-47.432310, 10.637702]]; -path16807_paths = [[0, 1]]; - -path16805_points = [[-52.850976, 10.637702], [-55.644976, 10.637702]]; -path16805_paths = [[0, 1]]; - -path16803_points = [[-52.427643, 10.553033], [-47.432310, 10.553033]]; -path16803_paths = [[0, 1]]; - -path16801_points = [[-52.766310, 10.553033], [-55.644976, 10.553033]]; -path16801_paths = [[0, 1]]; - -path16799_points = [[-52.512310, 10.383702], [-51.326976, 10.383702]]; -path16799_paths = [[0, 1]]; - -path16797_points = [[-52.681643, 10.383702], [-55.644976, 10.383702], [-55.644976, 10.299003], [-51.411643, 10.299003]]; -path16797_paths = [[0, 1, 2, 3]]; - -path16795_points = [[-51.411643, 10.129703], [-53.951643, 10.129703]]; -path16795_paths = [[0, 1]]; - -path16793_points = [[-54.798310, 10.129703], [-55.644976, 10.129703]]; -path16793_paths = [[0, 1]]; - -path16791_points = [[-53.866976, 10.045032], [-51.496310, 10.045032]]; -path16791_paths = [[0, 1]]; - -path16789_points = [[-54.798310, 10.045032], [-55.560310, 10.045032]]; -path16789_paths = [[0, 1]]; - -path16787_points = [[-53.697643, 9.875702], [-51.496310, 9.875702]]; -path16787_paths = [[0, 1]]; - -path16785_points = [[-54.798310, 9.875702], [-55.560310, 9.875702]]; -path16785_paths = [[0, 1]]; - -path16783_points = [[-53.612976, 9.791033], [-51.580976, 9.791033]]; -path16783_paths = [[0, 1]]; - -path16781_points = [[-54.798310, 9.791033], [-55.560310, 9.791033]]; -path16781_paths = [[0, 1]]; - -path16779_points = [[-53.528310, 9.621702], [-51.580976, 9.621702]]; -path16779_paths = [[0, 1]]; - -path16777_points = [[-51.665643, 9.537033], [-53.358976, 9.537033]]; -path16777_paths = [[0, 1]]; - -path16775_points = [[-53.274310, 9.367703], [-51.665643, 9.367703]]; -path16775_paths = [[0, 1]]; - -path16773_points = [[-55.560310, 9.706372], [-55.729643, 11.569032], [-53.612976, 11.569032], [-52.596976, 10.299032], [-51.919643, 11.569032]]; -path16773_paths = [[0, 1, 2, 3, 4]]; - -path16771_points = [[-51.326976, 10.468372], [-47.432310, 10.468372]]; -path16771_paths = [[0, 1]]; - -path16769_points = [[-51.326976, 10.468372], [-51.750310, 9.283032]]; -path16769_paths = [[0, 1]]; - -path16767_points = [[-53.189643, 9.283032], [-53.951643, 10.214372], [-54.798310, 10.214372], [-54.882980, 9.706372], [-55.560314, 9.706372]]; -path16767_paths = [[0, 1, 2, 3, 4]]; - -path16765_points = [[-51.919643, 11.569033], [-47.432310, 11.569033]]; -path16765_paths = [[0, 1]]; - -path16763_points = [[-51.750310, 9.283032], [-53.189643, 9.283032]]; -path16763_paths = [[0, 1]]; - -path16761_points = [[-47.432310, 10.468372], [-47.432310, 11.569032]]; -path16761_paths = [[0, 1]]; - -path16369_points = [[-24.499997, 8.780323], [-27.040027, 8.780323]]; -path16369_paths = [[0, 1]]; - -path16367_points = [[-24.753997, 11.150993], [-20.351327, 11.150993], [-20.351327, 9.965663]]; -path16367_paths = [[0, 1, 2]]; - -path16365_points = [[-28.479327, 9.288322], [-28.733327, 11.150993]]; -path16365_paths = [[0, 1]]; - -path16363_points = [[-28.479327, 9.288322], [-27.801997, 9.288322]]; -path16363_paths = [[0, 1]]; - -path16361_points = [[-27.717327, 9.796323], [-27.378667, 9.796323]]; -path16361_paths = [[0, 1]]; - -path16359_points = [[-27.717327, 9.796323], [-27.802027, 9.288322]]; -path16359_paths = [[0, 1]]; - -path16357_points = [[-27.378667, 9.796323], [-27.040027, 8.780323]]; -path16357_paths = [[0, 1]]; - -path16355_points = [[-24.161387, 9.965663], [-20.351327, 9.965663]]; -path16355_paths = [[0, 1]]; - -path16353_points = [[-24.161387, 9.965663], [-24.499997, 8.780323]]; -path16353_paths = [[0, 1]]; - -path16351_points = [[-25.177357, 9.796323], [-26.447327, 9.796323], [-27.040027, 11.150993]]; -path16351_paths = [[0, 1, 2]]; - -path16349_points = [[-24.753997, 11.150993], [-25.177357, 9.796323]]; -path16349_paths = [[0, 1]]; - -path16347_points = [[-27.040027, 11.150993], [-28.733327, 11.150993]]; -path16347_paths = [[0, 1]]; - -path16345_points = [[-27.040027, 8.864992], [-24.499997, 8.864992], [-24.499997, 8.949692], [-27.124667, 8.949692]]; -path16345_paths = [[0, 1, 2, 3]]; - -path16343_points = [[-27.124667, 9.118992], [-24.415357, 9.118992], [-24.415357, 9.203692], [-27.209327, 9.203692]]; -path16343_paths = [[0, 1, 2, 3]]; - -path16341_points = [[-27.801997, 9.372993], [-28.563997, 9.372993]]; -path16341_paths = [[0, 1]]; - -path16339_points = [[-27.209327, 9.372993], [-24.330667, 9.372993]]; -path16339_paths = [[0, 1]]; - -path16337_points = [[-27.801997, 9.457662], [-28.563997, 9.457662]]; -path16337_paths = [[0, 1]]; - -path16335_points = [[-27.293997, 9.457662], [-24.330667, 9.457662]]; -path16335_paths = [[0, 1]]; - -path16333_points = [[-27.801997, 9.626993], [-28.563997, 9.626993]]; -path16333_paths = [[0, 1]]; - -path6550_points = [[-27.293997, 9.626993], [-24.245997, 9.626993]]; -path6550_paths = [[0, 1]]; - -path16329_points = [[-27.717327, 9.711662], [-28.563997, 9.711662]]; -path16329_paths = [[0, 1]]; - -path16327_points = [[-27.378667, 9.711662], [-24.245997, 9.711662]]; -path16327_paths = [[0, 1]]; - -path16325_points = [[-26.447327, 9.880992], [-28.648687, 9.880992]]; -path16325_paths = [[0, 1]]; - -path16323_points = [[-25.177357, 9.880992], [-24.245997, 9.880992]]; -path16323_paths = [[0, 1]]; - -path16321_points = [[-26.532027, 9.965663], [-28.648687, 9.965663]]; -path16321_paths = [[0, 1]]; - -path16319_points = [[-25.177357, 9.965663], [-20.351327, 9.965663]]; -path16319_paths = [[0, 1]]; - -path16317_points = [[-26.616667, 10.134993], [-28.648687, 10.134993]]; -path16317_paths = [[0, 1]]; - -path16315_points = [[-25.092667, 10.134993], [-20.351327, 10.134993]]; -path16315_paths = [[0, 1]]; - -path16313_points = [[-26.616667, 10.219662], [-28.648687, 10.219662]]; -path16313_paths = [[0, 1]]; - -path16311_points = [[-25.092667, 10.219662], [-20.351327, 10.219662]]; -path16311_paths = [[0, 1]]; - -path16309_points = [[-26.701327, 10.388993], [-28.648687, 10.388993]]; -path16309_paths = [[0, 1]]; - -path16307_points = [[-25.007997, 10.388993], [-20.351327, 10.388993]]; -path16307_paths = [[0, 1]]; - -path16305_points = [[-26.786027, 10.473662], [-28.648687, 10.473662]]; -path16305_paths = [[0, 1]]; - -path16303_points = [[-25.007997, 10.473662], [-20.351327, 10.473662]]; -path16303_paths = [[0, 1]]; - -path16301_points = [[-26.786027, 10.642992], [-28.648687, 10.642992]]; -path16301_paths = [[0, 1]]; - -path16299_points = [[-24.923357, 10.642992], [-20.351327, 10.642992]]; -path16299_paths = [[0, 1]]; - -path16297_points = [[-26.870667, 10.727663], [-28.648687, 10.727663]]; -path16297_paths = [[0, 1]]; - -path16295_points = [[-24.923357, 10.727663], [-20.351327, 10.727663]]; -path16295_paths = [[0, 1]]; - -path16293_points = [[-26.955327, 10.896993], [-28.733327, 10.896993]]; -path16293_paths = [[0, 1]]; - -path16291_points = [[-24.838667, 10.896993], [-20.351327, 10.896993]]; -path16291_paths = [[0, 1]]; - -path16289_points = [[-26.955327, 10.981662], [-28.733327, 10.981662]]; -path16289_paths = [[0, 1]]; - -path16287_points = [[-24.838667, 10.981662], [-20.351327, 10.981662]]; -path16287_paths = [[0, 1]]; - -path16285_points = [[-27.040027, 11.150993], [-28.733327, 11.150993]]; -path16285_paths = [[0, 1]]; - -path16283_points = [[-24.753997, 11.150993], [-20.351327, 11.150993]]; -path16283_paths = [[0, 1]]; - -path16277_points = [[32.098953, 11.342902], [35.570293, 11.342902]]; -path16277_paths = [[0, 1]]; - -path16275_points = [[29.812903, 11.342902], [27.272953, 11.342902]]; -path16275_paths = [[0, 1]]; - -path16273_points = [[31.929573, 11.258232], [35.570293, 11.258232]]; -path16273_paths = [[0, 1]]; - -path16271_points = [[29.812903, 11.258232], [27.272953, 11.258232]]; -path16271_paths = [[0, 1]]; - -path16269_points = [[31.675573, 11.088902], [35.570293, 11.088902]]; -path16269_paths = [[0, 1]]; - -path16267_points = [[29.812903, 11.088902], [27.272953, 11.088902]]; -path16267_paths = [[0, 1]]; - -path16265_points = [[31.421573, 11.004233], [35.570293, 11.004233]]; -path16265_paths = [[0, 1]]; - -path16263_points = [[29.897623, 11.004233], [27.272953, 11.004233]]; -path16263_paths = [[0, 1]]; - -path16261_points = [[31.252293, 10.834902], [35.570293, 10.834902]]; -path16261_paths = [[0, 1]]; - -path16259_points = [[29.897623, 10.834902], [27.272953, 10.834902]]; -path16259_paths = [[0, 1]]; - -path16257_points = [[30.998293, 10.750233], [35.570293, 10.750233]]; -path16257_paths = [[0, 1]]; - -path16255_points = [[29.982293, 10.750233], [27.272953, 10.750233]]; -path16255_paths = [[0, 1]]; - -path16253_points = [[30.828903, 10.580903], [35.570293, 10.580903]]; -path16253_paths = [[0, 1]]; - -path16251_points = [[29.982293, 10.580903], [27.272953, 10.580903]]; -path16251_paths = [[0, 1]]; - -path16249_points = [[30.574903, 10.496232], [35.570293, 10.496232]]; -path16249_paths = [[0, 1]]; - -path16247_points = [[29.982293, 10.496232], [27.357623, 10.496232]]; -path16247_paths = [[0, 1]]; - -path16245_points = [[30.320903, 10.326902], [35.570293, 10.326902]]; -path16245_paths = [[0, 1]]; - -path16243_points = [[30.066903, 10.326902], [27.357623, 10.326902], [27.357623, 10.242202], [35.570293, 10.242202]]; -path16243_paths = [[0, 1, 2, 3]]; - -path16241_points = [[32.268293, 10.072902], [27.357623, 10.072902], [27.357623, 9.988202], [32.014293, 9.988202]]; -path16241_paths = [[0, 1, 2, 3]]; - -path16239_points = [[31.760293, 9.818903], [28.796903, 9.818903]]; -path16239_paths = [[0, 1]]; - -path16237_points = [[28.204233, 9.818903], [27.357623, 9.818903]]; -path16237_paths = [[0, 1]]; - -path16235_points = [[28.881623, 9.734232], [31.506293, 9.734232]]; -path16235_paths = [[0, 1]]; - -path16233_points = [[28.204233, 9.734232], [27.442233, 9.734232]]; -path16233_paths = [[0, 1]]; - -path16231_points = [[28.881623, 9.564902], [31.252293, 9.564902]]; -path16231_paths = [[0, 1]]; - -path16229_points = [[28.204233, 9.564902], [27.442233, 9.564902]]; -path16229_paths = [[0, 1]]; - -path16227_points = [[28.881623, 9.480232], [30.998293, 9.480232]]; -path16227_paths = [[0, 1]]; - -path16225_points = [[30.828903, 9.310902], [28.966233, 9.310902], [28.966233, 9.226202], [30.574903, 9.226202]]; -path16225_paths = [[0, 1, 2, 3]]; - -path16223_points = [[30.320903, 9.056903], [29.050953, 9.056903]]; -path16223_paths = [[0, 1]]; - -path16221_points = [[30.236293, 9.056903], [32.352953, 10.157573]]; -path16221_paths = [[0, 1]]; - -path16219_points = [[29.812903, 11.342902], [27.272953, 11.342902]]; -path16219_paths = [[0, 1]]; - -path16217_points = [[30.066903, 10.411573], [30.151603, 10.326873], [30.320883, 10.326873], [32.098933, 11.342873]]; -path16217_paths = [[0, 1, 2, 3]]; - -path16215_points = [[29.812903, 11.342902], [30.066903, 10.411573]]; -path16215_paths = [[0, 1]]; - -path16213_points = [[32.352953, 10.157572], [35.570293, 10.157572]]; -path16213_paths = [[0, 1]]; - -path16211_points = [[27.442233, 9.480232], [27.272953, 11.342902]]; -path16211_paths = [[0, 1]]; - -path16209_points = [[28.796903, 9.903572], [29.050953, 9.056903]]; -path16209_paths = [[0, 1]]; - -path16207_points = [[28.204233, 9.480232], [28.288933, 9.903572], [28.796883, 9.903572]]; -path16207_paths = [[0, 1, 2]]; - -path16205_points = [[28.204233, 9.480232], [27.442233, 9.480232]]; -path16205_paths = [[0, 1]]; - -path16203_points = [[35.570293, 10.157572], [35.570293, 11.342902], [32.098953, 11.342902]]; -path16203_paths = [[0, 1, 2]]; - -path16201_points = [[30.236293, 9.056903], [29.050953, 9.056903]]; -path16201_paths = [[0, 1]]; - -path19155_points = [[-107.615983, -46.309568], [-110.156018, -46.309568]]; -path19155_paths = [[0, 1]]; - -path19153_points = [[-107.446650, -43.938907], [-103.467317, -43.938907], [-103.467317, -45.124237]]; -path19153_paths = [[0, 1, 2]]; - -path19151_points = [[-110.833317, -45.208908], [-110.917987, -45.970908]]; -path19151_paths = [[0, 1]]; - -path19149_points = [[-110.156018, -46.309568], [-110.325317, -45.208908], [-110.833317, -45.208908]]; -path19149_paths = [[0, 1, 2]]; - -path19147_points = [[-111.595317, -45.970908], [-111.849317, -43.938907]]; -path19147_paths = [[0, 1]]; - -path19145_points = [[-111.595317, -45.970908], [-110.917983, -45.970908]]; -path19145_paths = [[0, 1]]; - -path19143_points = [[-107.615983, -46.309568], [-106.853983, -45.970908], [-106.769313, -45.124238], [-103.467313, -45.124238]]; -path19143_paths = [[0, 1, 2, 3]]; - -path19141_points = [[-107.785351, -45.462908], [-109.224650, -45.462908], [-109.563317, -43.938907]]; -path19141_paths = [[0, 1, 2]]; - -path19139_points = [[-107.446650, -43.938907], [-107.785351, -45.462908]]; -path19139_paths = [[0, 1]]; - -path19137_points = [[-109.563317, -43.938907], [-111.849317, -43.938907]]; -path19137_paths = [[0, 1]]; - -path19135_points = [[-110.156018, -46.224908], [-107.446650, -46.224908]]; -path19135_paths = [[0, 1]]; - -path19133_points = [[-107.107983, -46.140238], [-110.240650, -46.140238]]; -path19133_paths = [[0, 1]]; - -path19131_points = [[-110.917983, -45.970908], [-111.595317, -45.970908]]; -path19131_paths = [[0, 1]]; - -path19129_points = [[-110.240650, -45.970908], [-106.853983, -45.970908]]; -path19129_paths = [[0, 1]]; - -path19127_points = [[-110.917983, -45.886237], [-111.595317, -45.886237]]; -path19127_paths = [[0, 1]]; - -path19125_points = [[-110.240650, -45.886237], [-106.853983, -45.886237]]; -path19125_paths = [[0, 1]]; - -path19123_points = [[-110.917983, -45.716907], [-111.595317, -45.716907]]; -path19123_paths = [[0, 1]]; - -path6634_points = [[-110.240650, -45.716907], [-106.769317, -45.716907]]; -path6634_paths = [[0, 1]]; - -path19119_points = [[-110.917983, -45.632238], [-111.679983, -45.632238]]; -path19119_paths = [[0, 1]]; - -path19117_points = [[-110.240650, -45.632238], [-106.769317, -45.632238]]; -path19117_paths = [[0, 1]]; - -path19115_points = [[-110.917983, -45.462908], [-111.679983, -45.462908]]; -path19115_paths = [[0, 1]]; - -path19113_points = [[-110.240650, -45.462908], [-106.769317, -45.462908]]; -path19113_paths = [[0, 1]]; - -path19111_points = [[-110.917983, -45.378238], [-111.679983, -45.378238]]; -path19111_paths = [[0, 1]]; - -path19109_points = [[-110.240650, -45.378238], [-109.224650, -45.378238]]; -path19109_paths = [[0, 1]]; - -path19107_points = [[-107.700650, -45.378238], [-106.769317, -45.378238]]; -path19107_paths = [[0, 1]]; - -path19105_points = [[-110.833317, -45.208908], [-111.679983, -45.208908]]; -path19105_paths = [[0, 1]]; - -path19103_points = [[-110.325317, -45.208908], [-109.309317, -45.208908]]; -path19103_paths = [[0, 1]]; - -path19101_points = [[-107.700650, -45.208908], [-106.769317, -45.208908]]; -path19101_paths = [[0, 1]]; - -path19099_points = [[-109.309317, -45.124237], [-111.764684, -45.124237]]; -path19099_paths = [[0, 1]]; - -path19097_points = [[-107.700650, -45.124237], [-103.467317, -45.124237]]; -path19097_paths = [[0, 1]]; - -path19095_points = [[-109.309317, -44.954907], [-111.764684, -44.954907]]; -path19095_paths = [[0, 1]]; - -path19093_points = [[-107.700650, -44.954907], [-103.467317, -44.954907]]; -path19093_paths = [[0, 1]]; - -path19091_points = [[-109.309317, -44.870238], [-111.764684, -44.870238]]; -path19091_paths = [[0, 1]]; - -path19089_points = [[-111.764684, -44.700907], [-109.394018, -44.700907]]; -path19089_paths = [[0, 1]]; - -path19087_points = [[-107.615983, -44.700907], [-103.467317, -44.700907]]; -path19087_paths = [[0, 1]]; - -path19085_points = [[-109.394018, -44.616238], [-111.764684, -44.616238]]; -path19085_paths = [[0, 1]]; - -path19083_points = [[-107.615983, -44.616238], [-103.467317, -44.616238]]; -path19083_paths = [[0, 1]]; - -path19081_points = [[-109.394018, -44.446908], [-111.764684, -44.446908]]; -path19081_paths = [[0, 1]]; - -path19079_points = [[-107.531351, -44.446908], [-103.467317, -44.446908]]; -path19079_paths = [[0, 1]]; - -path19077_points = [[-109.478650, -44.362237], [-111.764684, -44.362237]]; -path19077_paths = [[0, 1]]; - -path19075_points = [[-107.531351, -44.362237], [-103.467317, -44.362237]]; -path19075_paths = [[0, 1]]; - -path19073_points = [[-109.478650, -44.192907], [-111.849317, -44.192907]]; -path19073_paths = [[0, 1]]; - -path19071_points = [[-107.531351, -44.192907], [-103.467317, -44.192907]]; -path19071_paths = [[0, 1]]; - -path19069_points = [[-109.478650, -44.108238], [-111.849317, -44.108238]]; -path19069_paths = [[0, 1]]; - -path19067_points = [[-107.446650, -44.108238], [-103.467317, -44.108238]]; -path19067_paths = [[0, 1]]; - -path19065_points = [[-109.563317, -43.938907], [-111.849317, -43.938907]]; -path19065_paths = [[0, 1]]; - -path19063_points = [[-107.446650, -43.938907], [-103.467317, -43.938907]]; -path19063_paths = [[0, 1]]; - -path6636_points = [[-103.467317, -44.870238], [-107.615983, -44.870238]]; -path6636_paths = [[0, 1]]; - -path18857_points = [[-81.096623, -46.309568], [-82.112623, -46.309568]]; -path18857_paths = [[0, 1]]; - -path18855_points = [[-78.641290, -43.938907], [-75.254623, -43.938907], [-75.254623, -45.124237]]; -path18855_paths = [[0, 1, 2]]; - -path18853_points = [[-82.705290, -45.801568], [-83.382623, -45.801568]]; -path18853_paths = [[0, 1]]; - -path18851_points = [[-82.620623, -45.208908], [-82.197290, -45.208908], [-82.112620, -46.309568]]; -path18851_paths = [[0, 1, 2]]; - -path18849_points = [[-82.705290, -45.801568], [-82.620620, -45.208908]]; -path18849_paths = [[0, 1]]; - -path18847_points = [[-83.382623, -45.801568], [-83.636623, -43.938907]]; -path18847_paths = [[0, 1]]; - -path18845_points = [[-81.096623, -46.309568], [-79.995956, -45.378238]]; -path18845_paths = [[0, 1]]; - -path18843_points = [[-79.826649, -45.378238], [-79.487956, -46.140238], [-78.641290, -45.886238], [-78.471956, -45.124238]]; -path18843_paths = [[0, 1, 2, 3]]; - -path6658_points = [[-79.826649, -45.378238], [-79.911289, -45.293538], [-79.995959, -45.378238]]; -path6658_paths = [[0, 1, 2]]; - -path18839_points = [[-78.471956, -45.124237], [-75.254623, -45.124237]]; -path18839_paths = [[0, 1]]; - -path18837_points = [[-81.181316, -45.208908], [-81.265956, -43.938907]]; -path18837_paths = [[0, 1]]; - -path18835_points = [[-80.927290, -45.293567], [-79.572649, -44.192907]]; -path18835_paths = [[0, 1]]; - -path18833_points = [[-78.895290, -44.446908], [-78.641290, -43.938907]]; -path18833_paths = [[0, 1]]; - -path18831_points = [[-81.181316, -45.208908], [-81.096626, -45.293608], [-81.011956, -45.293608], [-80.927286, -45.293608]]; -path18831_paths = [[0, 1, 2, 3]]; - -path18829_points = [[-79.318649, -44.277578], [-79.403289, -44.192878], [-79.487959, -44.108178], [-79.572649, -44.192878]]; -path18829_paths = [[0, 1, 2, 3]]; - -path18827_points = [[-79.318649, -44.277578], [-79.318649, -44.446908], [-79.233959, -44.531608], [-79.064652, -44.531608], [-78.895293, -44.446908]]; -path18827_paths = [[0, 1, 2, 3, 4]]; - -path18825_points = [[-81.265956, -43.938907], [-83.636623, -43.938907]]; -path18825_paths = [[0, 1]]; - -path18823_points = [[-82.112623, -46.140238], [-80.927290, -46.140238]]; -path18823_paths = [[0, 1]]; - -path18821_points = [[-79.487956, -46.140238]]; -path18821_paths = [[0]]; - -path18819_points = [[-80.842623, -46.055567], [-82.112623, -46.055567]]; -path18819_paths = [[0, 1]]; - -path18817_points = [[-79.572649, -46.055567], [-79.064649, -46.055567]]; -path18817_paths = [[0, 1]]; - -path18815_points = [[-80.673290, -45.886237], [-82.112623, -45.886237]]; -path18815_paths = [[0, 1]]; - -path18813_points = [[-79.572649, -45.886237], [-78.725956, -45.886237]]; -path18813_paths = [[0, 1]]; - -path18811_points = [[-82.705290, -45.801568], [-83.382623, -45.801568]]; -path18811_paths = [[0, 1]]; - -path18809_points = [[-82.112623, -45.801568], [-80.503956, -45.801568]]; -path18809_paths = [[0, 1]]; - -path18807_points = [[-79.657290, -45.801568], [-78.641290, -45.801568]]; -path18807_paths = [[0, 1]]; - -path18805_points = [[-82.705290, -45.632238], [-83.467290, -45.632238]]; -path18805_paths = [[0, 1]]; - -path18803_points = [[-82.112623, -45.632238], [-80.419290, -45.632238]]; -path18803_paths = [[0, 1]]; - -path18801_points = [[-79.741956, -45.632238], [-78.641290, -45.632238]]; -path18801_paths = [[0, 1]]; - -path18799_points = [[-82.705290, -45.547568], [-83.467290, -45.547568]]; -path18799_paths = [[0, 1]]; - -path18797_points = [[-82.112623, -45.547568], [-80.249956, -45.547568]]; -path18797_paths = [[0, 1]]; - -path18795_points = [[-79.741956, -45.547568], [-78.556623, -45.547568]]; -path18795_paths = [[0, 1]]; - -path18793_points = [[-82.620623, -45.378238], [-83.467290, -45.378238]]; -path18793_paths = [[0, 1]]; - -path18791_points = [[-82.112623, -45.378238], [-80.080649, -45.378238]]; -path18791_paths = [[0, 1]]; - -path18789_points = [[-79.826649, -45.378238], [-78.556623, -45.378238]]; -path18789_paths = [[0, 1]]; - -path18787_points = [[-82.620623, -45.293567], [-83.467290, -45.293567]]; -path18787_paths = [[0, 1]]; - -path18785_points = [[-82.112623, -45.293567], [-81.096623, -45.293567], [-81.011953, -45.293567], [-78.556620, -45.293567]]; -path18785_paths = [[0, 1, 2, 3]]; - -path18783_points = [[-81.181316, -45.124237], [-83.551983, -45.124237]]; -path18783_paths = [[0, 1]]; - -path18781_points = [[-80.842623, -45.124237], [-78.556623, -45.124237]]; -path18781_paths = [[0, 1]]; - -path18779_points = [[-81.181316, -45.039568], [-83.551983, -45.039568]]; -path18779_paths = [[0, 1]]; - -path18777_points = [[-80.673290, -45.039568], [-75.254623, -45.039568]]; -path18777_paths = [[0, 1]]; - -path18775_points = [[-81.181316, -44.870238], [-83.551983, -44.870238]]; -path18775_paths = [[0, 1]]; - -path18773_points = [[-80.503956, -44.870238], [-75.254623, -44.870238]]; -path18773_paths = [[0, 1]]; - -path18771_points = [[-81.181316, -44.785568], [-83.551983, -44.785568]]; -path18771_paths = [[0, 1]]; - -path18769_points = [[-80.334623, -44.785568], [-75.254623, -44.785568]]; -path18769_paths = [[0, 1]]; - -path18767_points = [[-81.181316, -44.616238], [-83.551983, -44.616238]]; -path18767_paths = [[0, 1]]; - -path18765_points = [[-80.165290, -44.616238], [-75.254623, -44.616238]]; -path18765_paths = [[0, 1]]; - -path18763_points = [[-81.181316, -44.531567], [-83.551983, -44.531567]]; -path18763_paths = [[0, 1]]; - -path18761_points = [[-80.080649, -44.531567], [-79.233956, -44.531567]]; -path18761_paths = [[0, 1]]; - -path18759_points = [[-78.979956, -44.531567], [-75.254623, -44.531567]]; -path18759_paths = [[0, 1]]; - -path18757_points = [[-81.265956, -44.362237], [-83.551983, -44.362237]]; -path18757_paths = [[0, 1]]; - -path18755_points = [[-79.911290, -44.362237], [-79.318649, -44.362237]]; -path18755_paths = [[0, 1]]; - -path18753_points = [[-78.895290, -44.362237], [-75.254623, -44.362237]]; -path18753_paths = [[0, 1]]; - -path18751_points = [[-81.265956, -44.277578], [-83.551983, -44.277578]]; -path18751_paths = [[0, 1]]; - -path18749_points = [[-79.741956, -44.277578], [-79.318649, -44.277578]]; -path18749_paths = [[0, 1]]; - -path18747_points = [[-78.810623, -44.277578], [-75.254623, -44.277578]]; -path18747_paths = [[0, 1]]; - -path18745_points = [[-81.265956, -44.108238], [-83.636623, -44.108238]]; -path18745_paths = [[0, 1]]; - -path18743_points = [[-79.572649, -44.108238], [-79.403290, -44.108238]]; -path18743_paths = [[0, 1]]; - -path18741_points = [[-78.725956, -44.108238], [-75.254623, -44.108238]]; -path18741_paths = [[0, 1]]; - -path18739_points = [[-81.265956, -44.023577], [-83.636623, -44.023577]]; -path18739_paths = [[0, 1]]; - -path6660_points = [[-78.641290, -44.023577], [-75.254623, -44.023577]]; -path6660_paths = [[0, 1]]; - -path18533_points = [[-52.780227, -46.651418], [-53.796227, -46.651418]]; -path18533_paths = [[0, 1]]; - -path18531_points = [[-50.240227, -44.450077], [-47.107586, -44.450077], [-47.107586, -45.635417]]; -path18531_paths = [[0, 1, 2]]; - -path18529_points = [[-54.473560, -46.397417], [-55.150893, -46.397417]]; -path18529_paths = [[0, 1]]; - -path18527_points = [[-54.388893, -45.804747], [-53.880893, -45.804747]]; -path18527_paths = [[0, 1]]; - -path18525_points = [[-54.388893, -45.804747], [-54.473563, -46.397417]]; -path18525_paths = [[0, 1]]; - -path18523_points = [[-53.796227, -46.651418], [-53.880897, -45.804748]]; -path18523_paths = [[0, 1]]; - -path18521_points = [[-52.780227, -46.651418], [-51.340920, -45.804748]]; -path18521_paths = [[0, 1]]; - -path18519_points = [[-55.150893, -46.397417], [-55.404893, -44.450077]]; -path18519_paths = [[0, 1]]; - -path18517_points = [[-51.340920, -45.804747], [-51.171560, -46.651417], [-50.494227, -46.482077], [-50.324893, -45.635417], [-47.107586, -45.635417]]; -path18517_paths = [[0, 1, 2, 3, 4]]; - -path6682_points = [[-53.118893, -45.974077], [-53.372893, -44.450077]]; -path6682_paths = [[0, 1]]; - -path18513_points = [[-53.118893, -45.974077], [-50.917560, -44.534747], [-50.409560, -44.958077], [-50.240227, -44.450077]]; -path18513_paths = [[0, 1, 2, 3]]; - -path18511_points = [[-53.372893, -44.450077], [-55.404893, -44.450077]]; -path18511_paths = [[0, 1]]; - -path18509_points = [[-53.796227, -46.651418], [-52.695560, -46.651418]]; -path18509_paths = [[0, 1]]; - -path18507_points = [[-51.171560, -46.651418], [-50.917560, -46.651418]]; -path18507_paths = [[0, 1]]; - -path18505_points = [[-52.441560, -46.482078], [-53.796227, -46.482078]]; -path18505_paths = [[0, 1]]; - -path18503_points = [[-51.171560, -46.482078], [-50.494227, -46.482078]]; -path18503_paths = [[0, 1]]; - -path18501_points = [[-54.473560, -46.397417], [-55.150893, -46.397417]]; -path18501_paths = [[0, 1]]; - -path18499_points = [[-53.796227, -46.397417], [-52.272227, -46.397417]]; -path18499_paths = [[0, 1]]; - -path18497_points = [[-51.171560, -46.397417], [-50.494227, -46.397417]]; -path18497_paths = [[0, 1]]; - -path18495_points = [[-54.473560, -46.228078], [-55.235560, -46.228078]]; -path18495_paths = [[0, 1]]; - -path18493_points = [[-53.880893, -46.228078], [-52.018227, -46.228078]]; -path18493_paths = [[0, 1]]; - -path18491_points = [[-51.256227, -46.228078], [-50.409560, -46.228078]]; -path18491_paths = [[0, 1]]; - -path18489_points = [[-54.473560, -46.143417], [-55.235560, -46.143417]]; -path18489_paths = [[0, 1]]; - -path18487_points = [[-53.880893, -46.143417], [-51.764227, -46.143417]]; -path18487_paths = [[0, 1]]; - -path18485_points = [[-51.256227, -46.143417], [-50.409560, -46.143417]]; -path18485_paths = [[0, 1]]; - -path18483_points = [[-54.473560, -45.974077], [-55.235560, -45.974077]]; -path18483_paths = [[0, 1]]; - -path18481_points = [[-53.880893, -45.974077], [-51.594920, -45.974077]]; -path18481_paths = [[0, 1]]; - -path18479_points = [[-51.256227, -45.974077], [-50.409560, -45.974077]]; -path18479_paths = [[0, 1]]; - -path18477_points = [[-54.388893, -45.889418], [-55.235560, -45.889418]]; -path18477_paths = [[0, 1]]; - -path18475_points = [[-53.880893, -45.889418], [-53.203586, -45.889418]]; -path18475_paths = [[0, 1]]; - -path18473_points = [[-53.034227, -45.889418], [-51.340920, -45.889418], [-51.256230, -45.889418], [-50.324896, -45.889418]]; -path18473_paths = [[0, 1, 2, 3]]; - -path18471_points = [[-53.203586, -45.720078], [-55.320253, -45.720078]]; -path18471_paths = [[0, 1]]; - -path18469_points = [[-52.780227, -45.720078], [-50.324893, -45.720078]]; -path18469_paths = [[0, 1]]; - -path18467_points = [[-53.203586, -45.635417], [-55.320253, -45.635417]]; -path18467_paths = [[0, 1]]; - -path18465_points = [[-52.610893, -45.635417], [-50.324893, -45.635417]]; -path18465_paths = [[0, 1]]; - -path18463_points = [[-53.203586, -45.466078], [-55.320253, -45.466078]]; -path18463_paths = [[0, 1]]; - -path18461_points = [[-52.441560, -45.466078], [-47.107586, -45.466078]]; -path18461_paths = [[0, 1]]; - -path18459_points = [[-53.288227, -45.381417], [-55.320253, -45.381417]]; -path18459_paths = [[0, 1]]; - -path18457_points = [[-52.187560, -45.381417], [-47.107586, -45.381417]]; -path18457_paths = [[0, 1]]; - -path18455_points = [[-53.288227, -45.212077], [-55.320253, -45.212077]]; -path18455_paths = [[0, 1]]; - -path18453_points = [[-52.018227, -45.212077], [-47.107586, -45.212077]]; -path18453_paths = [[0, 1]]; - -path18451_points = [[-53.288227, -45.127418], [-55.320253, -45.127418]]; -path18451_paths = [[0, 1]]; - -path18449_points = [[-51.764227, -45.127418], [-47.107586, -45.127418]]; -path18449_paths = [[0, 1]]; - -path18447_points = [[-53.288227, -44.958078], [-55.320253, -44.958078]]; -path18447_paths = [[0, 1]]; - -path18445_points = [[-51.594920, -44.958078], [-47.107586, -44.958078]]; -path18445_paths = [[0, 1]]; - -path18443_points = [[-53.288227, -44.873417], [-55.404893, -44.873417]]; -path18443_paths = [[0, 1]]; - -path18441_points = [[-51.425560, -44.873417], [-50.578893, -44.873417]]; -path18441_paths = [[0, 1]]; - -path18439_points = [[-50.324893, -44.873417], [-47.107586, -44.873417]]; -path18439_paths = [[0, 1]]; - -path18437_points = [[-53.372893, -44.704078], [-55.404893, -44.704078]]; -path18437_paths = [[0, 1]]; - -path18435_points = [[-51.171560, -44.704078], [-50.748227, -44.704078]]; -path18435_paths = [[0, 1]]; - -path18433_points = [[-50.324893, -44.704078], [-47.107586, -44.704078]]; -path18433_paths = [[0, 1]]; - -path18431_points = [[-53.372893, -44.619417], [-55.404893, -44.619417]]; -path18431_paths = [[0, 1]]; - -path18429_points = [[-51.002227, -44.619417], [-50.917557, -44.619417]]; -path18429_paths = [[0, 1]]; - -path18427_points = [[-50.240227, -44.619417], [-47.107586, -44.619417]]; -path18427_paths = [[0, 1]]; - -path18425_points = [[-53.372893, -44.450077], [-55.404893, -44.450077]]; -path18425_paths = [[0, 1]]; - -path6684_points = [[-50.240227, -44.450077], [-47.107586, -44.450077]]; -path6684_paths = [[0, 1]]; - -path18421_points = [[-22.525997, -44.115297], [-19.308657, -44.115297]]; -path18421_paths = [[0, 1]]; - -path18419_points = [[-23.711307, -44.115297], [-23.880657, -44.115297]]; -path18419_paths = [[0, 1]]; - -path18417_points = [[-25.912717, -44.115297], [-27.605997, -44.115297]]; -path18417_paths = [[0, 1]]; - -path18415_points = [[-22.695307, -44.284627], [-19.308657, -44.284627]]; -path18415_paths = [[0, 1]]; - -path18413_points = [[-23.626657, -44.284627], [-24.050047, -44.284627]]; -path18413_paths = [[0, 1]]; - -path18411_points = [[-25.827967, -44.284627], [-27.605997, -44.284627]]; -path18411_paths = [[0, 1]]; - -path18409_points = [[-22.779997, -44.369297], [-19.308657, -44.369297]]; -path18409_paths = [[0, 1]]; - -path18407_points = [[-23.626657, -44.369297], [-24.134657, -44.369297]]; -path18407_paths = [[0, 1]]; - -path18405_points = [[-25.827967, -44.369297], [-27.605997, -44.369297]]; -path18405_paths = [[0, 1]]; - -path18403_points = [[-22.949307, -44.538627], [-19.308657, -44.538627]]; -path18403_paths = [[0, 1]]; - -path18401_points = [[-23.541997, -44.538627], [-24.219327, -44.538627]]; -path18401_paths = [[0, 1]]; - -path18399_points = [[-25.743327, -44.538627], [-27.521377, -44.538627]]; -path18399_paths = [[0, 1]]; - -path18397_points = [[-23.034047, -44.623298], [-19.308657, -44.623298]]; -path18397_paths = [[0, 1]]; - -path18395_points = [[-23.457307, -44.623298], [-24.303967, -44.623298]]; -path18395_paths = [[0, 1]]; - -path18393_points = [[-25.658657, -44.623298], [-27.521377, -44.623298]]; -path18393_paths = [[0, 1]]; - -path18391_points = [[-23.203307, -44.792628], [-19.308657, -44.792628]]; -path18391_paths = [[0, 1]]; - -path18389_points = [[-23.372657, -44.792628], [-24.473327, -44.792628]]; -path18389_paths = [[0, 1]]; - -path18387_points = [[-25.658657, -44.792628], [-27.521377, -44.792628]]; -path18387_paths = [[0, 1]]; - -path18385_points = [[-24.557967, -44.877297], [-19.308657, -44.877297]]; -path18385_paths = [[0, 1]]; - -path18383_points = [[-25.573967, -44.877297], [-27.521377, -44.877297]]; -path18383_paths = [[0, 1]]; - -path18381_points = [[-24.642657, -45.046627], [-19.308657, -45.046627]]; -path18381_paths = [[0, 1]]; - -path18379_points = [[-25.489327, -45.046627], [-27.521377, -45.046627]]; -path18379_paths = [[0, 1]]; - -path18377_points = [[-24.811967, -45.131297], [-19.308657, -45.131297]]; -path18377_paths = [[0, 1]]; - -path18375_points = [[-25.489327, -45.131297], [-27.521377, -45.131297]]; -path18375_paths = [[0, 1]]; - -path18373_points = [[-24.896657, -45.300627], [-19.308657, -45.300627]]; -path18373_paths = [[0, 1]]; - -path18371_points = [[-25.404717, -45.300627], [-27.521377, -45.300627]]; -path18371_paths = [[0, 1]]; - -path18369_points = [[-24.981327, -45.385298], [-22.525997, -45.385298]]; -path18369_paths = [[0, 1]]; - -path18367_points = [[-25.319967, -45.385298], [-27.521377, -45.385298]]; -path18367_paths = [[0, 1]]; - -path18365_points = [[-25.065967, -45.554628], [-22.525997, -45.554628]]; -path18365_paths = [[0, 1]]; - -path18363_points = [[-25.319967, -45.554628], [-26.166637, -45.554628]]; -path18363_paths = [[0, 1]]; - -path18361_points = [[-26.589997, -45.554628], [-27.436637, -45.554628]]; -path18361_paths = [[0, 1]]; - -path18359_points = [[-25.235327, -45.639297], [-22.610657, -45.639297]]; -path18359_paths = [[0, 1]]; - -path18357_points = [[-25.235327, -45.639297], [-26.081997, -45.639297]]; -path18357_paths = [[0, 1]]; - -path18355_points = [[-26.589997, -45.639297], [-27.436637, -45.639297]]; -path18355_paths = [[0, 1]]; - -path18353_points = [[-26.081997, -45.808628], [-22.610657, -45.808628]]; -path18353_paths = [[0, 1]]; - -path18351_points = [[-26.589997, -45.808628], [-27.436637, -45.808628]]; -path18351_paths = [[0, 1]]; - -path18349_points = [[-23.711307, -45.893297], [-22.610657, -45.893297]]; -path18349_paths = [[0, 1]]; - -path18347_points = [[-23.880657, -45.893297], [-26.081997, -45.893297]]; -path18347_paths = [[0, 1]]; - -path18345_points = [[-26.674637, -45.893297], [-27.436637, -45.893297]]; -path18345_paths = [[0, 1]]; - -path18343_points = [[-23.626657, -46.062627], [-22.610657, -46.062627]]; -path18343_paths = [[0, 1]]; - -path18341_points = [[-24.050047, -46.062627], [-26.081997, -46.062627]]; -path18341_paths = [[0, 1]]; - -path18339_points = [[-26.674637, -46.062627], [-27.351997, -46.062627]]; -path18339_paths = [[0, 1]]; - -path18337_points = [[-23.626657, -46.147298], [-22.695307, -46.147298]]; -path18337_paths = [[0, 1]]; - -path18335_points = [[-24.219327, -46.147298], [-26.081997, -46.147298]]; -path18335_paths = [[0, 1]]; - -path18333_points = [[-23.541997, -46.316628], [-23.118657, -46.316628]]; -path18333_paths = [[0, 1]]; - -path18331_points = [[-24.388657, -46.316628], [-25.997327, -46.316628], [-25.997327, -46.401328], [-24.557967, -46.401328]]; -path18331_paths = [[0, 1, 2, 3]]; - -path18329_points = [[-25.912717, -44.115297], [-27.605997, -44.115297]]; -path18329_paths = [[0, 1]]; - -path18327_points = [[-23.880657, -44.115297], [-23.796057, -44.115297]]; -path18327_paths = [[0, 1]]; - -path18325_points = [[-22.525997, -44.115297], [-23.288047, -44.877297], [-23.796047, -44.115297], [-23.880647, -44.115297], [-25.235317, -45.639297], [-25.912697, -44.115297]]; -path18325_paths = [[0, 1, 2, 3, 4, 5]]; - -path18323_points = [[-22.525997, -45.300627], [-19.308657, -45.300627]]; -path18323_paths = [[0, 1]]; - -path18321_points = [[-22.525997, -45.300627], [-22.610697, -46.147297], [-23.457337, -46.401297], [-23.796087, -45.808627]]; -path18321_paths = [[0, 1, 2, 3]]; - -path18319_points = [[-27.351997, -46.147298], [-27.605997, -44.115297]]; -path18319_paths = [[0, 1]]; - -path18317_points = [[-24.557967, -46.401297], [-23.796047, -45.808628]]; -path18317_paths = [[0, 1]]; - -path18315_points = [[-26.166637, -45.469957], [-25.997327, -46.401297]]; -path18315_paths = [[0, 1]]; - -path18313_points = [[-26.674637, -46.147298], [-26.590037, -45.469958], [-26.166677, -45.469958]]; -path18313_paths = [[0, 1, 2]]; - -path18311_points = [[-26.674637, -46.147298], [-27.351997, -46.147298]]; -path18311_paths = [[0, 1]]; - -path18309_points = [[-19.308657, -45.300627], [-19.308657, -44.115297], [-22.525997, -44.115297]]; -path18309_paths = [[0, 1, 2]]; - -path18307_points = [[-24.557967, -46.401297], [-25.997327, -46.401297]]; -path18307_paths = [[0, 1]]; - -path18095_points = [[6.161883, -44.413038], [9.548523, -44.413038]]; -path18095_paths = [[0, 1]]; - -path18093_points = [[3.029213, -44.413038], [1.251213, -44.413038]]; -path18093_paths = [[0, 1]]; - -path18091_points = [[6.161883, -44.582368], [9.548523, -44.582368]]; -path18091_paths = [[0, 1]]; - -path18089_points = [[3.113883, -44.582368], [1.251213, -44.582368]]; -path18089_paths = [[0, 1]]; - -path18087_points = [[5.907883, -44.667037], [9.548523, -44.667037]]; -path18087_paths = [[0, 1]]; - -path18085_points = [[3.367883, -44.667037], [1.251213, -44.667037]]; -path18085_paths = [[0, 1]]; - -path18083_points = [[5.823183, -44.836367], [9.548523, -44.836367]]; -path18083_paths = [[0, 1]]; - -path18081_points = [[3.367883, -44.836367], [1.335853, -44.836367]]; -path18081_paths = [[0, 1]]; - -path18079_points = [[5.738543, -44.921038], [9.548523, -44.921038]]; -path18079_paths = [[0, 1]]; - -path18077_points = [[3.367883, -44.921038], [1.335853, -44.921038]]; -path18077_paths = [[0, 1]]; - -path18075_points = [[5.569183, -45.090368], [9.548523, -45.090368]]; -path18075_paths = [[0, 1]]; - -path18073_points = [[4.637883, -45.090368], [4.468543, -45.090368]]; -path18073_paths = [[0, 1]]; - -path18071_points = [[3.367883, -45.090368], [1.335853, -45.090368]]; -path18071_paths = [[0, 1]]; - -path18069_points = [[5.484543, -45.175038], [9.548523, -45.175038]]; -path18069_paths = [[0, 1]]; - -path18067_points = [[4.807183, -45.175038], [4.299213, -45.175038]]; -path18067_paths = [[0, 1]]; - -path18065_points = [[3.452523, -45.175038], [1.335853, -45.175038]]; -path18065_paths = [[0, 1]]; - -path18063_points = [[5.399883, -45.344368], [9.548523, -45.344368]]; -path18063_paths = [[0, 1]]; - -path18061_points = [[4.976543, -45.344368], [4.214543, -45.344368]]; -path18061_paths = [[0, 1]]; - -path18059_points = [[3.452523, -45.344368], [1.335853, -45.344368]]; -path18059_paths = [[0, 1]]; - -path18057_points = [[5.230543, -45.429037], [9.548523, -45.429037]]; -path18057_paths = [[0, 1]]; - -path18055_points = [[5.145883, -45.429037], [4.129883, -45.429037]]; -path18055_paths = [[0, 1]]; - -path18053_points = [[3.452523, -45.429037], [1.335853, -45.429037]]; -path18053_paths = [[0, 1]]; - -path18051_points = [[4.045213, -45.598367], [9.548523, -45.598367]]; -path18051_paths = [[0, 1]]; - -path18049_points = [[3.452523, -45.598367], [1.335853, -45.598367]]; -path18049_paths = [[0, 1]]; - -path18047_points = [[3.960543, -45.683038], [6.415883, -45.683038]]; -path18047_paths = [[0, 1]]; - -path18045_points = [[3.537213, -45.683038], [1.335853, -45.683038]]; -path18045_paths = [[0, 1]]; - -path18043_points = [[3.791213, -45.852368], [6.331213, -45.852368]]; -path18043_paths = [[0, 1]]; - -path18041_points = [[3.537213, -45.852368], [1.420543, -45.852368]]; -path18041_paths = [[0, 1]]; - -path18039_points = [[3.706523, -45.937038], [6.331213, -45.937038]]; -path18039_paths = [[0, 1]]; - -path18037_points = [[3.537213, -45.937038], [2.775213, -45.937038]]; -path18037_paths = [[0, 1]]; - -path18035_points = [[2.267213, -45.937038], [1.420543, -45.937038]]; -path18035_paths = [[0, 1]]; - -path18033_points = [[4.553213, -46.106368], [6.331213, -46.106368]]; -path18033_paths = [[0, 1]]; - -path18031_points = [[4.468543, -46.106368], [3.621883, -46.106368], [2.775213, -46.106368]]; -path18031_paths = [[0, 1, 2]]; - -path18029_points = [[2.267213, -46.106368], [1.420543, -46.106368]]; -path18029_paths = [[0, 1]]; - -path18027_points = [[4.722543, -46.191037], [6.331213, -46.191037]]; -path18027_paths = [[0, 1]]; - -path18025_points = [[4.383883, -46.191037], [2.775213, -46.191037]]; -path18025_paths = [[0, 1]]; - -path18023_points = [[2.182543, -46.191037], [1.420543, -46.191037]]; -path18023_paths = [[0, 1]]; - -path18021_points = [[4.891883, -46.360367], [6.246543, -46.360367]]; -path18021_paths = [[0, 1]]; - -path18019_points = [[4.299213, -46.360367], [2.859883, -46.360367]]; -path18019_paths = [[0, 1]]; - -path18017_points = [[2.182543, -46.360367], [1.505213, -46.360367]]; -path18017_paths = [[0, 1]]; - -path18015_points = [[5.061183, -46.445038], [6.246543, -46.445038]]; -path18015_paths = [[0, 1]]; - -path18013_points = [[4.214543, -46.445038], [2.859883, -46.445038]]; -path18013_paths = [[0, 1]]; - -path18011_points = [[2.182543, -46.445038], [1.505213, -46.445038]]; -path18011_paths = [[0, 1]]; - -path18009_points = [[5.230543, -46.614368], [6.077213, -46.614368]]; -path18009_paths = [[0, 1]]; - -path18007_points = [[4.045213, -46.614368], [2.859883, -46.614368]]; -path18007_paths = [[0, 1]]; - -path18005_points = [[5.399883, -46.699038], [5.738543, -46.699038]]; -path18005_paths = [[0, 1]]; - -path18003_points = [[3.960543, -46.699038], [2.859883, -46.699038]]; -path18003_paths = [[0, 1]]; - -path18001_points = [[2.944523, -46.868368], [3.875883, -46.868368]]; -path18001_paths = [[0, 1]]; - -path17999_points = [[3.029213, -44.413038], [1.251213, -44.413038]]; -path17999_paths = [[0, 1]]; - -path17997_points = [[6.161883, -44.413038], [6.161883, -44.582368], [5.992543, -44.582368], [5.230543, -45.513708], [4.553213, -44.921038], [3.621883, -46.106368], [3.283213, -44.582368], [3.113883, -44.582368], [3.029183, -44.413038]]; -path17997_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8]]; - -path17995_points = [[6.415883, -45.598367], [9.548523, -45.598367]]; -path17995_paths = [[0, 1]]; - -path17993_points = [[6.415883, -45.598367], [6.246543, -46.529708], [5.484543, -46.783707], [4.553213, -46.021707], [3.875883, -46.868367]]; -path17993_paths = [[0, 1, 2, 3, 4]]; - -path17991_points = [[1.505213, -46.445038], [1.251213, -44.413038]]; -path17991_paths = [[0, 1]]; - -path17989_points = [[2.775213, -45.852368], [2.944523, -46.868368]]; -path17989_paths = [[0, 1]]; - -path17987_points = [[2.182543, -46.445038], [2.267243, -45.852368], [2.775243, -45.852368]]; -path17987_paths = [[0, 1, 2]]; - -path17985_points = [[2.182543, -46.445038], [1.505213, -46.445038]]; -path17985_paths = [[0, 1]]; - -path17983_points = [[9.548523, -45.598367], [9.548523, -44.413038], [6.161883, -44.413038]]; -path17983_paths = [[0, 1, 2]]; - -path17981_points = [[3.875883, -46.868368], [2.944523, -46.868368]]; -path17981_paths = [[0, 1]]; - -path17777_points = [[38.956083, -44.264518], [35.823413, -44.264518]]; -path17777_paths = [[0, 1]]; - -path17775_points = [[32.606113, -44.264518], [30.574113, -44.264518]]; -path17775_paths = [[0, 1]]; - -path17773_points = [[30.743443, -46.127187], [31.505443, -46.127187]]; -path17773_paths = [[0, 1]]; - -path17771_points = [[32.267443, -46.635188], [34.722753, -46.635188]]; -path17771_paths = [[0, 1]]; - -path17769_points = [[35.061413, -45.449858], [38.956083, -45.449858]]; -path17769_paths = [[0, 1]]; - -path17767_points = [[31.928773, -45.703857], [31.505443, -45.703857]]; -path17767_paths = [[0, 1]]; - -path17765_points = [[31.928773, -45.703857], [32.267443, -46.635188]]; -path17765_paths = [[0, 1]]; - -path17763_points = [[31.505443, -46.127187], [31.505443, -45.703857]]; -path17763_paths = [[0, 1]]; - -path17761_points = [[30.743443, -46.127187], [30.574113, -44.264517]]; -path17761_paths = [[0, 1]]; - -path17759_points = [[32.606113, -44.264518], [33.876113, -45.534518]]; -path17759_paths = [[0, 1]]; - -path17757_points = [[38.956083, -45.449858], [38.956083, -44.264518]]; -path17757_paths = [[0, 1]]; - -path17755_points = [[35.823413, -44.264518], [34.214753, -45.534518]]; -path17755_paths = [[0, 1]]; - -path17753_points = [[34.045443, -45.619188], [33.876113, -45.534488]]; -path17753_paths = [[0, 1]]; - -path17751_points = [[34.045443, -45.619188], [34.214753, -45.534488]]; -path17751_paths = [[0, 1]]; - -path17749_points = [[35.061413, -45.449858], [34.722753, -46.635188]]; -path17749_paths = [[0, 1]]; - -path17539_points = [[32.267443, -46.550518], [34.722753, -46.550518], [32.182773, -46.550518], [32.182773, -46.465818], [34.807413, -46.465818], [34.807413, -46.381118], [32.182773, -46.381118], [32.182773, -46.296418], [34.807413, -46.296418], [32.098113, -46.296418], [32.098113, -46.211718], [34.807413, -46.211718]]; -path17539_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]]; - -path17537_points = [[34.892083, -46.127187], [32.098113, -46.127187]]; -path17537_paths = [[0, 1]]; - -path17535_points = [[31.505443, -46.042518], [30.743443, -46.042518]]; -path17535_paths = [[0, 1]]; - -path17533_points = [[32.098113, -46.042518], [34.892083, -46.042518]]; -path17533_paths = [[0, 1]]; - -path17531_points = [[31.505443, -46.042518], [30.743443, -46.042518]]; -path17531_paths = [[0, 1]]; - -path17529_points = [[32.013443, -46.042518], [34.892083, -46.042518]]; -path17529_paths = [[0, 1]]; - -path17527_points = [[31.505443, -45.957857], [30.743443, -45.957857]]; -path17527_paths = [[0, 1]]; - -path17525_points = [[32.013443, -45.957857], [34.892083, -45.957857]]; -path17525_paths = [[0, 1]]; - -path17523_points = [[31.505443, -45.873188], [30.658773, -45.873188]]; -path17523_paths = [[0, 1]]; - -path17521_points = [[32.013443, -45.873188], [34.976753, -45.873188]]; -path17521_paths = [[0, 1]]; - -path17519_points = [[31.505443, -45.788518], [30.658773, -45.788518]]; -path17519_paths = [[0, 1]]; - -path17517_points = [[32.013443, -45.788518], [34.976753, -45.788518]]; -path17517_paths = [[0, 1]]; - -path17515_points = [[31.505443, -45.788518], [30.658773, -45.788518]]; -path17515_paths = [[0, 1]]; - -path17513_points = [[31.928773, -45.788518], [34.976753, -45.788518]]; -path17513_paths = [[0, 1]]; - -path17511_points = [[31.505443, -45.703857], [30.658773, -45.703857]]; -path17511_paths = [[0, 1]]; - -path17509_points = [[31.928773, -45.703857], [34.976753, -45.703857]]; -path17509_paths = [[0, 1]]; - -path17507_points = [[35.061413, -45.619188], [30.658773, -45.619188], [30.658773, -45.534488], [33.876113, -45.534488]]; -path17507_paths = [[0, 1, 2, 3]]; - -path17505_points = [[34.214753, -45.534517], [35.061413, -45.534517]]; -path17505_paths = [[0, 1]]; - -path17503_points = [[33.876113, -45.534517], [30.658773, -45.534517]]; -path17503_paths = [[0, 1]]; - -path17501_points = [[34.299413, -45.534517], [35.061413, -45.534517]]; -path17501_paths = [[0, 1]]; - -path17499_points = [[33.791443, -45.449858], [30.658773, -45.449858]]; -path17499_paths = [[0, 1]]; - -path17497_points = [[34.384083, -45.449858], [38.956083, -45.449858]]; -path17497_paths = [[0, 1]]; - -path17495_points = [[33.706773, -45.365187], [30.658773, -45.365187]]; -path17495_paths = [[0, 1]]; - -path17493_points = [[34.468753, -45.365187], [38.956083, -45.365187]]; -path17493_paths = [[0, 1]]; - -path17491_points = [[33.622113, -45.280518], [30.658773, -45.280518]]; -path17491_paths = [[0, 1]]; - -path17489_points = [[34.553413, -45.280518], [38.956083, -45.280518]]; -path17489_paths = [[0, 1]]; - -path17487_points = [[33.622113, -45.280518], [30.574113, -45.280518]]; -path17487_paths = [[0, 1]]; - -path17485_points = [[34.638083, -45.280518], [38.956083, -45.280518]]; -path17485_paths = [[0, 1]]; - -path17483_points = [[33.537443, -45.195857], [30.574113, -45.195857]]; -path17483_paths = [[0, 1]]; - -path17481_points = [[34.722753, -45.195857], [38.956083, -45.195857]]; -path17481_paths = [[0, 1]]; - -path17479_points = [[33.452773, -45.111187], [30.574113, -45.111187]]; -path17479_paths = [[0, 1]]; - -path17477_points = [[34.807413, -45.111187], [38.956083, -45.111187]]; -path17477_paths = [[0, 1]]; - -path17475_points = [[33.368113, -45.026518], [30.574113, -45.026518]]; -path17475_paths = [[0, 1]]; - -path17473_points = [[34.892083, -45.026518], [38.956083, -45.026518]]; -path17473_paths = [[0, 1]]; - -path17471_points = [[33.368113, -45.026518], [30.574113, -45.026518]]; -path17471_paths = [[0, 1]]; - -path17469_points = [[34.976753, -45.026518], [38.956083, -45.026518]]; -path17469_paths = [[0, 1]]; - -path17467_points = [[33.283443, -44.941857], [30.574113, -44.941857]]; -path17467_paths = [[0, 1]]; - -path17465_points = [[34.976753, -44.941857], [38.956083, -44.941857]]; -path17465_paths = [[0, 1]]; - -path17463_points = [[33.198773, -44.857188], [30.574113, -44.857188]]; -path17463_paths = [[0, 1]]; - -path17461_points = [[35.061413, -44.857188], [38.956083, -44.857188]]; -path17461_paths = [[0, 1]]; - -path17459_points = [[33.114113, -44.772517], [30.574113, -44.772517]]; -path17459_paths = [[0, 1]]; - -path17457_points = [[35.146083, -44.772517], [38.956083, -44.772517]]; -path17457_paths = [[0, 1]]; - -path17455_points = [[33.114113, -44.772517], [30.574113, -44.772517]]; -path17455_paths = [[0, 1]]; - -path17453_points = [[35.230753, -44.772517], [38.956083, -44.772517]]; -path17453_paths = [[0, 1]]; - -path17451_points = [[33.029443, -44.687858], [30.574113, -44.687858]]; -path17451_paths = [[0, 1]]; - -path17449_points = [[35.315413, -44.687858], [38.956083, -44.687858]]; -path17449_paths = [[0, 1]]; - -path17447_points = [[32.944773, -44.603187], [30.574113, -44.603187]]; -path17447_paths = [[0, 1]]; - -path17445_points = [[35.400083, -44.603187], [38.956083, -44.603187]]; -path17445_paths = [[0, 1]]; - -path17443_points = [[32.860113, -44.518518], [30.574113, -44.518518]]; -path17443_paths = [[0, 1]]; - -path17441_points = [[35.484803, -44.518518], [38.956083, -44.518518]]; -path17441_paths = [[0, 1]]; - -path17439_points = [[32.860113, -44.518518], [30.574113, -44.518518]]; -path17439_paths = [[0, 1]]; - -path17437_points = [[35.569473, -44.518518], [38.956083, -44.518518]]; -path17437_paths = [[0, 1]]; - -path17435_points = [[32.775443, -44.433857], [30.574113, -44.433857]]; -path17435_paths = [[0, 1]]; - -path17433_points = [[35.654083, -44.433857], [38.956083, -44.433857]]; -path17433_paths = [[0, 1]]; - -path17431_points = [[32.690773, -44.349187], [30.574113, -44.349187]]; -path17431_paths = [[0, 1]]; - -path17429_points = [[35.738753, -44.349187], [38.956083, -44.349187]]; -path17429_paths = [[0, 1]]; - -path17427_points = [[32.606113, -44.264518], [30.574113, -44.264518]]; -path17427_paths = [[0, 1]]; - -path6800_points = [[35.823413, -44.264518], [38.956083, -44.264518]]; -path6800_paths = [[0, 1]]; - -//polygon(points=outline_points, paths=outline_paths); -//polygon(points=engrave_points, paths=engrave_paths); -//polygon(points=warding_fm_points, paths=warding_fm_paths); -//polygon(points=warding_a_points, paths=warding_a_paths); -//polygon(points=warding_b_points, paths=warding_b_paths); -//polygon(points=warding_c_points, paths=warding_c_paths); -//polygon(points=path17423_points, paths=path17423_paths); -//polygon(points=path17421_points, paths=path17421_paths); -//polygon(points=path17419_points, paths=path17419_paths); -//polygon(points=path17417_points, paths=path17417_paths); -//polygon(points=path17415_points, paths=path17415_paths); -//polygon(points=path17413_points, paths=path17413_paths); -//polygon(points=path17411_points, paths=path17411_paths); -//polygon(points=path17409_points, paths=path17409_paths); -//polygon(points=path17407_points, paths=path17407_paths); -//polygon(points=path17405_points, paths=path17405_paths); -//polygon(points=path17403_points, paths=path17403_paths); -//polygon(points=path17401_points, paths=path17401_paths); -//polygon(points=path17399_points, paths=path17399_paths); -//polygon(points=path17397_points, paths=path17397_paths); -//polygon(points=path17395_points, paths=path17395_paths); -//polygon(points=path17393_points, paths=path17393_paths); -//polygon(points=path17391_points, paths=path17391_paths); -//polygon(points=path17389_points, paths=path17389_paths); -//polygon(points=path17387_points, paths=path17387_paths); -//polygon(points=path17385_points, paths=path17385_paths); -//polygon(points=path17383_points, paths=path17383_paths); -//polygon(points=path17381_points, paths=path17381_paths); -//polygon(points=path17379_points, paths=path17379_paths); -//polygon(points=path17377_points, paths=path17377_paths); -//polygon(points=path17375_points, paths=path17375_paths); -//polygon(points=path17373_points, paths=path17373_paths); -//polygon(points=path17371_points, paths=path17371_paths); -//polygon(points=path17369_points, paths=path17369_paths); -//polygon(points=path17367_points, paths=path17367_paths); -//polygon(points=path17365_points, paths=path17365_paths); -//polygon(points=path17363_points, paths=path17363_paths); -//polygon(points=path17361_points, paths=path17361_paths); -//polygon(points=path17359_points, paths=path17359_paths); -//polygon(points=path17357_points, paths=path17357_paths); -//polygon(points=path17355_points, paths=path17355_paths); -//polygon(points=path17353_points, paths=path17353_paths); -//polygon(points=path17351_points, paths=path17351_paths); -//polygon(points=path17349_points, paths=path17349_paths); -//polygon(points=path17347_points, paths=path17347_paths); -//polygon(points=path17345_points, paths=path17345_paths); -//polygon(points=path17343_points, paths=path17343_paths); -//polygon(points=path17341_points, paths=path17341_paths); -//polygon(points=path17339_points, paths=path17339_paths); -//polygon(points=path17337_points, paths=path17337_paths); -//polygon(points=path17125_points, paths=path17125_paths); -//polygon(points=path17123_points, paths=path17123_paths); -//polygon(points=path17121_points, paths=path17121_paths); -//polygon(points=path17119_points, paths=path17119_paths); -//polygon(points=path17117_points, paths=path17117_paths); -//polygon(points=path17115_points, paths=path17115_paths); -//polygon(points=path17113_points, paths=path17113_paths); -//polygon(points=path17111_points, paths=path17111_paths); -//polygon(points=path17109_points, paths=path17109_paths); -//polygon(points=path17107_points, paths=path17107_paths); -//polygon(points=path17105_points, paths=path17105_paths); -//polygon(points=path17103_points, paths=path17103_paths); -//polygon(points=path17101_points, paths=path17101_paths); -//polygon(points=path17099_points, paths=path17099_paths); -//polygon(points=path17097_points, paths=path17097_paths); -//polygon(points=path17095_points, paths=path17095_paths); -//polygon(points=path17093_points, paths=path17093_paths); -//polygon(points=path17091_points, paths=path17091_paths); -//polygon(points=path17089_points, paths=path17089_paths); -//polygon(points=path17087_points, paths=path17087_paths); -//polygon(points=path17085_points, paths=path17085_paths); -//polygon(points=path17083_points, paths=path17083_paths); -//polygon(points=path17081_points, paths=path17081_paths); -//polygon(points=path17079_points, paths=path17079_paths); -//polygon(points=path17077_points, paths=path17077_paths); -//polygon(points=path17075_points, paths=path17075_paths); -//polygon(points=path17073_points, paths=path17073_paths); -//polygon(points=path17071_points, paths=path17071_paths); -//polygon(points=path17069_points, paths=path17069_paths); -//polygon(points=path17067_points, paths=path17067_paths); -//polygon(points=path17065_points, paths=path17065_paths); -//polygon(points=path17063_points, paths=path17063_paths); -//polygon(points=path17061_points, paths=path17061_paths); -//polygon(points=path17059_points, paths=path17059_paths); -//polygon(points=path17057_points, paths=path17057_paths); -//polygon(points=path17055_points, paths=path17055_paths); -//polygon(points=path17053_points, paths=path17053_paths); -//polygon(points=path17051_points, paths=path17051_paths); -//polygon(points=path17049_points, paths=path17049_paths); -//polygon(points=path17047_points, paths=path17047_paths); -//polygon(points=path17045_points, paths=path17045_paths); -//polygon(points=path17043_points, paths=path17043_paths); -//polygon(points=path17041_points, paths=path17041_paths); -//polygon(points=path17039_points, paths=path17039_paths); -//polygon(points=path17037_points, paths=path17037_paths); -//polygon(points=path16835_points, paths=path16835_paths); -//polygon(points=path16833_points, paths=path16833_paths); -//polygon(points=path16831_points, paths=path16831_paths); -//polygon(points=path16829_points, paths=path16829_paths); -//polygon(points=path16827_points, paths=path16827_paths); -//polygon(points=path16825_points, paths=path16825_paths); -//polygon(points=path16823_points, paths=path16823_paths); -//polygon(points=path16821_points, paths=path16821_paths); -//polygon(points=path16819_points, paths=path16819_paths); -//polygon(points=path16817_points, paths=path16817_paths); -//polygon(points=path16815_points, paths=path16815_paths); -//polygon(points=path16813_points, paths=path16813_paths); -//polygon(points=path16811_points, paths=path16811_paths); -//polygon(points=path16809_points, paths=path16809_paths); -//polygon(points=path16807_points, paths=path16807_paths); -//polygon(points=path16805_points, paths=path16805_paths); -//polygon(points=path16803_points, paths=path16803_paths); -//polygon(points=path16801_points, paths=path16801_paths); -//polygon(points=path16799_points, paths=path16799_paths); -//polygon(points=path16797_points, paths=path16797_paths); -//polygon(points=path16795_points, paths=path16795_paths); -//polygon(points=path16793_points, paths=path16793_paths); -//polygon(points=path16791_points, paths=path16791_paths); -//polygon(points=path16789_points, paths=path16789_paths); -//polygon(points=path16787_points, paths=path16787_paths); -//polygon(points=path16785_points, paths=path16785_paths); -//polygon(points=path16783_points, paths=path16783_paths); -//polygon(points=path16781_points, paths=path16781_paths); -//polygon(points=path16779_points, paths=path16779_paths); -//polygon(points=path16777_points, paths=path16777_paths); -//polygon(points=path16775_points, paths=path16775_paths); -//polygon(points=path16773_points, paths=path16773_paths); -//polygon(points=path16771_points, paths=path16771_paths); -//polygon(points=path16769_points, paths=path16769_paths); -//polygon(points=path16767_points, paths=path16767_paths); -//polygon(points=path16765_points, paths=path16765_paths); -//polygon(points=path16763_points, paths=path16763_paths); -//polygon(points=path16761_points, paths=path16761_paths); -//polygon(points=path16369_points, paths=path16369_paths); -//polygon(points=path16367_points, paths=path16367_paths); -//polygon(points=path16365_points, paths=path16365_paths); -//polygon(points=path16363_points, paths=path16363_paths); -//polygon(points=path16361_points, paths=path16361_paths); -//polygon(points=path16359_points, paths=path16359_paths); -//polygon(points=path16357_points, paths=path16357_paths); -//polygon(points=path16355_points, paths=path16355_paths); -//polygon(points=path16353_points, paths=path16353_paths); -//polygon(points=path16351_points, paths=path16351_paths); -//polygon(points=path16349_points, paths=path16349_paths); -//polygon(points=path16347_points, paths=path16347_paths); -//polygon(points=path16345_points, paths=path16345_paths); -//polygon(points=path16343_points, paths=path16343_paths); -//polygon(points=path16341_points, paths=path16341_paths); -//polygon(points=path16339_points, paths=path16339_paths); -//polygon(points=path16337_points, paths=path16337_paths); -//polygon(points=path16335_points, paths=path16335_paths); -//polygon(points=path16333_points, paths=path16333_paths); -//polygon(points=path6550_points, paths=path6550_paths); -//polygon(points=path16329_points, paths=path16329_paths); -//polygon(points=path16327_points, paths=path16327_paths); -//polygon(points=path16325_points, paths=path16325_paths); -//polygon(points=path16323_points, paths=path16323_paths); -//polygon(points=path16321_points, paths=path16321_paths); -//polygon(points=path16319_points, paths=path16319_paths); -//polygon(points=path16317_points, paths=path16317_paths); -//polygon(points=path16315_points, paths=path16315_paths); -//polygon(points=path16313_points, paths=path16313_paths); -//polygon(points=path16311_points, paths=path16311_paths); -//polygon(points=path16309_points, paths=path16309_paths); -//polygon(points=path16307_points, paths=path16307_paths); -//polygon(points=path16305_points, paths=path16305_paths); -//polygon(points=path16303_points, paths=path16303_paths); -//polygon(points=path16301_points, paths=path16301_paths); -//polygon(points=path16299_points, paths=path16299_paths); -//polygon(points=path16297_points, paths=path16297_paths); -//polygon(points=path16295_points, paths=path16295_paths); -//polygon(points=path16293_points, paths=path16293_paths); -//polygon(points=path16291_points, paths=path16291_paths); -//polygon(points=path16289_points, paths=path16289_paths); -//polygon(points=path16287_points, paths=path16287_paths); -//polygon(points=path16285_points, paths=path16285_paths); -//polygon(points=path16283_points, paths=path16283_paths); -//polygon(points=path16277_points, paths=path16277_paths); -//polygon(points=path16275_points, paths=path16275_paths); -//polygon(points=path16273_points, paths=path16273_paths); -//polygon(points=path16271_points, paths=path16271_paths); -//polygon(points=path16269_points, paths=path16269_paths); -//polygon(points=path16267_points, paths=path16267_paths); -//polygon(points=path16265_points, paths=path16265_paths); -//polygon(points=path16263_points, paths=path16263_paths); -//polygon(points=path16261_points, paths=path16261_paths); -//polygon(points=path16259_points, paths=path16259_paths); -//polygon(points=path16257_points, paths=path16257_paths); -//polygon(points=path16255_points, paths=path16255_paths); -//polygon(points=path16253_points, paths=path16253_paths); -//polygon(points=path16251_points, paths=path16251_paths); -//polygon(points=path16249_points, paths=path16249_paths); -//polygon(points=path16247_points, paths=path16247_paths); -//polygon(points=path16245_points, paths=path16245_paths); -//polygon(points=path16243_points, paths=path16243_paths); -//polygon(points=path16241_points, paths=path16241_paths); -//polygon(points=path16239_points, paths=path16239_paths); -//polygon(points=path16237_points, paths=path16237_paths); -//polygon(points=path16235_points, paths=path16235_paths); -//polygon(points=path16233_points, paths=path16233_paths); -//polygon(points=path16231_points, paths=path16231_paths); -//polygon(points=path16229_points, paths=path16229_paths); -//polygon(points=path16227_points, paths=path16227_paths); -//polygon(points=path16225_points, paths=path16225_paths); -//polygon(points=path16223_points, paths=path16223_paths); -//polygon(points=path16221_points, paths=path16221_paths); -//polygon(points=path16219_points, paths=path16219_paths); -//polygon(points=path16217_points, paths=path16217_paths); -//polygon(points=path16215_points, paths=path16215_paths); -//polygon(points=path16213_points, paths=path16213_paths); -//polygon(points=path16211_points, paths=path16211_paths); -//polygon(points=path16209_points, paths=path16209_paths); -//polygon(points=path16207_points, paths=path16207_paths); -//polygon(points=path16205_points, paths=path16205_paths); -//polygon(points=path16203_points, paths=path16203_paths); -//polygon(points=path16201_points, paths=path16201_paths); -//polygon(points=path19155_points, paths=path19155_paths); -//polygon(points=path19153_points, paths=path19153_paths); -//polygon(points=path19151_points, paths=path19151_paths); -//polygon(points=path19149_points, paths=path19149_paths); -//polygon(points=path19147_points, paths=path19147_paths); -//polygon(points=path19145_points, paths=path19145_paths); -//polygon(points=path19143_points, paths=path19143_paths); -//polygon(points=path19141_points, paths=path19141_paths); -//polygon(points=path19139_points, paths=path19139_paths); -//polygon(points=path19137_points, paths=path19137_paths); -//polygon(points=path19135_points, paths=path19135_paths); -//polygon(points=path19133_points, paths=path19133_paths); -//polygon(points=path19131_points, paths=path19131_paths); -//polygon(points=path19129_points, paths=path19129_paths); -//polygon(points=path19127_points, paths=path19127_paths); -//polygon(points=path19125_points, paths=path19125_paths); -//polygon(points=path19123_points, paths=path19123_paths); -//polygon(points=path6634_points, paths=path6634_paths); -//polygon(points=path19119_points, paths=path19119_paths); -//polygon(points=path19117_points, paths=path19117_paths); -//polygon(points=path19115_points, paths=path19115_paths); -//polygon(points=path19113_points, paths=path19113_paths); -//polygon(points=path19111_points, paths=path19111_paths); -//polygon(points=path19109_points, paths=path19109_paths); -//polygon(points=path19107_points, paths=path19107_paths); -//polygon(points=path19105_points, paths=path19105_paths); -//polygon(points=path19103_points, paths=path19103_paths); -//polygon(points=path19101_points, paths=path19101_paths); -//polygon(points=path19099_points, paths=path19099_paths); -//polygon(points=path19097_points, paths=path19097_paths); -//polygon(points=path19095_points, paths=path19095_paths); -//polygon(points=path19093_points, paths=path19093_paths); -//polygon(points=path19091_points, paths=path19091_paths); -//polygon(points=path19089_points, paths=path19089_paths); -//polygon(points=path19087_points, paths=path19087_paths); -//polygon(points=path19085_points, paths=path19085_paths); -//polygon(points=path19083_points, paths=path19083_paths); -//polygon(points=path19081_points, paths=path19081_paths); -//polygon(points=path19079_points, paths=path19079_paths); -//polygon(points=path19077_points, paths=path19077_paths); -//polygon(points=path19075_points, paths=path19075_paths); -//polygon(points=path19073_points, paths=path19073_paths); -//polygon(points=path19071_points, paths=path19071_paths); -//polygon(points=path19069_points, paths=path19069_paths); -//polygon(points=path19067_points, paths=path19067_paths); -//polygon(points=path19065_points, paths=path19065_paths); -//polygon(points=path19063_points, paths=path19063_paths); -//polygon(points=path6636_points, paths=path6636_paths); -//polygon(points=path18857_points, paths=path18857_paths); -//polygon(points=path18855_points, paths=path18855_paths); -//polygon(points=path18853_points, paths=path18853_paths); -//polygon(points=path18851_points, paths=path18851_paths); -//polygon(points=path18849_points, paths=path18849_paths); -//polygon(points=path18847_points, paths=path18847_paths); -//polygon(points=path18845_points, paths=path18845_paths); -//polygon(points=path18843_points, paths=path18843_paths); -//polygon(points=path6658_points, paths=path6658_paths); -//polygon(points=path18839_points, paths=path18839_paths); -//polygon(points=path18837_points, paths=path18837_paths); -//polygon(points=path18835_points, paths=path18835_paths); -//polygon(points=path18833_points, paths=path18833_paths); -//polygon(points=path18831_points, paths=path18831_paths); -//polygon(points=path18829_points, paths=path18829_paths); -//polygon(points=path18827_points, paths=path18827_paths); -//polygon(points=path18825_points, paths=path18825_paths); -//polygon(points=path18823_points, paths=path18823_paths); -//polygon(points=path18821_points, paths=path18821_paths); -//polygon(points=path18819_points, paths=path18819_paths); -//polygon(points=path18817_points, paths=path18817_paths); -//polygon(points=path18815_points, paths=path18815_paths); -//polygon(points=path18813_points, paths=path18813_paths); -//polygon(points=path18811_points, paths=path18811_paths); -//polygon(points=path18809_points, paths=path18809_paths); -//polygon(points=path18807_points, paths=path18807_paths); -//polygon(points=path18805_points, paths=path18805_paths); -//polygon(points=path18803_points, paths=path18803_paths); -//polygon(points=path18801_points, paths=path18801_paths); -//polygon(points=path18799_points, paths=path18799_paths); -//polygon(points=path18797_points, paths=path18797_paths); -//polygon(points=path18795_points, paths=path18795_paths); -//polygon(points=path18793_points, paths=path18793_paths); -//polygon(points=path18791_points, paths=path18791_paths); -//polygon(points=path18789_points, paths=path18789_paths); -//polygon(points=path18787_points, paths=path18787_paths); -//polygon(points=path18785_points, paths=path18785_paths); -//polygon(points=path18783_points, paths=path18783_paths); -//polygon(points=path18781_points, paths=path18781_paths); -//polygon(points=path18779_points, paths=path18779_paths); -//polygon(points=path18777_points, paths=path18777_paths); -//polygon(points=path18775_points, paths=path18775_paths); -//polygon(points=path18773_points, paths=path18773_paths); -//polygon(points=path18771_points, paths=path18771_paths); -//polygon(points=path18769_points, paths=path18769_paths); -//polygon(points=path18767_points, paths=path18767_paths); -//polygon(points=path18765_points, paths=path18765_paths); -//polygon(points=path18763_points, paths=path18763_paths); -//polygon(points=path18761_points, paths=path18761_paths); -//polygon(points=path18759_points, paths=path18759_paths); -//polygon(points=path18757_points, paths=path18757_paths); -//polygon(points=path18755_points, paths=path18755_paths); -//polygon(points=path18753_points, paths=path18753_paths); -//polygon(points=path18751_points, paths=path18751_paths); -//polygon(points=path18749_points, paths=path18749_paths); -//polygon(points=path18747_points, paths=path18747_paths); -//polygon(points=path18745_points, paths=path18745_paths); -//polygon(points=path18743_points, paths=path18743_paths); -//polygon(points=path18741_points, paths=path18741_paths); -//polygon(points=path18739_points, paths=path18739_paths); -//polygon(points=path6660_points, paths=path6660_paths); -//polygon(points=path18533_points, paths=path18533_paths); -//polygon(points=path18531_points, paths=path18531_paths); -//polygon(points=path18529_points, paths=path18529_paths); -//polygon(points=path18527_points, paths=path18527_paths); -//polygon(points=path18525_points, paths=path18525_paths); -//polygon(points=path18523_points, paths=path18523_paths); -//polygon(points=path18521_points, paths=path18521_paths); -//polygon(points=path18519_points, paths=path18519_paths); -//polygon(points=path18517_points, paths=path18517_paths); -//polygon(points=path6682_points, paths=path6682_paths); -//polygon(points=path18513_points, paths=path18513_paths); -//polygon(points=path18511_points, paths=path18511_paths); -//polygon(points=path18509_points, paths=path18509_paths); -//polygon(points=path18507_points, paths=path18507_paths); -//polygon(points=path18505_points, paths=path18505_paths); -//polygon(points=path18503_points, paths=path18503_paths); -//polygon(points=path18501_points, paths=path18501_paths); -//polygon(points=path18499_points, paths=path18499_paths); -//polygon(points=path18497_points, paths=path18497_paths); -//polygon(points=path18495_points, paths=path18495_paths); -//polygon(points=path18493_points, paths=path18493_paths); -//polygon(points=path18491_points, paths=path18491_paths); -//polygon(points=path18489_points, paths=path18489_paths); -//polygon(points=path18487_points, paths=path18487_paths); -//polygon(points=path18485_points, paths=path18485_paths); -//polygon(points=path18483_points, paths=path18483_paths); -//polygon(points=path18481_points, paths=path18481_paths); -//polygon(points=path18479_points, paths=path18479_paths); -//polygon(points=path18477_points, paths=path18477_paths); -//polygon(points=path18475_points, paths=path18475_paths); -//polygon(points=path18473_points, paths=path18473_paths); -//polygon(points=path18471_points, paths=path18471_paths); -//polygon(points=path18469_points, paths=path18469_paths); -//polygon(points=path18467_points, paths=path18467_paths); -//polygon(points=path18465_points, paths=path18465_paths); -//polygon(points=path18463_points, paths=path18463_paths); -//polygon(points=path18461_points, paths=path18461_paths); -//polygon(points=path18459_points, paths=path18459_paths); -//polygon(points=path18457_points, paths=path18457_paths); -//polygon(points=path18455_points, paths=path18455_paths); -//polygon(points=path18453_points, paths=path18453_paths); -//polygon(points=path18451_points, paths=path18451_paths); -//polygon(points=path18449_points, paths=path18449_paths); -//polygon(points=path18447_points, paths=path18447_paths); -//polygon(points=path18445_points, paths=path18445_paths); -//polygon(points=path18443_points, paths=path18443_paths); -//polygon(points=path18441_points, paths=path18441_paths); -//polygon(points=path18439_points, paths=path18439_paths); -//polygon(points=path18437_points, paths=path18437_paths); -//polygon(points=path18435_points, paths=path18435_paths); -//polygon(points=path18433_points, paths=path18433_paths); -//polygon(points=path18431_points, paths=path18431_paths); -//polygon(points=path18429_points, paths=path18429_paths); -//polygon(points=path18427_points, paths=path18427_paths); -//polygon(points=path18425_points, paths=path18425_paths); -//polygon(points=path6684_points, paths=path6684_paths); -//polygon(points=path18421_points, paths=path18421_paths); -//polygon(points=path18419_points, paths=path18419_paths); -//polygon(points=path18417_points, paths=path18417_paths); -//polygon(points=path18415_points, paths=path18415_paths); -//polygon(points=path18413_points, paths=path18413_paths); -//polygon(points=path18411_points, paths=path18411_paths); -//polygon(points=path18409_points, paths=path18409_paths); -//polygon(points=path18407_points, paths=path18407_paths); -//polygon(points=path18405_points, paths=path18405_paths); -//polygon(points=path18403_points, paths=path18403_paths); -//polygon(points=path18401_points, paths=path18401_paths); -//polygon(points=path18399_points, paths=path18399_paths); -//polygon(points=path18397_points, paths=path18397_paths); -//polygon(points=path18395_points, paths=path18395_paths); -//polygon(points=path18393_points, paths=path18393_paths); -//polygon(points=path18391_points, paths=path18391_paths); -//polygon(points=path18389_points, paths=path18389_paths); -//polygon(points=path18387_points, paths=path18387_paths); -//polygon(points=path18385_points, paths=path18385_paths); -//polygon(points=path18383_points, paths=path18383_paths); -//polygon(points=path18381_points, paths=path18381_paths); -//polygon(points=path18379_points, paths=path18379_paths); -//polygon(points=path18377_points, paths=path18377_paths); -//polygon(points=path18375_points, paths=path18375_paths); -//polygon(points=path18373_points, paths=path18373_paths); -//polygon(points=path18371_points, paths=path18371_paths); -//polygon(points=path18369_points, paths=path18369_paths); -//polygon(points=path18367_points, paths=path18367_paths); -//polygon(points=path18365_points, paths=path18365_paths); -//polygon(points=path18363_points, paths=path18363_paths); -//polygon(points=path18361_points, paths=path18361_paths); -//polygon(points=path18359_points, paths=path18359_paths); -//polygon(points=path18357_points, paths=path18357_paths); -//polygon(points=path18355_points, paths=path18355_paths); -//polygon(points=path18353_points, paths=path18353_paths); -//polygon(points=path18351_points, paths=path18351_paths); -//polygon(points=path18349_points, paths=path18349_paths); -//polygon(points=path18347_points, paths=path18347_paths); -//polygon(points=path18345_points, paths=path18345_paths); -//polygon(points=path18343_points, paths=path18343_paths); -//polygon(points=path18341_points, paths=path18341_paths); -//polygon(points=path18339_points, paths=path18339_paths); -//polygon(points=path18337_points, paths=path18337_paths); -//polygon(points=path18335_points, paths=path18335_paths); -//polygon(points=path18333_points, paths=path18333_paths); -//polygon(points=path18331_points, paths=path18331_paths); -//polygon(points=path18329_points, paths=path18329_paths); -//polygon(points=path18327_points, paths=path18327_paths); -//polygon(points=path18325_points, paths=path18325_paths); -//polygon(points=path18323_points, paths=path18323_paths); -//polygon(points=path18321_points, paths=path18321_paths); -//polygon(points=path18319_points, paths=path18319_paths); -//polygon(points=path18317_points, paths=path18317_paths); -//polygon(points=path18315_points, paths=path18315_paths); -//polygon(points=path18313_points, paths=path18313_paths); -//polygon(points=path18311_points, paths=path18311_paths); -//polygon(points=path18309_points, paths=path18309_paths); -//polygon(points=path18307_points, paths=path18307_paths); -//polygon(points=path18095_points, paths=path18095_paths); -//polygon(points=path18093_points, paths=path18093_paths); -//polygon(points=path18091_points, paths=path18091_paths); -//polygon(points=path18089_points, paths=path18089_paths); -//polygon(points=path18087_points, paths=path18087_paths); -//polygon(points=path18085_points, paths=path18085_paths); -//polygon(points=path18083_points, paths=path18083_paths); -//polygon(points=path18081_points, paths=path18081_paths); -//polygon(points=path18079_points, paths=path18079_paths); -//polygon(points=path18077_points, paths=path18077_paths); -//polygon(points=path18075_points, paths=path18075_paths); -//polygon(points=path18073_points, paths=path18073_paths); -//polygon(points=path18071_points, paths=path18071_paths); -//polygon(points=path18069_points, paths=path18069_paths); -//polygon(points=path18067_points, paths=path18067_paths); -//polygon(points=path18065_points, paths=path18065_paths); -//polygon(points=path18063_points, paths=path18063_paths); -//polygon(points=path18061_points, paths=path18061_paths); -//polygon(points=path18059_points, paths=path18059_paths); -//polygon(points=path18057_points, paths=path18057_paths); -//polygon(points=path18055_points, paths=path18055_paths); -//polygon(points=path18053_points, paths=path18053_paths); -//polygon(points=path18051_points, paths=path18051_paths); -//polygon(points=path18049_points, paths=path18049_paths); -//polygon(points=path18047_points, paths=path18047_paths); -//polygon(points=path18045_points, paths=path18045_paths); -//polygon(points=path18043_points, paths=path18043_paths); -//polygon(points=path18041_points, paths=path18041_paths); -//polygon(points=path18039_points, paths=path18039_paths); -//polygon(points=path18037_points, paths=path18037_paths); -//polygon(points=path18035_points, paths=path18035_paths); -//polygon(points=path18033_points, paths=path18033_paths); -//polygon(points=path18031_points, paths=path18031_paths); -//polygon(points=path18029_points, paths=path18029_paths); -//polygon(points=path18027_points, paths=path18027_paths); -//polygon(points=path18025_points, paths=path18025_paths); -//polygon(points=path18023_points, paths=path18023_paths); -//polygon(points=path18021_points, paths=path18021_paths); -//polygon(points=path18019_points, paths=path18019_paths); -//polygon(points=path18017_points, paths=path18017_paths); -//polygon(points=path18015_points, paths=path18015_paths); -//polygon(points=path18013_points, paths=path18013_paths); -//polygon(points=path18011_points, paths=path18011_paths); -//polygon(points=path18009_points, paths=path18009_paths); -//polygon(points=path18007_points, paths=path18007_paths); -//polygon(points=path18005_points, paths=path18005_paths); -//polygon(points=path18003_points, paths=path18003_paths); -//polygon(points=path18001_points, paths=path18001_paths); -//polygon(points=path17999_points, paths=path17999_paths); -//polygon(points=path17997_points, paths=path17997_paths); -//polygon(points=path17995_points, paths=path17995_paths); -//polygon(points=path17993_points, paths=path17993_paths); -//polygon(points=path17991_points, paths=path17991_paths); -//polygon(points=path17989_points, paths=path17989_paths); -//polygon(points=path17987_points, paths=path17987_paths); -//polygon(points=path17985_points, paths=path17985_paths); -//polygon(points=path17983_points, paths=path17983_paths); -//polygon(points=path17981_points, paths=path17981_paths); -//polygon(points=path17777_points, paths=path17777_paths); -//polygon(points=path17775_points, paths=path17775_paths); -//polygon(points=path17773_points, paths=path17773_paths); -//polygon(points=path17771_points, paths=path17771_paths); -//polygon(points=path17769_points, paths=path17769_paths); -//polygon(points=path17767_points, paths=path17767_paths); -//polygon(points=path17765_points, paths=path17765_paths); -//polygon(points=path17763_points, paths=path17763_paths); -//polygon(points=path17761_points, paths=path17761_paths); -//polygon(points=path17759_points, paths=path17759_paths); -//polygon(points=path17757_points, paths=path17757_paths); -//polygon(points=path17755_points, paths=path17755_paths); -//polygon(points=path17753_points, paths=path17753_paths); -//polygon(points=path17751_points, paths=path17751_paths); -//polygon(points=path17749_points, paths=path17749_paths); -//polygon(points=path17539_points, paths=path17539_paths); -//polygon(points=path17537_points, paths=path17537_paths); -//polygon(points=path17535_points, paths=path17535_paths); -//polygon(points=path17533_points, paths=path17533_paths); -//polygon(points=path17531_points, paths=path17531_paths); -//polygon(points=path17529_points, paths=path17529_paths); -//polygon(points=path17527_points, paths=path17527_paths); -//polygon(points=path17525_points, paths=path17525_paths); -//polygon(points=path17523_points, paths=path17523_paths); -//polygon(points=path17521_points, paths=path17521_paths); -//polygon(points=path17519_points, paths=path17519_paths); -//polygon(points=path17517_points, paths=path17517_paths); -//polygon(points=path17515_points, paths=path17515_paths); -//polygon(points=path17513_points, paths=path17513_paths); -//polygon(points=path17511_points, paths=path17511_paths); -//polygon(points=path17509_points, paths=path17509_paths); -//polygon(points=path17507_points, paths=path17507_paths); -//polygon(points=path17505_points, paths=path17505_paths); -//polygon(points=path17503_points, paths=path17503_paths); -//polygon(points=path17501_points, paths=path17501_paths); -//polygon(points=path17499_points, paths=path17499_paths); -//polygon(points=path17497_points, paths=path17497_paths); -//polygon(points=path17495_points, paths=path17495_paths); -//polygon(points=path17493_points, paths=path17493_paths); -//polygon(points=path17491_points, paths=path17491_paths); -//polygon(points=path17489_points, paths=path17489_paths); -//polygon(points=path17487_points, paths=path17487_paths); -//polygon(points=path17485_points, paths=path17485_paths); -//polygon(points=path17483_points, paths=path17483_paths); -//polygon(points=path17481_points, paths=path17481_paths); -//polygon(points=path17479_points, paths=path17479_paths); -//polygon(points=path17477_points, paths=path17477_paths); -//polygon(points=path17475_points, paths=path17475_paths); -//polygon(points=path17473_points, paths=path17473_paths); -//polygon(points=path17471_points, paths=path17471_paths); -//polygon(points=path17469_points, paths=path17469_paths); -//polygon(points=path17467_points, paths=path17467_paths); -//polygon(points=path17465_points, paths=path17465_paths); -//polygon(points=path17463_points, paths=path17463_paths); -//polygon(points=path17461_points, paths=path17461_paths); -//polygon(points=path17459_points, paths=path17459_paths); -//polygon(points=path17457_points, paths=path17457_paths); -//polygon(points=path17455_points, paths=path17455_paths); -//polygon(points=path17453_points, paths=path17453_paths); -//polygon(points=path17451_points, paths=path17451_paths); -//polygon(points=path17449_points, paths=path17449_paths); -//polygon(points=path17447_points, paths=path17447_paths); -//polygon(points=path17445_points, paths=path17445_paths); -//polygon(points=path17443_points, paths=path17443_paths); -//polygon(points=path17441_points, paths=path17441_paths); -//polygon(points=path17439_points, paths=path17439_paths); -//polygon(points=path17437_points, paths=path17437_paths); -//polygon(points=path17435_points, paths=path17435_paths); -//polygon(points=path17433_points, paths=path17433_paths); -//polygon(points=path17431_points, paths=path17431_paths); -//polygon(points=path17429_points, paths=path17429_paths); -//polygon(points=path17427_points, paths=path17427_paths); -//polygon(points=path6800_points, paths=path6800_paths); diff --git a/scad/best.scad b/scad/best.scad index f7b68bd..7ac2224 100644 --- a/scad/best.scad +++ b/scad/best.scad @@ -1,5 +1,5 @@ use -include +include module best(bitting="", outline_name="1A Standard", diff --git a/scad/falcon_025.scad b/scad/falcon_025.scad new file mode 100644 index 0000000..d24ef50 --- /dev/null +++ b/scad/falcon_025.scad @@ -0,0 +1,59 @@ +use +include + +module falcon_025(bitting="", + outline_name="M", + warding_name="M") { + + name = "Falcon 025"; + + /* + Bitting is specified from bow to tip, 0-6, with 0 being the shallowest cut and 6 being the deepest. + Example: 253630 + */ + + outlines_k = ["M"]; + outlines_v = [[outline_falcon_m_points, outline_falcon_m_paths, + [-outline_falcon_m_points[16][0], -outline_falcon_m_points[141][1]], + engrave_falcon_m_points, + engrave_falcon_m_paths]]; + wardings_k = ["M"]; + wardings_v = [warding_falcon_m_points]; + + outline_param = key_lkup(outlines_k, outlines_v, outline_name); + outline_points = outline_param[0]; + outline_paths = outline_param[1]; + offset = outline_param[2]; + engrave_points = outline_param[3]; + engrave_paths = outline_param[4]; + + warding_points = key_lkup(wardings_k, wardings_v, warding_name); + + cut_locations = [for(i=[.237, .393, .549, .705, .861, 1.017]) i*25.4]; + depth_table = [for(i=[0.340:-0.025:0.189]) i*25.4]; + + heights = key_code_to_heights(bitting, depth_table); + + difference() { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + //engrave_right_points=engrave_points, + //engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations, .7874); + } +} + +// Defaults +bitting=""; +outline="M"; +warding="M"; +falcon_025(bitting, outline, warding); diff --git a/scad/X103-KW12.gen.scad b/scad/gen/X103-KW12.gen.scad similarity index 99% rename from scad/X103-KW12.gen.scad rename to scad/gen/X103-KW12.gen.scad index 331d0a6..707bb7a 100644 --- a/scad/X103-KW12.gen.scad +++ b/scad/gen/X103-KW12.gen.scad @@ -1,6 +1,6 @@ // Automatically generated using the Inkscape to OpenSCAD Converter // Variable names are of the form _points and -// _paths. As a result, you can associate a polygon in this +// _paths. As a result, you can associate a polygon in this // OpenSCAD program with the corresponding SVG element in the Inkscape document // by looking for the XML element with the attribute id="inkscape-path-id". diff --git a/scad/gen/best.gen.scad b/scad/gen/best.gen.scad new file mode 100644 index 0000000..19d6c93 --- /dev/null +++ b/scad/gen/best.gen.scad @@ -0,0 +1,30 @@ +// Automatically generated using the Inkscape to OpenSCAD Converter +// Variable names are of the form _points and +// _paths. As a result, you can associate a polygon in this +// OpenSCAD program with the corresponding SVG element in the Inkscape document +// by looking for the XML element with the attribute id="inkscape-path-id". + +outline_points = [[-37.333813, 12.657868], [-39.365728, 12.318871], [-41.313410, 11.641393], [-41.651891, 11.387663], [-41.906138, 11.049182], [-42.583099, 8.424540], [-43.091077, 5.799897], [-43.345325, 5.207168], [-44.022802, 4.868171], [-45.207741, 4.529693], [-46.393197, 3.936963], [-47.324405, 3.005755], [-47.917133, 1.905048], [-48.256130, 0.634843], [-48.256130, -0.634846], [-47.917133, -1.905051], [-47.324405, -3.005755], [-46.393197, -3.936963], [-45.207741, -4.614441], [-44.022802, -4.952922], [-43.345325, -5.207171], [-43.091077, -5.799897], [-42.583099, -8.424540], [-41.906138, -11.049182], [-41.651891, -11.472411], [-41.313410, -11.726144], [-39.365728, -12.318871], [-37.333813, -12.657868], [-35.301899, -12.657868], [-33.269984, -12.318871], [-31.407051, -11.726144], [-30.983822, -11.472411], [-30.730089, -11.049182], [-30.052614, -8.085543], [-29.459885, -5.122419], [-29.290387, -4.699190], [-28.951906, -4.360193], [-28.443928, -4.191082], [6.268840, -4.191082], [6.692901, -4.106463], [6.946633, -3.852215], [7.031382, -3.428985], [7.031382, -1.820299], [7.200879, -1.481821], [7.539360, -1.312321], [7.962589, -1.312321], [8.385819, -1.142824], [8.640067, -0.634846], [8.724816, 0.042116], [8.555319, 0.634843], [5.253199, 3.852215], [4.914718, 4.106463], [4.491488, 4.190907], [-28.655801, 4.190907], [-29.036655, 4.317817], [-29.375136, 4.699190], [-29.459885, 5.122419], [-30.052614, 8.085543], [-30.730089, 11.049182], [-30.983822, 11.387663], [-31.407051, 11.641393], [-33.269984, 12.318871], [-35.301899, 12.657868], [-43.345325, 2.751507], [-42.498349, 2.582526], [-41.736640, 2.243529], [-41.143912, 1.650802], [-40.720682, 0.804343], [-40.635933, -0.042116], [-40.720682, -0.889091], [-41.143912, -1.650802], [-41.736640, -2.243529], [-42.498349, -2.666759], [-43.345325, -2.751510], [-44.191784, -2.666759], [-44.954010, -2.243529], [-45.630971, -1.650802], [-45.969968, -0.889091], [-46.139466, -0.042116], [-45.969968, 0.804343], [-45.630971, 1.650802], [-44.954010, 2.243529], [-44.191784, 2.582526]]; +outline_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62], [82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63]]; + +engrave_points = [[-31.576537, 11.218252], [-33.439203, 11.810919], [-35.386500, 12.149585], [-37.333904, 12.149585], [-39.196534, 11.810919], [-41.059201, 11.218252], [-41.397867, 10.879586], [-42.075200, 8.339586], [-42.583235, 5.714920], [-42.837200, 5.122254], [-43.260533, 4.614254], [-43.937866, 4.360254], [-45.038533, 4.106254], [-46.054533, 3.513587], [-46.901199, 2.666921], [-47.493865, 1.650921], [-47.747865, 0.550255], [-47.747865, -0.635078], [-47.493865, -1.735745], [-46.901199, -2.751744], [-46.054533, -3.513744], [-45.038533, -4.106411], [-43.937866, -4.445077], [-43.260533, -4.614411], [-42.837200, -5.122410], [-42.583235, -5.715077], [-42.075200, -8.339743], [-41.397867, -10.879742], [-41.059201, -11.218409], [-39.196534, -11.895742], [-37.333904, -12.149742], [-35.386500, -12.149742], [-33.439203, -11.895742], [-31.576537, -11.218409], [-31.237870, -10.879742], [-30.391203, -7.323743], [-29.798536, -3.683078], [-29.629203, -0.042412], [-29.798536, 3.682921], [-30.391203, 7.323587], [-31.237870, 10.879586]]; +engrave_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40]]; + +warding_fm_points = [[47.023010, -3.259811], [47.023010, -2.497811], [48.256130, -1.312476], [48.256130, -0.889151], [46.868870, 0.973519], [46.868870, 4.190849], [46.021130, 4.190849], [46.021130, 1.312199], [46.945970, 0.211529], [47.177140, -0.211801], [47.254240, -0.719811], [47.177140, -1.227811], [46.945970, -1.651151], [46.252340, -2.667141], [46.021130, -2.836481], [46.021130, -4.191150], [47.485430, -4.191150], [47.485430, -3.344496]]; +warding_fm_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]]; + +warding_a_points = [[12.018432, -3.640818], [12.018432, -4.191150], [10.785218, -4.191150], [9.783232, -4.191150], [9.783232, -3.090482], [11.247640, -0.296483], [9.783232, 0.380850], [9.783232, 4.190849], [10.939370, 4.190849], [10.939370, 0.719517], [12.018432, 0.126850], [12.018432, -0.550483], [11.016446, -2.582483], [11.016446, -3.259816]]; +warding_a_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]]; + +warding_b_points = [[22.879667, -3.344482], [22.879667, -2.328482], [23.757703, -1.312482], [23.757703, -0.465818], [22.720025, 0.888849], [22.720025, 4.190849], [21.522703, 4.190849], [21.522703, 0.550182], [22.720025, -0.889151], [21.522703, -2.159148], [21.522703, -4.191150], [23.358596, -4.191150], [23.358596, -3.344482]]; +warding_b_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]; + +warding_c_points = [[30.657525, -1.481817], [31.899192, -0.381151], [30.657525, 0.296148], [30.657525, 4.190849], [31.733630, 4.190849], [31.733630, 0.973516], [32.892525, 0.211516], [32.892525, -0.889151], [31.899192, -1.735817], [31.899192, -3.175185], [32.395858, -3.175185], [32.395858, -4.191150], [30.657525, -4.191150]]; +warding_c_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]; + +//polygon(points=outline_points, paths=outline_paths); +//polygon(points=engrave_points, paths=engrave_paths); +//polygon(points=warding_fm_points, paths=warding_fm_paths); +//polygon(points=warding_a_points, paths=warding_a_paths); +//polygon(points=warding_b_points, paths=warding_b_paths); +//polygon(points=warding_c_points, paths=warding_c_paths); \ No newline at end of file diff --git a/scad/gen/falcon.gen.scad b/scad/gen/falcon.gen.scad new file mode 100644 index 0000000..a1e6953 --- /dev/null +++ b/scad/gen/falcon.gen.scad @@ -0,0 +1,18 @@ +// Automatically generated using the Inkscape to OpenSCAD Converter +// Variable names are of the form _points and +// _paths. As a result, you can associate a polygon in this +// OpenSCAD program with the corresponding SVG element in the Inkscape document +// by looking for the XML element with the attribute id="inkscape-path-id". + +warding_falcon_m_points = [[32.420167, -1.296930], [31.156537, -1.296930], [31.156537, -0.524090], [32.366927, 0.401230], [32.366927, 1.073860], [31.991977, 1.942660], [32.423467, 3.269960], [32.423467, 4.349190], [31.452717, 4.351190], [31.460717, 3.646340], [30.958847, 2.101170], [31.356237, 0.899180], [31.265337, 0.680810], [30.096307, -0.046670], [30.096307, -1.811000], [31.378587, -2.578520], [31.482027, -2.880700], [31.480027, -3.178890], [31.341897, -3.380760], [30.091187, -3.380760], [30.091187, -4.288390], [32.420817, -4.288920]]; +warding_falcon_m_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]]; + +outline_falcon_m_points = [[23.622357, -3.923460], [25.881577, -1.629540], [26.041495, -1.350164], [26.099367, -1.021820], [26.081308, -0.836617], [26.029522, -0.663446], [25.947593, -0.505773], [25.839107, -0.367060], [21.290547, 4.251370], [21.211090, 4.307387], [21.120927, 4.335757], [20.934627, 4.347170], [-5.602853, 4.347170], [-5.705758, 4.356132], [-5.805573, 4.395170], [-5.950428, 4.508086], [-6.002823, 4.669970], [-6.007823, 5.609170], [-6.024959, 5.779142], [-6.074114, 5.937492], [-6.151905, 6.080817], [-6.254952, 6.205714], [-6.379871, 6.308779], [-6.523283, 6.386611], [-6.681804, 6.435806], [-6.852053, 6.452960], [-6.920053, 6.458960], [-10.328473, 6.458960], [-10.476650, 6.488880], [-10.597859, 6.570594], [-10.679688, 6.692033], [-10.709723, 6.841130], [-10.956283, 10.106710], [-10.999102, 10.334239], [-11.079279, 10.555020], [-11.204607, 10.771339], [-11.382879, 10.985480], [-11.621889, 11.199728], [-11.929430, 11.416367], [-12.313293, 11.637683], [-12.781274, 11.865960], [-13.369439, 12.094855], [-14.098280, 12.312534], [-14.952230, 12.513049], [-15.915725, 12.690449], [-16.973200, 12.838784], [-18.109088, 12.952104], [-19.307825, 13.024459], [-20.553845, 13.049900], [-21.796677, 13.023238], [-23.001245, 12.945075], [-24.160707, 12.818146], [-25.268218, 12.645185], [-26.316937, 12.428926], [-27.300017, 12.172105], [-28.210618, 11.877454], [-29.041894, 11.547710], [-29.067964, 11.531710], [-29.279046, 11.426723], [-29.473129, 11.295789], [-29.647938, 11.141174], [-29.801199, 10.965140], [-29.930639, 10.769951], [-30.033983, 10.557871], [-30.108957, 10.331162], [-30.153288, 10.092090], [-30.401220, 6.867630], [-30.412952, 6.732655], [-30.453072, 6.600646], [-30.526737, 6.491634], [-30.639101, 6.425650], [-31.620086, 6.147820], [-31.764494, 6.088907], [-31.902386, 5.997948], [-32.146518, 5.736095], [-32.328280, 5.394675], [-32.423467, 5.006100], [-32.423467, -5.006050], [-32.327577, -5.392230], [-32.144672, -5.729634], [-31.900319, -5.990559], [-31.620086, -6.147300], [-31.153059, -6.261515], [-30.840581, -6.346734], [-30.639101, -6.425140], [-30.536246, -6.512685], [-30.461429, -6.619411], [-30.415977, -6.739497], [-30.401220, -6.867120], [-30.153288, -10.091570], [-30.108956, -10.330498], [-30.033981, -10.557103], [-29.930637, -10.769122], [-29.801198, -10.964291], [-29.647937, -11.140347], [-29.473128, -11.295026], [-29.279046, -11.426065], [-29.067964, -11.531200], [-29.041894, -11.546800], [-28.210618, -11.876584], [-27.300017, -12.171337], [-26.316937, -12.428304], [-25.268218, -12.644730], [-24.160707, -12.817858], [-23.001245, -12.944933], [-21.796677, -13.023199], [-20.553845, -13.049900], [-19.307825, -13.024440], [-18.109088, -12.952032], [-16.973200, -12.838638], [-15.915725, -12.690219], [-14.952230, -12.512734], [-14.098280, -12.312146], [-13.369439, -12.094414], [-12.781274, -11.865500], [-12.313291, -11.637205], [-11.929420, -11.415844], [-11.621871, -11.199149], [-11.382853, -10.984851], [-11.204576, -10.770681], [-11.079249, -10.554370], [-10.999082, -10.333649], [-10.956283, -10.106250], [-10.709723, -6.840710], [-10.679688, -6.692333], [-10.597859, -6.571142], [-10.476650, -6.489420], [-10.328473, -6.459450], [-8.389313, -6.459450], [-8.322213, -6.452450], [-8.151983, -6.435314], [-7.993514, -6.386159], [-7.850177, -6.308368], [-7.725342, -6.205321], [-7.622380, -6.080402], [-7.544662, -5.936990], [-7.495560, -5.778469], [-7.478443, -5.608220], [-7.472443, -4.668550], [-7.420370, -4.478666], [-7.275193, -4.337060], [-7.175475, -4.298122], [-7.073373, -4.288660], [23.179097, -4.288660], [23.268523, -4.258831], [23.372160, -4.178675], [23.622057, -3.923370], [-25.710339, -3.335110], [-25.730085, -3.531062], [-25.786718, -3.713595], [-25.876333, -3.878792], [-25.995023, -4.022736], [-26.138883, -4.141511], [-26.304007, -4.231199], [-26.486489, -4.287885], [-26.682422, -4.307650], [-29.359422, -4.307650], [-29.555486, -4.287885], [-29.738029, -4.231199], [-29.903161, -4.141511], [-30.046991, -4.022736], [-30.165631, -3.878792], [-30.255190, -3.713595], [-30.311778, -3.531062], [-30.331505, -3.335110], [-30.331505, 3.364010], [-30.311778, 3.559681], [-30.255190, 3.742039], [-30.165631, 3.907147], [-30.046991, 4.051065], [-29.903161, 4.169856], [-29.738029, 4.259583], [-29.555486, 4.316307], [-29.359422, 4.336090], [-26.682422, 4.336090], [-26.486489, 4.316307], [-26.304007, 4.259583], [-26.138883, 4.169856], [-25.995023, 4.051065], [-25.876333, 3.907147], [-25.786718, 3.742039], [-25.730085, 3.559681], [-25.710339, 3.364010]]; +outline_falcon_m_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146], [182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147]]; + +engrave_falcon_m_points = [[-20.893868, 11.815710], [-21.987650, 11.792210], [-23.047675, 11.723326], [-24.067952, 11.611479], [-25.042489, 11.459091], [-25.965296, 11.268585], [-26.830381, 11.042384], [-27.631753, 10.782908], [-28.363420, 10.492580], [-28.386470, 10.478780], [-28.743053, 10.271345], [-29.031679, 9.980315], [-29.236406, 9.621822], [-29.341293, 9.212000], [-29.559510, 5.849630], [-29.612582, 5.632030], [-29.678506, 5.538132], [-29.769018, 5.461350], [-30.290995, 5.326110], [-30.495893, 5.274410], [-30.821865, 5.103597], [-31.077220, 4.856735], [-31.252701, 4.553113], [-31.339048, 4.212020], [-31.339048, -4.151910], [-31.252702, -4.493316], [-31.077222, -4.797065], [-30.821866, -5.043709], [-30.495893, -5.213800], [-30.290995, -5.266600], [-29.769018, -5.401830], [-29.678496, -5.478397], [-29.612555, -5.572248], [-29.559510, -5.789600], [-29.341293, -9.074630], [-29.236404, -9.484113], [-29.031677, -9.842341], [-28.743052, -10.133282], [-28.386470, -10.340900], [-28.363420, -10.355200], [-27.631753, -10.645333], [-26.830381, -10.904575], [-25.965296, -11.130524], [-25.042489, -11.320778], [-24.067952, -11.472934], [-23.047675, -11.584592], [-21.987650, -11.653348], [-20.893868, -11.676800], [-19.898598, -11.657996], [-18.930725, -11.602598], [-17.994753, -11.512123], [-17.095180, -11.388090], [-16.236507, -11.232017], [-15.423237, -11.045422], [-14.659868, -10.829824], [-13.950903, -10.586740], [-13.526253, -10.425890], [-13.332999, -10.313306], [-13.157865, -10.176094], [-13.003209, -10.016629], [-12.871388, -9.837284], [-12.764757, -9.640431], [-12.685674, -9.428444], [-12.636496, -9.203696], [-12.619580, -8.968560], [-12.614380, 9.122900], [-12.631271, 9.357882], [-12.680378, 9.582510], [-12.759353, 9.794407], [-12.865847, 9.991196], [-12.997510, 10.170499], [-13.151993, 10.329939], [-13.326949, 10.467139], [-13.520028, 10.579720], [-13.946261, 10.740040], [-14.577859, 10.959290], [-14.795564, 11.009490], [-16.142271, 11.350824], [-17.622453, 11.604051], [-19.213759, 11.761565], [-20.893837, 11.815760], [-20.575764, 9.200700], [-20.478434, 9.160700], [-18.433041, 7.961530], [-18.378741, 7.852430], [-18.380841, 7.341210], [-18.410828, 7.254924], [-18.486364, 7.207000], [-19.483705, 6.954970], [-18.433090, 6.338740], [-18.378790, 6.228610], [-18.381390, 5.718410], [-18.421778, 5.620497], [-18.519695, 5.580110], [-18.585775, 5.597010], [-20.618362, 6.803860], [-20.686967, 6.853326], [-20.714142, 6.934990], [-20.714142, 7.439550], [-20.681680, 7.528729], [-20.600936, 7.575810], [-19.501147, 7.763290], [-20.618353, 8.427160], [-20.686962, 8.476241], [-20.714133, 8.558810], [-20.714133, 9.062860], [-20.673576, 9.160185], [-20.575827, 9.200660], [-24.401720, 7.521050], [-24.274663, 7.501725], [-24.161989, 7.447750], [-22.493608, 6.467830], [-22.140796, 6.234177], [-22.042288, 6.089020], [-22.007489, 5.862870], [-22.007489, 5.846970], [-22.005889, 5.862870], [-22.005889, 2.034860], [-22.005889, 2.012360], [-21.984848, 1.941105], [-21.930589, 1.893520], [-21.459324, 1.581560], [-21.368910, 1.504792], [-21.293312, 1.397507], [-21.241427, 1.274806], [-21.222155, 1.151790], [-21.242125, 0.702040], [-21.240525, -2.629600], [-21.274353, -2.796564], [-21.366548, -2.932839], [-21.503175, -3.024682], [-21.670299, -3.058350], [-21.854195, -3.016850], [-24.273014, -1.592300], [-24.282214, -1.587300], [-24.506490, -1.419893], [-24.680106, -1.200760], [-24.792224, -0.940692], [-24.832005, -0.650480], [-24.832005, 7.060850], [-24.832005, 7.090550], [-24.798225, 7.257949], [-24.706068, 7.394731], [-24.569308, 7.486996], [-24.401720, 7.520840], [-20.557324, 6.287560], [-20.490214, 6.271160], [-18.457627, 5.063290], [-18.389532, 5.013636], [-18.362867, 4.932160], [-18.364467, 2.702870], [-18.404769, 2.604952], [-18.502260, 2.564560], [-18.568340, 2.581460], [-20.601439, 3.788310], [-20.669798, 3.837980], [-20.696719, 3.920470], [-20.695119, 6.149250], [-20.654649, 6.247012], [-20.557326, 6.287550], [-23.987314, 6.149770], [-24.054645, 6.121745], [-24.082594, 6.053970], [-24.082594, 6.024270], [-24.082594, -0.095000], [-24.079994, -0.124700], [-24.059484, -0.277341], [-24.001694, -0.414195], [-23.912236, -0.530139], [-23.796723, -0.620050], [-22.244110, -1.539530], [-22.200060, -1.550330], [-22.132050, -1.521868], [-22.103760, -1.454030], [-22.107360, -1.416630], [-22.107360, 0.807030], [-22.108960, 0.825430], [-22.156090, 0.908430], [-22.568427, 1.217320], [-22.723063, 1.339911], [-22.777688, 1.425972], [-22.798937, 1.519030], [-22.798425, 1.572830], [-22.798425, 5.102190], [-22.795325, 5.124190], [-22.813514, 5.268322], [-22.865002, 5.399022], [-22.945170, 5.511660], [-23.049399, 5.601600], [-23.930460, 6.131260], [-23.987320, 6.149660], [-19.892430, 4.936260], [-19.955929, 4.906572], [-19.982070, 4.840960], [-19.982070, 4.502880], [-19.958470, 4.425917], [-19.897550, 4.376360], [-19.163504, 3.947100], [-19.113304, 3.931700], [-19.046833, 3.959562], [-19.019054, 4.026500], [-19.019054, 4.371750], [-19.042650, 4.448712], [-19.103574, 4.498270], [-19.838133, 4.921410], [-19.887823, 4.936310], [-19.892523, 4.936310], [-20.587546, 3.223320], [-20.489706, 3.182820], [-20.060445, 2.886740], [-20.020969, 2.839287], [-20.006145, 2.777120], [-20.010845, 1.540050], [-19.987504, 1.462996], [-19.926835, 1.411990], [-19.857175, 1.377690], [-19.238383, 1.009380], [-19.192283, 0.983280], [-19.142593, 0.968980], [-19.075262, 0.996580], [-19.047313, 1.063180], [-19.051913, 1.433020], [-19.113893, 1.500120], [-19.132843, 1.515520], [-19.149743, 1.556020], [-19.147143, 1.601620], [-19.143543, 2.202490], [-19.103073, 2.300065], [-19.005750, 2.340790], [-18.926870, 2.316190], [-18.444848, 2.055970], [-18.390548, 1.946860], [-18.393148, -0.319820], [-18.433618, -0.417208], [-18.530942, -0.458120], [-18.597022, -0.441220], [-20.630121, 0.766660], [-20.698480, 0.816040], [-20.725401, 0.898300], [-20.725401, 3.085590], [-20.685268, 3.183435], [-20.587608, 3.223380], [-20.590146, -0.539630], [-20.516386, -0.560130], [-19.192233, -1.317740], [-19.142543, -1.331540], [-19.075472, -1.303578], [-19.047783, -1.236240], [-19.040083, -0.792120], [-18.999781, -0.694395], [-18.902289, -0.653820], [-18.823919, -0.677920], [-18.444859, -0.884350], [-18.405383, -0.932055], [-18.390559, -0.994490], [-18.395259, -2.920530], [-18.435561, -3.018293], [-18.533052, -3.058830], [-18.599132, -3.041930], [-20.632743, -1.834570], [-20.701102, -1.785190], [-20.728023, -1.702930], [-20.728023, -0.676390], [-20.687721, -0.579768], [-20.590230, -0.539620], [-17.255433, -0.644640], [-17.121118, -0.665078], [-17.002896, -0.721440], [-14.496483, -2.311960], [-14.344855, -2.441731], [-14.228519, -2.604054], [-14.153961, -2.792317], [-14.127667, -2.999910], [-14.128179, -3.037310], [-14.128179, -6.790520], [-14.121579, -6.817120], [-14.157164, -6.992613], [-14.254078, -7.136080], [-14.397565, -7.232889], [-14.572866, -7.268410], [-14.766495, -7.224910], [-17.119235, -5.846970], [-17.129485, -5.841970], [-17.364824, -5.666466], [-17.546945, -5.436048], [-17.664524, -5.162470], [-17.706234, -4.857490], [-17.706234, -1.127830], [-17.706745, -1.096030], [-17.671225, -0.920348], [-17.574417, -0.776906], [-17.430951, -0.680206], [-17.255458, -0.644750], [-16.854857, -1.854050], [-16.922608, -1.882175], [-16.950647, -1.950350], [-16.950647, -1.980050], [-16.950647, -4.558180], [-16.948047, -4.588380], [-16.926027, -4.746723], [-16.864056, -4.887829], [-16.768268, -5.005990], [-16.644799, -5.095500], [-15.017909, -6.047250], [-14.973339, -6.058050], [-14.905593, -6.030088], [-14.877559, -5.962750], [-14.881659, -5.924850], [-14.881659, -3.293450], [-14.880059, -3.282650], [-14.928098, -3.107056], [-15.054223, -2.981450], [-16.798415, -1.872440], [-16.854755, -1.854040], [-18.569853, -3.463010], [-18.472193, -3.503485], [-18.432059, -3.600810], [-18.432571, -4.320510], [-18.453098, -4.393294], [-18.506851, -4.443450], [-18.770144, -4.484950], [-18.822099, -4.535000], [-18.841864, -4.606350], [-18.841864, -5.019730], [-18.822099, -5.091569], [-18.770144, -5.141140], [-18.506851, -5.369600], [-18.453102, -5.418739], [-18.432571, -5.491510], [-18.432059, -6.210700], [-18.472192, -6.308468], [-18.569853, -6.349010], [-18.635933, -6.332110], [-20.707962, -4.551030], [-20.749232, -4.502470], [-20.764822, -4.438850], [-20.764822, -3.654610], [-20.733044, -3.566005], [-20.653665, -3.518860], [-18.606735, -3.468160], [-18.569855, -3.463160], [-19.472428, -4.452160], [-19.515968, -4.471060], [-19.536458, -4.514560], [-19.539058, -4.624690], [-19.493988, -4.726120], [-19.323410, -4.845980], [-19.258350, -4.828080], [-19.237860, -4.785080], [-19.235260, -4.582740], [-19.280330, -4.480290], [-19.450395, -4.454190], [-19.472425, -4.452190], [-20.585536, -5.451030], [-20.487696, -5.492030], [-20.057923, -5.787600], [-20.004133, -5.897730], [-20.008833, -6.477080], [-19.985319, -6.554475], [-19.924823, -6.605140], [-19.830573, -6.652240], [-19.765513, -6.634340], [-19.745023, -6.591340], [-19.742423, -6.195890], [-19.702121, -6.098123], [-19.604629, -6.057580], [-19.526769, -6.082680], [-19.158977, -6.286560], [-19.105187, -6.396180], [-19.114387, -6.996530], [-19.094376, -7.068218], [-19.042167, -7.117930], [-18.465892, -7.439110], [-18.411888, -7.489128], [-18.391102, -7.562050], [-18.390590, -8.665930], [-18.430892, -8.763848], [-18.528383, -8.804240], [-18.594973, -8.787340], [-20.628071, -7.579980], [-20.696430, -7.531000], [-20.723351, -7.448840], [-20.723809, -5.589400], [-20.683252, -5.491638], [-20.585503, -5.451100]]; +engrave_falcon_m_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80], [107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81], [144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108], [159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145], [190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160], [206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191], [241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207], [264, 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242], [292, 291, 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265], [313, 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293], [340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314], [352, 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, 341], [384, 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353]]; + +//polygon(points=warding_falcon_m_points, paths=warding_falcon_m_paths); +//polygon(points=outline_falcon_m_points, paths=outline_falcon_m_paths); +//polygon(points=engrave_falcon_m_points, paths=engrave_falcon_m_paths); diff --git a/scad/gen/kwikset.gen.scad b/scad/gen/kwikset.gen.scad new file mode 100644 index 0000000..3ed24c0 --- /dev/null +++ b/scad/gen/kwikset.gen.scad @@ -0,0 +1,18 @@ +// Automatically generated using the Inkscape to OpenSCAD Converter +// Variable names are of the form _points and +// _paths. As a result, you can associate a polygon in this +// OpenSCAD program with the corresponding SVG element in the Inkscape document +// by looking for the XML element with the attribute id="inkscape-path-id". + +outline_points = [[-21.759169, 10.879685], [-23.029374, 10.710185], [-24.299063, 10.202207], [-25.399770, 9.355747], [-26.161997, 8.339275], [-29.548866, 2.582010], [-30.056844, 1.312321], [-30.225825, 0.042116], [-30.056844, -1.312321], [-29.548866, -2.497777], [-26.161997, -8.255040], [-25.399770, -9.355747], [-24.299063, -10.117974], [-23.029374, -10.710701], [-21.759169, -10.879685], [-13.885243, -10.879685], [-12.446054, -10.625952], [-11.006868, -10.033225], [-9.906160, -9.017266], [-9.059185, -7.747062], [-8.551207, -6.985354], [-7.789496, -6.477373], [-6.857773, -6.307876], [-6.349794, -6.307876], [-6.096062, -6.223127], [-5.926565, -5.884646], [-5.926565, -4.275960], [19.642384, -4.275960], [21.590067, -2.328277], [21.928548, -1.820299], [22.098045, -1.143340], [21.928548, -0.550610], [21.590067, -0.042632], [17.801157, 4.233164], [-5.672832, 4.233069], [-5.672832, 5.968879], [-5.841816, 6.222611], [-6.096062, 6.392108], [-6.857773, 6.392108], [-7.789496, 6.561608], [-8.551207, 7.069586], [-9.059185, 7.747064], [-9.906160, 9.016751], [-11.006868, 10.032710], [-12.446054, 10.710185], [-13.885243, 10.879685], [-21.420688, 8.339791], [-18.541800, 8.339791], [-18.288068, 8.255043], [-18.203319, 7.916046], [-18.203319, 2.243529], [-18.288068, 1.905051], [-18.626549, 1.820299], [-18.923170, 1.946908], [-23.706852, 6.815338], [-23.875833, 7.069586], [-23.706852, 7.323316], [-23.029374, 7.916046], [-22.267147, 8.255043], [-25.399770, 4.360193], [-25.061289, 4.190696], [-21.166442, 0.296365], [-20.997461, 0.042116], [-21.166442, -0.296365], [-25.061289, -4.191212], [-25.399770, -4.275960], [-25.654016, -4.106463], [-27.177953, -1.566569], [-27.516434, -0.550610], [-27.516434, 0.550095], [-27.177953, 1.566054], [-25.654016, 4.106463], [-18.626549, -1.736067], [-18.288068, -1.905048], [-18.203319, -2.159296], [-18.203319, -7.916561], [-18.288068, -8.170291], [-18.541800, -8.339791], [-21.420688, -8.339791], [-22.267147, -8.170291], [-23.029374, -7.831810], [-23.706852, -7.323832], [-23.875833, -6.985354], [-23.706852, -6.731105], [-18.923170, -1.947423]]; +outline_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], [58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46], [71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59], [84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72]]; + +warding_kw1_points = [[28.225823, -1.397367], [28.225823, -4.276037], [30.225825, -4.276052], [30.225825, -3.598737], [29.265819, -3.514037], [29.265819, -2.074722], [30.225825, -2.074722], [30.225825, -0.296722], [29.665825, 0.465263], [29.665825, 4.233083], [28.385820, 4.233083], [28.385820, 0.295933], [28.865821, 0.295933], [29.265819, -0.296737], [29.265819, -1.058737], [28.705824, -1.058737], [28.225823, -1.397407]]; +warding_kw1_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]]; + +engrave_points = [[-6.434139, 5.891176], [-7.196589, 5.884176], [-8.127919, 6.138176], [-8.974589, 6.730836], [-9.482589, 7.577506], [-10.244589, 8.678176], [-11.345259, 9.609496], [-12.530589, 10.202166], [-13.885259, 10.371496], [-21.759254, 10.371496], [-22.944587, 10.202166], [-24.045254, 9.778836], [-25.061254, 9.016836], [-25.738587, 8.085496], [-29.040585, 2.328166], [-29.548585, 1.227506], [-29.717918, 0.042166], [-29.548585, -1.143164], [-29.082918, -2.243834], [-25.738587, -8.001164], [-25.061254, -9.017164], [-24.045254, -9.694494], [-22.944587, -10.202494], [-21.759254, -10.371824], [-13.885259, -10.371824], [-12.530589, -10.117824], [-11.345259, -9.609824], [-10.244589, -8.678494], [-9.482589, -7.493164], [-8.974589, -6.731164], [-8.297259, -6.138494], [-7.365919, -5.884494], [-6.434139, -5.884494]]; +engrave_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]]; + +//polygon(points=outline_points, paths=outline_paths); +//polygon(points=warding_kw1_points, paths=warding_kw1_paths); +//polygon(points=engrave_points, paths=engrave_paths); diff --git a/scad/gen/lockwood.gen.scad b/scad/gen/lockwood.gen.scad new file mode 100644 index 0000000..92391d9 --- /dev/null +++ b/scad/gen/lockwood.gen.scad @@ -0,0 +1,26 @@ +// Automatically generated using the Inkscape to OpenSCAD Converter +// Variable names are of the form _points and +// _paths. As a result, you can associate a polygon in this +// OpenSCAD program with the corresponding SVG element in the Inkscape document +// by looking for the XML element with the attribute id="inkscape-path-id". + +engrave_LW5_points = [[-6.607814, -27.829281], [-6.603814, -21.092441], [-6.610326, -17.126463], [-6.644018, -16.583719], [-6.714714, -16.270811], [-6.837263, -15.843813], [-6.988147, -15.441855], [-7.165616, -15.065058], [-7.367923, -14.713543], [-7.593319, -14.387431], [-7.840056, -14.086843], [-8.106384, -13.811900], [-8.390555, -13.562723], [-9.005433, -13.142152], [-9.670703, -12.826096], [-10.372375, -12.615525], [-11.096462, -12.511407], [-11.828976, -12.514710], [-12.555928, -12.626401], [-13.263331, -12.847450], [-13.937195, -13.178823], [-14.257180, -13.386184], [-14.563534, -13.621490], [-14.854510, -13.884861], [-15.128359, -14.176418], [-15.383332, -14.496283], [-15.617681, -14.844576], [-15.829658, -15.221418], [-16.017514, -15.626931], [-16.263046, -16.143669], [-16.556170, -16.634184], [-16.893524, -17.095011], [-17.271750, -17.522683], [-17.687484, -17.913737], [-18.137368, -18.264704], [-18.618041, -18.572121], [-19.126142, -18.832521], [-19.820234, -19.148581], [-20.186359, -19.342140], [-20.528814, -19.573748], [-20.846129, -19.839677], [-21.136836, -20.136196], [-21.399466, -20.459576], [-21.632550, -20.806088], [-21.834621, -21.172002], [-22.004209, -21.553590], [-22.139846, -21.947121], [-22.240064, -22.348866], [-22.303393, -22.755096], [-22.328366, -23.162082], [-22.313513, -23.566093], [-22.257366, -23.963402], [-22.158457, -24.350277], [-22.015318, -24.722991], [-21.899140, -24.985131], [-21.716727, -25.343425], [-21.485461, -25.690773], [-21.210276, -26.022705], [-20.896111, -26.334751], [-20.547903, -26.622441], [-20.170587, -26.881304], [-19.769102, -27.106871], [-19.348385, -27.294671], [-18.815944, -27.548708], [-18.257870, -27.895275], [-17.722943, -28.300805], [-17.259944, -28.731731], [-16.867962, -29.175166], [-16.544173, -29.623915], [-16.242420, -30.149905], [-15.916544, -30.825061], [-15.577774, -31.453446], [-15.174713, -32.007271], [-14.715590, -32.485841], [-14.208637, -32.888465], [-13.662085, -33.214447], [-13.084164, -33.463095], [-12.483107, -33.633714], [-11.867143, -33.725611], [-11.244505, -33.738093], [-10.623423, -33.670465], [-10.012127, -33.522034], [-9.418850, -33.292107], [-8.851822, -32.979990], [-8.319274, -32.584989], [-7.829438, -32.106411], [-7.390544, -31.543561], [-7.220248, -31.255566], [-7.064860, -30.924453], [-6.808969, -30.201691], [-6.643189, -29.512919], [-6.587844, -28.995781], [-6.607944, -27.829281]]; +engrave_LW5_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92]]; + +warding_LW5_points = [[-29.777815, 60.874371], [-29.806975, 58.944933], [-29.836535, 57.015102], [-29.497229, 56.699046], [-29.127183, 56.382596], [-29.098525, 56.190439], [-29.094906, 55.767010], [-29.112548, 55.340639], [-29.147673, 55.139654], [-29.503137, 55.056504], [-29.867327, 54.943947], [-29.983019, 54.856899], [-30.063973, 54.726596], [-30.117333, 54.535980], [-30.150248, 54.267996], [-30.183327, 53.431694], [-30.203267, 52.195661], [-29.667298, 52.105885], [-29.125600, 52.074283], [-28.494174, 52.104930], [-27.870593, 52.208261], [-27.871143, 52.221834], [-27.871693, 52.379488], [-27.871693, 52.535940], [-28.106569, 52.555650], [-28.729754, 52.628632], [-29.127248, 52.707373], [-29.179745, 52.742423], [-29.207069, 52.836458], [-29.219068, 53.476626], [-29.215598, 53.941069], [-29.187715, 54.180915], [-29.109204, 54.278959], [-28.953850, 54.317996], [-28.126666, 54.464202], [-27.830709, 54.513462], [-27.830709, 55.212954], [-27.854079, 55.779515], [-27.933653, 56.215708], [-28.083626, 56.570420], [-28.318191, 56.892541], [-28.556612, 57.186135], [-28.688237, 57.357167], [-28.715427, 59.115966], [-28.742627, 60.874371], [-29.260017, 60.874371]]; +warding_LW5_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]]; + +outline_LW5_points = [[30.003296, -24.385301], [29.638376, -24.970731], [28.709506, -26.348221], [27.955786, -27.501801], [13.609556, -27.501801], [-0.736684, -27.501801], [-0.736894, -27.960441], [-0.765080, -28.361990], [-0.854520, -28.665933], [-1.013154, -28.874231], [-1.248921, -28.988846], [-1.569762, -29.011737], [-1.983616, -28.944867], [-2.498423, -28.790194], [-3.122124, -28.549681], [-3.830055, -28.287607], [-4.110871, -28.215869], [-4.355254, -28.182926], [-4.572452, -28.188223], [-4.771717, -28.231208], [-4.962297, -28.311325], [-5.153444, -28.428021], [-5.374255, -28.613167], [-5.541364, -28.861978], [-5.696802, -29.258566], [-5.882604, -29.887041], [-6.050692, -30.427700], [-6.244842, -30.936345], [-6.464572, -31.412581], [-6.709406, -31.856012], [-6.978863, -32.266243], [-7.272466, -32.642877], [-7.589736, -32.985519], [-7.930195, -33.293773], [-8.293363, -33.567245], [-8.678762, -33.805537], [-9.085913, -34.008254], [-9.514338, -34.175001], [-9.963559, -34.305382], [-10.433095, -34.399001], [-10.922470, -34.455463], [-11.431204, -34.474371], [-12.322540, -34.418178], [-12.743280, -34.347834], [-13.147535, -34.249233], [-13.535407, -34.122305], [-13.906996, -33.966982], [-14.262403, -33.783194], [-14.601730, -33.570873], [-14.925076, -33.329950], [-15.232543, -33.060355], [-15.524232, -32.762020], [-15.800244, -32.434875], [-16.305638, -31.693881], [-16.749534, -30.836821], [-16.988894, -30.362185], [-17.262299, -29.924280], [-17.571576, -29.521340], [-17.918555, -29.151598], [-18.305066, -28.813291], [-18.732937, -28.504651], [-19.203998, -28.223913], [-19.720078, -27.969311], [-20.475062, -27.567074], [-21.135067, -27.088204], [-21.699615, -26.543655], [-22.168229, -25.944383], [-22.540430, -25.301341], [-22.815739, -24.625485], [-22.993678, -23.927770], [-23.073771, -23.219151], [-23.055537, -22.510582], [-22.938499, -21.813019], [-22.722180, -21.137417], [-22.406100, -20.494729], [-21.989782, -19.895912], [-21.472747, -19.351920], [-20.854518, -18.873708], [-20.507306, -18.662693], [-20.134616, -18.472231], [-19.288962, -18.062011], [-18.696724, -17.724032], [-18.241660, -17.382920], [-17.807534, -16.963301], [-17.492429, -16.606741], [-17.213921, -16.237205], [-16.980327, -15.866714], [-16.799964, -15.507291], [-16.507989, -14.879861], [-16.210691, -14.356090], [-15.872792, -13.880466], [-15.459013, -13.397481], [-15.122359, -13.085887], [-14.684226, -12.753951], [-14.223027, -12.456545], [-13.817173, -12.248541], [-13.476403, -12.096781], [-13.030773, -11.962171], [-12.474213, -11.822451], [-12.188394, -11.778085], [-11.811679, -11.761544], [-10.914263, -11.800630], [-10.039370, -11.917099], [-9.690808, -11.997286], [-9.444403, -12.088341], [-9.053323, -12.269341], [-8.503017, -12.558796], [-7.991029, -12.915048], [-7.520937, -13.333604], [-7.096313, -13.809968], [-6.720735, -14.339648], [-6.397775, -14.918148], [-6.131010, -15.540974], [-5.924013, -16.203631], [-5.739466, -16.823392], [-5.535156, -17.312697], [-5.302911, -17.676799], [-5.034560, -17.920955], [-4.884291, -17.999694], [-4.721931, -18.050418], [-4.356853, -18.070443], [-3.931155, -17.986286], [-3.436663, -17.803201], [-3.017253, -17.643181], [-2.283273, -17.372491], [-1.936008, -17.265065], [-1.630607, -17.216542], [-1.368130, -17.226584], [-1.149637, -17.294854], [-0.976187, -17.421010], [-0.848838, -17.604716], [-0.768651, -17.845633], [-0.736683, -18.143421], [-0.739683, -18.701801], [12.540877, -18.701801], [25.817967, -18.701801], [26.211167, -19.131651], [27.570227, -20.611161], [29.019977, -22.180771], [29.723957, -22.940951], [29.933566, -23.183905], [30.082190, -23.402610], [30.171525, -23.605833], [30.203267, -23.802341], [30.154964, -24.080366], [30.003747, -24.385781], [-14.865694, -22.280331], [-15.015992, -21.911589], [-15.205067, -21.577672], [-15.428736, -21.279601], [-15.682816, -21.018395], [-15.963123, -20.795074], [-16.265475, -20.610659], [-16.585688, -20.466169], [-16.919579, -20.362623], [-17.262965, -20.301044], [-17.611663, -20.282449], [-17.961490, -20.307859], [-18.308263, -20.378293], [-18.647798, -20.494773], [-18.975912, -20.658318], [-19.288423, -20.869947], [-19.581148, -21.130681], [-19.852689, -21.447026], [-20.068037, -21.783615], [-20.228735, -22.135630], [-20.336325, -22.498251], [-20.392352, -22.866662], [-20.398356, -23.236041], [-20.355883, -23.601572], [-20.266473, -23.958435], [-20.131672, -24.301811], [-19.953020, -24.626882], [-19.732062, -24.928829], [-19.470340, -25.202834], [-19.169397, -25.444077], [-18.830777, -25.647740], [-18.456021, -25.809004], [-18.046674, -25.923051], [-17.716676, -25.970790], [-17.392999, -25.965586], [-17.029069, -25.902835], [-16.578314, -25.777931], [-16.335270, -25.686038], [-16.104774, -25.565841], [-15.686212, -25.250314], [-15.332204, -24.850910], [-15.052329, -24.387189], [-14.856162, -23.878710], [-14.753282, -23.345034], [-14.753267, -22.805721], [-14.794826, -22.540063], [-14.865694, -22.280331]]; +outline_LW5_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145], [192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146]]; + +engrave_LW4_points = [[-6.607813, -54.229281], [-6.603813, -47.492441], [-6.610325, -43.526463], [-6.644017, -42.983719], [-6.714713, -42.670811], [-6.837262, -42.243813], [-6.988146, -41.841855], [-7.165615, -41.465058], [-7.367922, -41.113543], [-7.593318, -40.787431], [-7.840055, -40.486843], [-8.106383, -40.211900], [-8.390554, -39.962723], [-9.005432, -39.542152], [-9.670702, -39.226096], [-10.372374, -39.015525], [-11.096461, -38.911407], [-11.828975, -38.914710], [-12.555927, -39.026401], [-13.263330, -39.247450], [-13.937194, -39.578823], [-14.257179, -39.786184], [-14.563533, -40.021490], [-14.854509, -40.284861], [-15.128358, -40.576418], [-15.383331, -40.896283], [-15.617680, -41.244576], [-15.829657, -41.621418], [-16.017513, -42.026931], [-16.263045, -42.543669], [-16.556169, -43.034184], [-16.893523, -43.495011], [-17.271749, -43.922684], [-17.687483, -44.313737], [-18.137367, -44.664704], [-18.618040, -44.972121], [-19.126141, -45.232521], [-19.820233, -45.548581], [-20.186358, -45.742140], [-20.528813, -45.973748], [-20.846128, -46.239677], [-21.136835, -46.536196], [-21.399465, -46.859576], [-21.632549, -47.206088], [-21.834620, -47.572002], [-22.004208, -47.953590], [-22.139845, -48.347121], [-22.240063, -48.748866], [-22.303392, -49.155096], [-22.328365, -49.562082], [-22.313512, -49.966093], [-22.257365, -50.363402], [-22.158456, -50.750277], [-22.015317, -51.122991], [-21.899139, -51.385131], [-21.716726, -51.743425], [-21.485460, -52.090773], [-21.210275, -52.422705], [-20.896110, -52.734751], [-20.547902, -53.022441], [-20.170586, -53.281304], [-19.769101, -53.506871], [-19.348384, -53.694671], [-18.815943, -53.948708], [-18.257869, -54.295275], [-17.722942, -54.700805], [-17.259943, -55.131731], [-16.867961, -55.575166], [-16.544173, -56.023915], [-16.242419, -56.549905], [-15.916543, -57.225061], [-15.577773, -57.853446], [-15.174712, -58.407271], [-14.715589, -58.885841], [-14.208636, -59.288465], [-13.662084, -59.614447], [-13.084163, -59.863095], [-12.483106, -60.033714], [-11.867142, -60.125611], [-11.244504, -60.138093], [-10.623422, -60.070465], [-10.012126, -59.922034], [-9.418849, -59.692107], [-8.851821, -59.379990], [-8.319273, -58.984989], [-7.829437, -58.506411], [-7.390543, -57.943561], [-7.220247, -57.655566], [-7.064859, -57.324453], [-6.808968, -56.601691], [-6.643188, -55.912919], [-6.587843, -55.395781], [-6.607943, -54.229281]]; +engrave_LW4_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92]]; + +outline_LW4_points = [[26.656706, -50.798501], [26.479080, -51.169786], [26.283566, -51.529401], [25.585796, -52.761421], [24.961926, -53.901801], [13.087166, -53.901801], [-0.736684, -53.901801], [-0.736894, -54.360441], [-0.765071, -54.761990], [-0.854507, -55.065933], [-1.013141, -55.274231], [-1.248910, -55.388846], [-1.569754, -55.411737], [-1.983611, -55.344867], [-2.498422, -55.190194], [-3.122124, -54.949681], [-3.830055, -54.687607], [-4.110871, -54.615869], [-4.355254, -54.582926], [-4.572452, -54.588223], [-4.771717, -54.631208], [-4.962297, -54.711325], [-5.153444, -54.828021], [-5.374255, -55.013167], [-5.541363, -55.261979], [-5.696801, -55.658566], [-5.882603, -56.287041], [-6.050691, -56.827700], [-6.244841, -57.336345], [-6.464571, -57.812581], [-6.709405, -58.256012], [-6.978862, -58.666243], [-7.272465, -59.042877], [-7.589735, -59.385519], [-7.930194, -59.693774], [-8.293362, -59.967245], [-8.678761, -60.205537], [-9.085912, -60.408254], [-9.514337, -60.575001], [-9.963558, -60.705382], [-10.433094, -60.799001], [-10.922469, -60.855463], [-11.431203, -60.874371], [-12.322539, -60.818179], [-12.743279, -60.747834], [-13.147534, -60.649233], [-13.535406, -60.522305], [-13.906995, -60.366982], [-14.262402, -60.183194], [-14.601729, -59.970873], [-14.925075, -59.729950], [-15.232542, -59.460355], [-15.524231, -59.162020], [-15.800243, -58.834875], [-16.305637, -58.093881], [-16.749533, -57.236821], [-16.988893, -56.762185], [-17.262298, -56.324280], [-17.571575, -55.921340], [-17.918554, -55.551599], [-18.305065, -55.213291], [-18.732936, -54.904651], [-19.203997, -54.623913], [-19.720077, -54.369311], [-20.475061, -53.967074], [-21.135066, -53.488204], [-21.699614, -52.943655], [-22.168228, -52.344383], [-22.540429, -51.701341], [-22.815738, -51.025485], [-22.993677, -50.327770], [-23.073770, -49.619151], [-23.055536, -48.910582], [-22.938498, -48.213019], [-22.722179, -47.537417], [-22.406099, -46.894729], [-21.989781, -46.295912], [-21.472746, -45.751920], [-20.854517, -45.273708], [-20.507305, -45.062693], [-20.134615, -44.872231], [-19.288961, -44.462011], [-18.696723, -44.124032], [-18.241659, -43.782920], [-17.807533, -43.363301], [-17.492428, -43.006741], [-17.213920, -42.637205], [-16.980326, -42.266714], [-16.799963, -41.907291], [-16.507988, -41.279861], [-16.210690, -40.756090], [-15.872791, -40.280466], [-15.459013, -39.797481], [-15.122358, -39.485887], [-14.684225, -39.153951], [-14.223026, -38.856545], [-13.817172, -38.648541], [-13.476402, -38.496781], [-13.030772, -38.362171], [-12.474212, -38.222451], [-12.188393, -38.178085], [-11.811678, -38.161544], [-10.914262, -38.200630], [-10.039369, -38.317099], [-9.690807, -38.397286], [-9.444402, -38.488341], [-9.053322, -38.669341], [-8.503016, -38.958796], [-7.991028, -39.315048], [-7.520936, -39.733604], [-7.096312, -40.209968], [-6.720734, -40.739648], [-6.397774, -41.318148], [-6.131009, -41.940974], [-5.924012, -42.603631], [-5.739465, -43.223392], [-5.535155, -43.712697], [-5.302910, -44.076799], [-5.034560, -44.320955], [-4.884291, -44.399694], [-4.721931, -44.450418], [-4.356853, -44.470443], [-3.931155, -44.386286], [-3.436663, -44.203201], [-3.017253, -44.043181], [-2.283273, -43.772491], [-1.936008, -43.665065], [-1.630607, -43.616542], [-1.368130, -43.626584], [-1.149637, -43.694853], [-0.976187, -43.821010], [-0.848838, -44.004716], [-0.768651, -44.245633], [-0.736683, -44.543421], [-0.736683, -45.101801], [12.202207, -45.101771], [21.763316, -45.101801], [26.162496, -49.295861], [26.433130, -49.571532], [26.603010, -49.796191], [26.702838, -50.011940], [26.763316, -50.260881], [26.770299, -50.396955], [26.748453, -50.533749], [26.656706, -50.798501], [-14.865693, -48.680331], [-15.015991, -48.311589], [-15.205066, -47.977672], [-15.428735, -47.679601], [-15.682815, -47.418395], [-15.963122, -47.195074], [-16.265474, -47.010659], [-16.585687, -46.866169], [-16.919578, -46.762624], [-17.262964, -46.701044], [-17.611662, -46.682449], [-17.961489, -46.707859], [-18.308262, -46.778293], [-18.647797, -46.894773], [-18.975911, -47.058318], [-19.288422, -47.269947], [-19.581147, -47.530681], [-19.852688, -47.847026], [-20.068036, -48.183615], [-20.228734, -48.535630], [-20.336324, -48.898251], [-20.392351, -49.266662], [-20.398355, -49.636041], [-20.355882, -50.001572], [-20.266472, -50.358435], [-20.131671, -50.701811], [-19.953019, -51.026882], [-19.732061, -51.328829], [-19.470339, -51.602834], [-19.169396, -51.844077], [-18.830776, -52.047740], [-18.456020, -52.209004], [-18.046673, -52.323051], [-17.716675, -52.370790], [-17.392998, -52.365586], [-17.029068, -52.302835], [-16.578313, -52.177931], [-16.335269, -52.086038], [-16.104773, -51.965841], [-15.686211, -51.650314], [-15.332203, -51.250910], [-15.052328, -50.787189], [-14.856161, -50.278710], [-14.753281, -49.745034], [-14.753266, -49.205721], [-14.794825, -48.940063], [-14.865693, -48.680331]]; +outline_LW4_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144], [191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145]]; + +//polygon(points=engrave_LW5_points, paths=engrave_LW5_paths); +//polygon(points=warding_LW5_points, paths=warding_LW5_paths); +//polygon(points=outline_LW5_points, paths=outline_LW5_paths); +//polygon(points=engrave_LW4_points, paths=engrave_LW4_paths); +//polygon(points=outline_LW4_points, paths=outline_LW4_paths); diff --git a/scad/master.gen.scad b/scad/gen/master.gen.scad similarity index 98% rename from scad/master.gen.scad rename to scad/gen/master.gen.scad index d918555..402f509 100644 --- a/scad/master.gen.scad +++ b/scad/gen/master.gen.scad @@ -1,6 +1,6 @@ // Automatically generated using the Inkscape to OpenSCAD Converter // Variable names are of the form _points and -// _paths. As a result, you can associate a polygon in this +// _paths. As a result, you can associate a polygon in this // OpenSCAD program with the corresponding SVG element in the Inkscape document // by looking for the XML element with the attribute id="inkscape-path-id". diff --git a/scad/gen/medeco.gen.scad b/scad/gen/medeco.gen.scad new file mode 100644 index 0000000..385fa33 --- /dev/null +++ b/scad/gen/medeco.gen.scad @@ -0,0 +1,142 @@ +// Automatically generated using the Inkscape to OpenSCAD Converter +// Variable names are of the form _points and +// _paths. As a result, you can associate a polygon in this +// OpenSCAD program with the corresponding SVG element in the Inkscape document +// by looking for the XML element with the attribute id="inkscape-path-id". + +warding_1515_points = [[32.031505, 63.486190], [31.777505, 63.909524], [31.692805, 64.163523], [31.692805, 64.586857], [31.777505, 65.010190], [31.862205, 65.179524], [31.946905, 65.602857], [31.946905, 66.618857], [31.692905, 67.296189], [29.914905, 67.296189], [30.253575, 66.449523], [30.338275, 66.110857], [30.253575, 65.687523], [29.914905, 65.010189], [29.914905, 64.163523], [30.168905, 63.401524], [30.592245, 62.893524], [30.761575, 62.385523], [30.507575, 61.962190], [30.168905, 61.708190], [29.999575, 61.369523], [29.914875, 61.030856], [29.914875, 59.760856], [30.168875, 59.422189], [32.031545, 59.422189], [32.200875, 59.591523], [32.200875, 59.845523], [32.116175, 60.099523], [31.946845, 60.268856], [31.354175, 60.353526], [31.184845, 60.522859], [31.100145, 60.776859], [31.184845, 61.030859], [31.946845, 61.708192], [32.116175, 62.046859], [32.200875, 62.385526], [32.200875, 62.808859]]; +warding_1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]]; + +warding_1517_points = [[-37.687728, -39.045103], [-37.687728, -39.468433], [-37.603098, -39.637763], [-36.671730, -40.569103], [-36.587060, -40.823103], [-36.671730, -41.077103], [-36.841063, -41.246433], [-37.433730, -41.415763], [-37.603098, -41.500463], [-37.687728, -41.754463], [-37.687728, -42.008463], [-37.518395, -42.177803], [-35.655728, -42.177803], [-35.401728, -41.923803], [-35.401728, -40.992463], [-35.486428, -40.653803], [-36.163727, -39.891803], [-36.333060, -39.553133], [-36.163727, -39.214463], [-35.825060, -38.706463], [-35.740430, -38.113803], [-35.994396, -37.605803], [-36.248396, -37.267133], [-36.248396, -36.674463], [-35.740430, -35.743133], [-35.740430, -34.473133], [-37.349096, -34.473133], [-37.349096, -36.166463], [-37.603096, -36.505133], [-37.518396, -37.182463], [-37.095097, -37.690463], [-37.010397, -38.113803], [-37.264397, -38.537133], [-37.518397, -38.791133]]; +warding_1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]]; + +warding_1542_points = [[29.802625, 38.763470], [29.802625, 39.440800], [29.971925, 39.948800], [30.310625, 40.626140], [31.919295, 40.626140], [31.919295, 39.948800], [31.665295, 39.271470], [31.665295, 38.848140], [31.834595, 38.424800], [32.088585, 38.001470], [32.257955, 37.493470], [32.257955, 36.985470], [32.173255, 36.646800], [31.919255, 36.308140], [31.241925, 35.715470], [31.157225, 35.461470], [31.241925, 35.207470], [31.411255, 35.038140], [32.003925, 34.868800], [32.173255, 34.784100], [32.257955, 34.530100], [32.257955, 34.276100], [32.003955, 34.022100], [30.141295, 34.022100], [29.887295, 34.360760], [29.887295, 35.630760], [29.971895, 36.054100], [30.225895, 36.392760], [30.564595, 36.731430], [30.733925, 37.070099], [30.649225, 37.408760], [30.056555, 38.086100]]; +warding_1542_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]]; + +warding_1518_points = [[-35.642965, 84.822202], [-35.473632, 84.991532], [-35.388962, 85.160872], [-35.388962, 85.414872], [-35.558295, 85.753532], [-35.727629, 85.922872], [-35.812299, 86.176872], [-35.812299, 86.515532], [-35.558299, 86.769532], [-35.388966, 87.108202], [-35.642966, 87.446872], [-36.066299, 87.700872], [-36.235633, 87.954872], [-36.150963, 88.208872], [-35.473630, 88.970872], [-35.473630, 89.224872], [-35.558300, 89.394202], [-36.066300, 89.986872], [-36.066300, 91.341532], [-37.759634, 91.341532], [-37.759634, 90.410202], [-37.420967, 89.648202], [-37.336297, 89.140202], [-37.505631, 88.632202], [-37.674964, 88.462872], [-37.759634, 88.208872], [-37.674964, 87.954872], [-36.658964, 86.515532], [-36.658964, 86.176872], [-36.743634, 86.007532], [-36.912967, 85.838202], [-37.505634, 85.753502], [-37.674967, 85.584172], [-37.759637, 85.330172], [-37.759637, 85.076172], [-37.505637, 84.822172]]; +warding_1518_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]]; + +warding_1543_points = [[-37.592063, -90.522483], [-37.761397, -90.183853], [-37.761397, -89.845153], [-37.507397, -89.421853], [-37.253397, -89.252483], [-37.084029, -88.913813], [-37.168699, -88.575183], [-37.338066, -88.321184], [-37.507400, -88.067184], [-37.761400, -87.643814], [-37.676700, -87.220484], [-37.507401, -86.543154], [-35.898734, -86.543154], [-35.898734, -86.712484], [-36.322033, -87.474514], [-36.322033, -87.982514], [-36.068033, -88.236484], [-35.814033, -88.913814], [-35.814033, -89.591184], [-36.237401, -90.183854], [-36.322031, -90.437854], [-36.237401, -90.691854], [-35.644734, -91.199854], [-35.475401, -91.538514], [-35.390731, -91.961814], [-35.390731, -92.808514], [-35.560030, -92.977814], [-37.507398, -92.977814], [-37.761398, -92.808514], [-37.761398, -92.554514], [-37.676698, -92.300514], [-37.422698, -92.131154], [-36.830031, -91.961814], [-36.660732, -91.877114], [-36.660732, -91.623144], [-36.745402, -91.453774]]; +warding_1543_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]]; + +warding_1655_points = [[-37.422731, -16.777643], [-35.771731, -16.777643], [-35.623649, -16.747747], [-35.502519, -16.666240], [-35.420746, -16.545397], [-35.390731, -16.397493], [-35.390731, -15.766513], [-35.443139, -15.596031], [-35.582291, -15.484183], [-35.581291, -15.483183], [-36.182771, -15.243253], [-36.299107, -15.175243], [-36.388224, -15.078272], [-36.445259, -14.959707], [-36.465351, -14.826913], [-36.407556, -14.606447], [-36.339312, -14.515079], [-36.248391, -14.442943], [-36.249391, -14.441943], [-35.682831, -14.101553], [-35.560844, -14.004525], [-35.468918, -13.881686], [-35.410923, -13.739725], [-35.390731, -13.585333], [-35.390731, -12.146143], [-35.774551, -11.705923], [-35.844214, -11.589748], [-35.868351, -11.456503], [-35.868351, -10.290683], [-37.100251, -10.290683], [-37.100251, -10.797793], [-37.120900, -10.941018], [-37.179715, -11.070221], [-37.272001, -11.178105], [-37.393061, -11.257373], [-37.392261, -11.256573], [-37.477661, -11.296573], [-37.580926, -11.363982], [-37.659516, -11.455710], [-37.709532, -11.565537], [-37.727071, -11.687243], [-37.727071, -12.715943], [-37.674916, -12.921635], [-37.530931, -13.077323], [-37.531731, -13.076323], [-37.195881, -13.295083], [-37.093836, -13.405095], [-37.056891, -13.550213], [-37.097654, -13.702301], [-37.209291, -13.813603], [-37.209291, -13.813743], [-37.547961, -14.007023], [-37.668081, -14.126725], [-37.712001, -14.290203], [-37.695989, -14.391231], [-37.649601, -14.482283], [-37.648801, -14.482553], [-37.124231, -15.205003], [-37.062831, -15.325101], [-37.041631, -15.458233], [-37.060135, -15.582988], [-37.112669, -15.694948], [-37.194772, -15.787462], [-37.301981, -15.853873], [-37.300981, -15.853613], [-37.543691, -15.957113], [-37.677391, -16.069191], [-37.727481, -16.236333], [-37.727481, -16.474553], [-37.703576, -16.592845], [-37.638363, -16.689490], [-37.541599, -16.754674], [-37.423041, -16.778583]]; +warding_1655_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72]]; + +warding_1644_points = [[-35.452405, 11.585370], [-35.579362, 11.404857], [-35.736082, 11.252065], [-36.106546, 11.017869], [-36.330018, 10.884172], [-36.415958, 10.791039], [-36.462511, 10.668492], [-36.464271, 10.517205], [-36.406082, 10.380258], [-36.301799, 10.272788], [-36.165276, 10.209936], [-35.573376, 9.966049], [-35.475031, 9.874233], [-35.416867, 9.757408], [-35.390735, 9.493005], [-35.395335, 8.804485], [-35.435519, 8.712736], [-35.509871, 8.652687], [-35.603951, 8.622963], [-35.703316, 8.622190], [-37.476412, 8.623390], [-37.574237, 8.655696], [-37.642821, 8.726946], [-37.679374, 8.821565], [-37.681106, 8.923978], [-37.671439, 9.196119], [-37.634728, 9.323861], [-37.553576, 9.434041], [-37.442971, 9.513434], [-37.314602, 9.561949], [-37.189687, 9.616107], [-37.089443, 9.712429], [-37.026436, 9.842213], [-37.017755, 9.983241], [-37.056833, 10.120333], [-37.137103, 10.238311], [-37.607732, 10.872698], [-37.659163, 11.050076], [-37.631458, 11.230230], [-37.536900, 11.387063], [-37.387769, 11.494480], [-37.165129, 11.623871], [-37.074063, 11.708066], [-37.026515, 11.827042], [-37.032753, 11.938061], [-37.083310, 12.029858], [-37.254036, 12.163569], [-37.501752, 12.328108], [-37.602389, 12.431833], [-37.657367, 12.569743], [-37.657906, 12.717971], [-37.601391, 12.851705], [-37.501381, 12.959216], [-37.371434, 13.028774], [-37.255571, 13.093125], [-37.173383, 13.192941], [-37.122467, 13.314844], [-37.100423, 13.445455], [-37.112466, 13.770016], [-37.161182, 13.923508], [-37.250886, 14.055889], [-37.417733, 14.197588], [-37.477129, 14.287220], [-37.504527, 14.394311], [-37.507127, 15.116079], [-35.988067, 15.116079], [-35.989449, 14.818051], [-35.969147, 14.521992], [-35.916887, 14.396995], [-35.832266, 14.295834], [-35.607860, 14.151379], [-35.461562, 14.024174], [-35.392941, 13.844491], [-35.406323, 13.652802], [-35.506030, 13.489579], [-36.087119, 12.898250], [-36.132125, 12.779130], [-36.115516, 12.656808], [-36.049509, 12.550233], [-35.946324, 12.478351], [-35.659597, 12.309438], [-35.530241, 12.208850], [-35.433173, 12.074671], [-35.391831, 11.954118], [-35.381730, 11.827045], [-35.402147, 11.701464], [-35.452363, 11.585389]]; +warding_1644_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86]]; + +warding_1638_points = [[-37.493031, 63.120158], [-37.575641, 63.188083], [-37.631500, 63.274449], [-37.665784, 63.475565], [-37.601522, 63.669627], [-37.534198, 63.747176], [-37.444351, 63.802758], [-37.249531, 63.909942], [-37.177319, 63.990100], [-37.138267, 64.091005], [-37.103306, 64.284783], [-37.103360, 64.484766], [-37.145896, 64.677218], [-37.238384, 64.848402], [-37.433846, 65.024119], [-37.495765, 65.136945], [-37.509361, 65.270235], [-37.509361, 67.218858], [-35.992421, 67.218858], [-35.993212, 65.431518], [-35.958162, 65.273399], [-35.873369, 65.140185], [-35.753176, 65.033880], [-35.611921, 64.956488], [-35.460657, 64.821355], [-35.395190, 64.631648], [-35.419862, 64.432139], [-35.539011, 64.267599], [-36.093217, 63.704174], [-36.138449, 63.581966], [-36.119333, 63.457937], [-36.049227, 63.350465], [-35.941491, 63.277935], [-35.618935, 63.080452], [-35.484554, 62.954504], [-35.403508, 62.783915], [-35.397090, 62.551085], [-35.484661, 62.338943], [-35.632396, 62.152971], [-35.806471, 61.998652], [-36.093369, 61.829858], [-36.374430, 61.652076], [-36.464624, 61.482878], [-36.457865, 61.293029], [-36.367567, 61.126217], [-36.207143, 61.026129], [-35.580343, 60.765388], [-35.472819, 60.660161], [-35.415524, 60.527993], [-35.394863, 60.233094], [-35.399563, 59.605003], [-35.450501, 59.499098], [-35.542759, 59.442546], [-35.771858, 59.422597], [-37.501077, 59.427197], [-37.606813, 59.478059], [-37.663194, 59.570206], [-37.683016, 59.798975], [-37.682221, 59.941203], [-37.652657, 60.079862], [-37.587132, 60.202187], [-37.478450, 60.295412], [-37.241164, 60.393956], [-37.135169, 60.460940], [-37.059502, 60.566080], [-37.017605, 60.698912], [-37.028316, 60.833047], [-37.080080, 60.959736], [-37.161341, 61.070228], [-37.611843, 61.675612], [-37.663345, 61.856310], [-37.633324, 62.039089], [-37.534682, 62.196861], [-37.380325, 62.302537], [-37.147178, 62.440260], [-37.058961, 62.534265], [-37.026076, 62.665574], [-37.062890, 62.800641], [-37.154930, 62.899311], [-37.390326, 63.054344], [-37.493076, 63.120114]]; +warding_1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]]; + +warding_M3_points = [[97.509915, 84.848251], [99.487805, 84.848251], [99.574784, 84.863363], [99.646020, 84.908800], [99.694155, 84.984707], [99.711835, 85.091234], [99.711835, 86.884564], [99.703557, 87.030037], [99.666911, 87.152678], [99.584179, 87.248199], [99.437645, 87.312311], [98.754015, 87.445905], [98.591719, 87.487960], [98.492047, 87.556473], [98.439951, 87.662277], [98.420385, 87.816205], [98.433585, 87.946330], [98.476041, 88.060609], [98.620835, 88.266088], [99.523605, 89.335516], [99.657487, 89.542362], [99.697369, 89.685186], [99.711885, 89.886522], [99.711885, 91.049165], [99.416685, 91.333702], [99.416685, 91.655386], [98.176765, 91.655386], [98.176765, 90.680393], [98.176765, 90.494656], [98.218423, 90.405198], [98.321035, 90.306965], [98.498467, 90.134379], [98.641595, 89.954509], [98.695570, 89.831243], [98.714595, 89.699089], [98.695745, 89.557291], [98.629195, 89.423470], [98.406123, 89.290198], [98.121238, 89.205211], [97.771645, 89.147113], [97.538835, 89.090403], [97.412072, 88.999959], [97.359428, 88.889585], [97.348975, 88.773081], [97.348975, 87.115286], [97.363463, 86.987813], [97.403232, 86.903796], [97.536435, 86.792315], [98.248005, 86.306370], [98.339565, 86.227021], [98.401295, 86.137388], [98.447515, 85.936832], [98.435715, 85.831426], [98.390231, 85.736964], [98.297236, 85.663582], [98.142905, 85.621417], [97.526495, 85.546087], [97.392851, 85.479924], [97.349005, 85.338330], [97.349005, 85.061420], [97.384957, 84.921984], [97.434738, 84.869253], [97.510025, 84.848272]]; +warding_M3_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62]]; + +outline_1543_points = [[-84.582126, -78.669063], [-86.190814, -78.838563], [-87.714751, -79.431283], [-89.069707, -80.362493], [-90.170415, -81.632703], [-90.932127, -82.394413], [-91.948085, -82.902393], [-93.048794, -83.071893], [-94.487982, -83.325623], [-95.927687, -83.749373], [-97.197378, -84.595833], [-98.213336, -85.611793], [-99.060313, -86.966223], [-99.568292, -88.321184], [-99.737274, -89.845124], [-99.568292, -91.369064], [-99.060313, -92.724014], [-98.213336, -93.993704], [-97.197378, -95.094414], [-95.927687, -95.941394], [-94.487982, -96.364624], [-93.048794, -96.533604], [-91.948085, -96.787854], [-90.932127, -97.295834], [-90.170415, -98.057544], [-89.069707, -99.327744], [-87.714751, -100.258954], [-86.190814, -100.851683], [-84.582126, -101.021183], [-77.978394, -101.021183], [-77.046669, -100.851683], [-76.200209, -100.513203], [-75.522732, -99.835723], [-75.014751, -99.074013], [-74.761021, -98.142293], [-74.506772, -95.856643], [-74.253042, -95.179163], [-73.575563, -94.755933], [-72.813336, -94.671233], [-72.136376, -95.094463], [-71.628395, -95.602443], [-71.035667, -95.941443], [-70.358188, -96.025643], [-69.765461, -95.771913], [-69.342231, -95.263933], [-69.172733, -94.586453], [-69.172733, -93.655243], [-69.172733, -93.232014], [-69.172733, -93.062514], [-68.919000, -92.977814], [-43.180003, -92.977814], [-43.011022, -92.893014], [-42.841522, -92.808314], [-42.079294, -91.877104], [-41.740815, -91.284374], [-41.571315, -90.691644], [-41.740815, -90.099434], [-42.079294, -89.591454], [-44.534958, -86.712554], [-44.788691, -86.627854], [-68.919000, -86.627854], [-69.172733, -86.627854], [-69.172733, -86.374124], [-69.172733, -86.119874], [-69.172733, -85.103924], [-69.342231, -84.426444], [-69.765461, -83.918464], [-70.358188, -83.664734], [-71.035667, -83.749434], [-71.628395, -84.087914], [-72.136376, -84.595894], [-72.813336, -85.019124], [-73.575563, -84.934424], [-74.253042, -84.511194], [-74.506772, -83.833714], [-74.761021, -81.548064], [-75.014751, -80.616334], [-75.522732, -79.854624], [-76.200209, -79.177154], [-77.046669, -78.838674], [-77.978394, -78.669174], [-93.472023, -86.627743], [-92.456065, -86.797243], [-91.609605, -87.305223], [-90.932127, -87.982703], [-90.424147, -88.829163], [-90.254648, -89.845123], [-90.424147, -90.861083], [-90.932127, -91.708063], [-91.609605, -92.385024], [-92.456065, -92.892994], [-93.472023, -92.977794], [-94.487982, -92.892994], [-95.334959, -92.385024], [-96.011920, -91.708063], [-96.520416, -90.861083], [-96.604646, -89.845123], [-96.520416, -88.829163], [-96.011920, -87.982703], [-95.334959, -87.305223], [-94.487982, -86.797243]]; +outline_1543_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80], [100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81]]; + +outline_1518_points = [[-95.165459, 100.146888], [-96.350917, 99.977388], [-97.282126, 99.469408], [-98.128586, 98.707698], [-98.636565, 97.691738], [-98.806064, 96.591028], [-98.806064, 81.181637], [-98.636565, 80.080927], [-98.128586, 79.064965], [-97.282126, 78.302735], [-96.350917, 77.794755], [-95.165459, 77.625775], [-77.893646, 77.625775], [-76.708188, 77.794755], [-75.776979, 78.302735], [-74.930004, 79.064965], [-74.422025, 80.080927], [-74.252525, 81.181637], [-74.252525, 81.351127], [-74.083543, 82.028097], [-73.575565, 82.536077], [-72.898086, 82.705567], [-70.442938, 82.705567], [-70.103940, 82.875067], [-69.934959, 83.298297], [-69.934959, 84.144757], [-69.934959, 84.567987], [-69.850209, 84.737487], [-69.680712, 84.822187], [-43.942230, 84.822187], [-43.687982, 84.906887], [-42.756773, 85.922847], [-42.418291, 86.515577], [-42.333541, 87.108307], [-42.418291, 87.701027], [-42.756773, 88.293247], [-45.211921, 91.172137], [-45.466167, 91.256837], [-68.919001, 91.256837], [-69.087983, 91.341537], [-69.172733, 91.510517], [-69.172733, 91.680017], [-69.172733, 92.526478], [-69.342233, 93.288708], [-69.850212, 93.796688], [-70.527172, 93.966188], [-72.898088, 93.966188], [-73.575567, 94.135168], [-74.083545, 94.643148], [-74.252527, 95.320618], [-74.252527, 96.590828], [-74.422027, 97.691538], [-74.930006, 98.707498], [-75.776981, 99.469208], [-76.708190, 99.977188], [-77.893648, 100.146688], [-93.641522, 91.680217], [-92.710312, 91.510717], [-91.948084, 91.172237], [-91.355356, 90.494757], [-90.932126, 89.733047], [-90.847376, 88.886077], [-90.932126, 88.039617], [-91.355356, 87.277387], [-91.948084, 86.684657], [-92.710312, 86.261427], [-93.641522, 86.176727], [-94.487981, 86.261427], [-95.250209, 86.684657], [-95.842937, 87.277387], [-96.266167, 88.039617], [-96.350917, 88.886077], [-96.266167, 89.733047], [-95.842937, 90.494757], [-95.250209, 91.172237], [-94.487981, 91.510717]]; +outline_1518_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], [75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56]]; + +outline_a1517_points = [[-84.497376, -52.422613], [-86.190813, -52.676343], [-87.714752, -53.269073], [-89.069706, -54.200803], [-90.170415, -55.385743], [-90.932125, -56.232723], [-91.948084, -56.740693], [-93.048793, -56.909683], [-94.487982, -57.079183], [-95.927687, -57.587153], [-97.197377, -58.349383], [-98.213336, -59.450093], [-99.060313, -60.719783], [-99.568292, -62.159493], [-99.737274, -63.598673], [-99.568292, -65.122613], [-99.060313, -66.561813], [-98.213336, -67.832013], [-97.197377, -68.847973], [-95.927687, -69.694433], [-94.487982, -70.202413], [-93.048793, -70.371913], [-91.948084, -70.541413], [-90.932125, -71.049393], [-90.170415, -71.811103], [-89.069706, -73.081313], [-87.714752, -74.012513], [-86.190813, -74.605243], [-84.497376, -74.774743], [-77.978394, -74.774743], [-77.046669, -74.690043], [-76.200209, -74.266813], [-75.522730, -73.674083], [-75.014751, -72.911853], [-74.761021, -71.980653], [-74.506772, -70.033483], [-74.168291, -69.356003], [-73.490813, -68.932773], [-72.729104, -68.932773], [-72.051625, -69.356003], [-71.628395, -69.779233], [-71.120416, -70.202463], [-70.442937, -70.287163], [-69.850210, -70.033433], [-69.342231, -69.525453], [-69.172731, -68.847973], [-69.172731, -67.832013], [-69.172731, -67.662513], [-68.919001, -67.577813], [-37.676980, -67.577813], [-37.507480, -67.493113], [-36.491522, -66.392923], [-36.153040, -65.884943], [-35.983543, -65.292213], [-36.153040, -64.614743], [-36.491522, -64.022003], [-40.132128, -59.958173], [-40.386374, -59.873373], [-67.310313, -59.873373], [-67.395063, -59.873373], [-67.733544, -60.042873], [-67.818294, -60.127073], [-68.919003, -60.127073], [-69.172733, -60.042873], [-69.172733, -59.873373], [-69.172733, -58.349433], [-69.342233, -57.671953], [-69.850212, -57.163973], [-70.442939, -56.994483], [-71.120418, -57.079183], [-71.670773, -57.460033], [-72.051627, -57.926153], [-72.729106, -58.349383], [-73.490814, -58.349383], [-74.168292, -57.926153], [-74.506773, -57.163933], [-74.761022, -55.216763], [-75.014752, -54.369783], [-75.522731, -53.608073], [-76.200210, -52.930593], [-77.046670, -52.592113], [-77.978395, -52.422613], [-93.472023, -60.550803], [-92.540813, -60.635003], [-91.609603, -61.142983], [-90.932125, -61.820464], [-90.508895, -62.667434], [-90.339396, -63.598643], [-90.508895, -64.614604], [-90.932125, -65.461064], [-91.609603, -66.138544], [-92.540813, -66.561774], [-93.472023, -66.731274], [-94.403749, -66.561774], [-95.334958, -66.138544], [-96.011920, -65.461064], [-96.435666, -64.614604], [-96.604648, -63.598643], [-96.435666, -62.667434], [-96.011920, -61.820464], [-95.334958, -61.142983], [-94.403749, -60.635003]]; +outline_a1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81], [101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82]]; + +outline_a1515_points = [[-27.747435, 89.408907], [-27.691694, 88.264402], [-27.527879, 87.150543], [-27.261101, 86.072726], [-26.896475, 85.036348], [-26.439111, 84.046807], [-25.894123, 83.109501], [-25.266624, 82.229825], [-24.561725, 81.413178], [-23.784539, 80.664956], [-22.940179, 79.990558], [-22.033757, 79.395379], [-21.070386, 78.884819], [-20.055178, 78.464273], [-18.993246, 78.139139], [-17.889701, 77.914814], [-16.749657, 77.796697], [-15.992168, 77.862910], [-15.246298, 77.977353], [-14.513996, 78.138783], [-13.797209, 78.345956], [-13.097883, 78.597630], [-12.417966, 78.892563], [-11.759404, 79.229512], [-11.124144, 79.607234], [-10.514134, 80.024487], [-9.931320, 80.480028], [-9.377649, 80.972615], [-8.855068, 81.501005], [-8.365525, 82.063955], [-7.910965, 82.660223], [-7.493337, 83.288567], [-7.114586, 83.947743], [-6.989172, 84.148869], [-6.839641, 84.328289], [-6.668717, 84.484104], [-6.479126, 84.614421], [-6.273592, 84.717342], [-6.054841, 84.790972], [-5.825595, 84.833416], [-5.588581, 84.842778], [-4.401576, 84.822118], [-4.404176, 83.158135], [-4.365579, 82.977136], [-4.257119, 82.821218], [-4.095194, 82.706765], [-3.896198, 82.650157], [-2.118015, 82.650157], [-1.921717, 82.706763], [-1.760698, 82.821217], [-1.651343, 82.977135], [-1.610035, 83.158135], [-1.608035, 84.821640], [29.803495, 84.822740], [31.216845, 86.272307], [31.401361, 86.519124], [31.540597, 86.794786], [31.628544, 87.091878], [31.659195, 87.402988], [31.632480, 87.694882], [31.556820, 87.974134], [31.438942, 88.233430], [31.285575, 88.465457], [27.433065, 92.526694], [-1.607525, 92.526694], [-1.610525, 93.973033], [-1.639605, 94.256573], [-1.721595, 94.520302], [-1.850877, 94.758672], [-2.021829, 94.966139], [-2.228830, 95.137156], [-2.466262, 95.266177], [-2.728502, 95.347657], [-3.009930, 95.376050], [-3.260843, 95.352907], [-3.499919, 95.283460], [-3.719698, 95.167677], [-3.912717, 95.005530], [-4.672406, 94.334769], [-4.907971, 94.187114], [-5.162849, 94.075133], [-5.432179, 94.004086], [-5.711102, 93.979235], [-6.130895, 94.037180], [-6.512821, 94.202916], [-6.836890, 94.464292], [-7.083111, 94.809159], [-7.460231, 95.474435], [-7.876852, 96.108704], [-8.330996, 96.710696], [-8.820687, 97.279140], [-9.343946, 97.812766], [-9.898796, 98.310302], [-10.483260, 98.770478], [-11.095358, 99.192023], [-11.733115, 99.573666], [-12.394553, 99.914137], [-13.077693, 100.212165], [-13.780559, 100.466479], [-14.501172, 100.675809], [-15.237555, 100.838883], [-15.987731, 100.954432], [-16.749721, 101.021184], [-17.889762, 100.903071], [-18.993304, 100.678752], [-20.055235, 100.353623], [-21.070442, 99.933080], [-22.033813, 99.422522], [-22.940235, 98.827346], [-23.784595, 98.152949], [-24.561782, 97.404728], [-25.266681, 96.588080], [-25.894182, 95.708403], [-26.439171, 94.771093], [-26.896535, 93.781549], [-27.261163, 92.745168], [-27.527941, 91.667346], [-27.691757, 90.553481], [-27.747498, 89.408971], [-25.116587, 89.436297], [-25.098875, 89.786621], [-25.046888, 90.126869], [-24.962354, 90.455313], [-24.847003, 90.770224], [-24.702560, 91.069874], [-24.530755, 91.352535], [-24.333315, 91.616479], [-24.111967, 91.859976], [-23.868440, 92.081300], [-23.604461, 92.278721], [-23.321758, 92.450511], [-23.022059, 92.594942], [-22.707091, 92.710286], [-22.378583, 92.794814], [-22.038262, 92.846798], [-21.687856, 92.864511], [-21.337445, 92.846798], [-20.997120, 92.794814], [-20.668609, 92.710286], [-20.353640, 92.594942], [-20.053940, 92.450511], [-19.771238, 92.278721], [-19.507260, 92.081300], [-19.263734, 91.859976], [-19.042388, 91.616479], [-18.844950, 91.352535], [-18.673147, 91.069874], [-18.528706, 90.770224], [-18.413357, 90.455313], [-18.328825, 90.126869], [-18.276839, 89.786621], [-18.259126, 89.436297], [-18.276839, 89.085978], [-18.328825, 88.745746], [-18.413357, 88.417328], [-18.528706, 88.102449], [-18.673147, 87.802838], [-18.844950, 87.520221], [-19.042388, 87.256324], [-19.263734, 87.012875], [-19.507260, 86.791600], [-19.771238, 86.594225], [-20.053940, 86.422479], [-20.353640, 86.278087], [-20.668609, 86.162776], [-20.997120, 86.078273], [-21.337445, 86.026305], [-21.687856, 86.008599], [-22.038262, 86.026305], [-22.378583, 86.078273], [-22.707091, 86.162776], [-23.022059, 86.278087], [-23.321758, 86.422479], [-23.604461, 86.594225], [-23.868440, 86.791600], [-24.111967, 87.012875], [-24.333315, 87.256324], [-24.530755, 87.520221], [-24.702560, 87.802838], [-24.847003, 88.102449], [-24.962354, 88.417328], [-25.046888, 88.745746], [-25.098875, 89.085978], [-25.116587, 89.436297]]; +outline_a1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118], [183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119]]; + +outline_1515_points = [[-27.686205, 62.893619], [-27.347725, 60.861704], [-26.585497, 58.914534], [-25.569539, 57.136349], [-24.214582, 55.527661], [-22.606412, 54.257455], [-20.743477, 53.241495], [-18.796309, 52.648767], [-16.764392, 52.310286], [-14.816706, 52.564534], [-12.869540, 53.241495], [-11.091352, 54.088473], [-9.567415, 55.358161], [-8.212976, 56.797868], [-7.112267, 58.490788], [-6.773270, 58.914534], [-6.181059, 59.253016], [-5.588332, 59.422513], [-4.402874, 59.422513], [-4.402874, 57.729077], [-4.233374, 57.390079], [-3.894895, 57.221098], [-2.116705, 57.221098], [-1.778225, 57.390079], [-1.608725, 57.729077], [-1.608725, 59.422188], [25.653695, 59.422188], [26.754405, 60.523161], [27.093405, 61.031140], [27.177605, 61.708100], [27.093405, 62.300830], [26.754405, 62.893558], [22.944295, 67.127188], [-1.608725, 67.127127], [-1.608725, 68.481849], [-1.862975, 69.243558], [-2.455705, 69.751539], [-3.217416, 69.921037], [-3.894895, 69.582039], [-4.656604, 68.905079], [-5.164583, 68.566082], [-5.757313, 68.481852], [-6.265292, 68.566082], [-6.773270, 68.905079], [-7.112267, 69.328309], [-8.128228, 71.021746], [-9.482667, 72.460934], [-11.091352, 73.731140], [-12.869540, 74.662349], [-14.731958, 75.255081], [-16.764392, 75.508811], [-18.796309, 75.255081], [-20.743477, 74.577600], [-22.606412, 73.561643], [-24.214582, 72.291434], [-25.569539, 70.767497], [-26.585497, 68.989828], [-27.347725, 67.042143], [-27.686205, 64.925476], [-25.146309, 63.909579], [-24.976810, 65.010286], [-24.468831, 65.941495], [-23.706603, 66.703722], [-22.775394, 67.211704], [-21.674686, 67.381201], [-20.658728, 67.211704], [-19.642769, 66.703722], [-18.881059, 65.941495], [-18.457312, 65.010286], [-18.288330, 63.909579], [-18.457312, 62.893619], [-18.881059, 61.877661], [-19.642769, 61.115434], [-20.658728, 60.692204], [-21.674686, 60.523222], [-22.775394, 60.692204], [-23.706603, 61.115434], [-24.468831, 61.877661], [-24.976810, 62.893619]]; +outline_1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], [78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59]]; + +outline_1542_points = [[-17.695078, 49.515770], [-19.558012, 49.262040], [-21.336198, 48.669310], [-22.944886, 47.738100], [-24.468824, 46.552640], [-25.653765, 45.198200], [-26.669723, 43.504770], [-27.431951, 41.726580], [-27.855180, 39.864160], [-28.024679, 38.001220], [-27.855180, 36.054060], [-27.431951, 34.191120], [-26.669723, 32.413450], [-25.653765, 30.804770], [-24.468824, 29.449810], [-23.029118, 28.264870], [-21.505180, 27.333140], [-19.727511, 26.740420], [-17.949326, 26.401930], [-16.086390, 26.401930], [-14.308721, 26.740420], [-12.615285, 27.417890], [-11.006597, 28.264870], [-9.567409, 29.449810], [-8.381952, 30.804770], [-7.450743, 32.413450], [-7.111745, 32.921430], [-6.519534, 33.259910], [-5.926803, 33.344710], [-5.334076, 33.344710], [-5.164576, 33.259910], [-5.079826, 33.090420], [-5.079826, 32.413450], [-4.995076, 32.074450], [-4.571846, 31.905470], [-2.794175, 31.905470], [-2.455175, 32.074450], [-2.286195, 32.413450], [-2.286195, 33.640770], [-2.286195, 33.937390], [-2.031945, 34.022190], [23.537555, 34.022190], [23.706535, 34.022190], [24.638255, 34.953400], [24.976735, 35.546130], [25.146235, 36.223090], [25.061435, 36.815820], [24.722435, 37.408550], [22.013565, 40.372190], [21.844065, 40.456390], [-1.354525, 40.456390], [-1.524025, 40.541190], [-1.608725, 40.710690], [-1.608725, 40.964940], [-1.608725, 41.726650], [-1.862455, 42.488880], [-2.455185, 42.996860], [-3.217412, 43.081560], [-3.894888, 42.742560], [-4.402870, 42.319330], [-4.910849, 41.980850], [-5.587808, 41.896050], [-6.265287, 41.980850], [-6.858014, 42.404080], [-7.196496, 42.996810], [-8.043472, 44.605490], [-9.228414, 46.129430], [-10.583369, 47.399120], [-12.192057, 48.415080], [-13.969726, 49.092560], [-15.832661, 49.515790], [-22.013160, 41.133850], [-20.997201, 40.964870], [-20.150741, 40.541120], [-19.388514, 39.864160], [-18.965285, 38.932440], [-18.795786, 38.001220], [-18.965285, 36.985270], [-19.388514, 36.138810], [-20.150741, 35.376580], [-20.997201, 34.953350], [-22.013160, 34.783850], [-22.944886, 34.953350], [-23.876095, 35.376580], [-24.553056, 36.138810], [-24.976803, 36.985270], [-25.145785, 38.001220], [-24.976803, 38.932440], [-24.553056, 39.864160], [-23.876095, 40.541120], [-22.944886, 40.964870]]; +outline_1542_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70], [90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71]]; + +outline_1517_points = [[-84.497378, -27.022613], [-86.190814, -27.276343], [-87.714754, -27.869073], [-89.069709, -28.800803], [-90.170416, -29.985743], [-90.932127, -30.832723], [-91.948085, -31.340703], [-93.048793, -31.509683], [-94.487982, -31.679183], [-95.927688, -32.187163], [-97.197378, -32.949383], [-98.213337, -34.050093], [-99.060313, -35.319783], [-99.568293, -36.759493], [-99.737275, -38.198683], [-99.568293, -39.722613], [-99.060313, -41.161803], [-98.213337, -42.432013], [-97.197378, -43.447973], [-95.927688, -44.294433], [-94.487982, -44.802413], [-93.048793, -44.971913], [-91.948085, -45.141413], [-90.932127, -45.649393], [-90.170416, -46.411103], [-89.069709, -47.681313], [-87.714754, -48.612513], [-86.190814, -49.205233], [-84.497378, -49.374733], [-77.978396, -49.374733], [-77.046672, -49.290033], [-76.200211, -48.866813], [-75.522732, -48.274084], [-75.014754, -47.511863], [-74.761024, -46.580653], [-74.506776, -44.633483], [-74.168294, -43.956003], [-73.490815, -43.532774], [-72.729106, -43.532774], [-72.051627, -43.956003], [-71.628397, -44.379233], [-71.120418, -44.802463], [-70.442940, -44.887163], [-69.850212, -44.633433], [-69.342233, -44.125453], [-69.172733, -43.447973], [-69.172733, -42.432013], [-69.172733, -42.262513], [-68.919003, -42.177813], [-42.050179, -42.177813], [-41.880679, -42.093013], [-40.864722, -40.992823], [-40.526240, -40.484843], [-40.356743, -39.892113], [-40.526240, -39.214643], [-40.864722, -38.621913], [-44.505327, -34.558073], [-44.759573, -34.473373], [-67.310315, -34.473373], [-67.395065, -34.473373], [-67.733546, -34.642873], [-67.818296, -34.727074], [-68.919005, -34.727074], [-69.172735, -34.642873], [-69.172735, -34.473373], [-69.172735, -32.949433], [-69.342235, -32.271953], [-69.850214, -31.763973], [-70.442942, -31.594483], [-71.120420, -31.679183], [-71.670775, -32.060033], [-72.051629, -32.526153], [-72.729108, -32.949383], [-73.490816, -32.949383], [-74.168295, -32.526153], [-74.506777, -31.763933], [-74.761025, -29.816763], [-75.014755, -28.969783], [-75.522733, -28.208073], [-76.200212, -27.530593], [-77.046673, -27.192113], [-77.978397, -27.022613], [-93.472024, -35.150803], [-92.540813, -35.235003], [-91.609604, -35.742983], [-90.932127, -36.420463], [-90.508897, -37.267433], [-90.339398, -38.198643], [-90.508897, -39.214603], [-90.932127, -40.061064], [-91.609604, -40.738544], [-92.540813, -41.161773], [-93.472024, -41.331273], [-94.403750, -41.161773], [-95.334959, -40.738544], [-96.011921, -40.061074], [-96.435667, -39.214613], [-96.604649, -38.198653], [-96.435667, -37.267443], [-96.011921, -36.420463], [-95.334959, -35.742983], [-94.403750, -35.235003]]; +outline_1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81], [101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82]]; + +outline_1655_points = [[-98.178191, -20.870583], [-98.159692, -21.235736], [-98.105398, -21.590376], [-98.017114, -21.932703], [-97.896643, -22.260919], [-97.745788, -22.573222], [-97.566354, -22.867812], [-97.360145, -23.142890], [-97.128964, -23.396655], [-96.874616, -23.627307], [-96.598904, -23.833045], [-96.303632, -24.012070], [-95.990604, -24.162582], [-95.661624, -24.282781], [-95.318496, -24.370866], [-94.963023, -24.425036], [-94.597011, -24.443493], [-77.249753, -24.443493], [-76.883770, -24.425036], [-76.528320, -24.370866], [-76.185208, -24.282781], [-75.856237, -24.162582], [-75.543214, -24.012070], [-75.247942, -23.833045], [-74.972227, -23.627307], [-74.717872, -23.396655], [-74.486683, -23.142890], [-74.280464, -22.867812], [-74.101020, -22.573222], [-73.950155, -22.260919], [-73.829675, -21.932703], [-73.741383, -21.590376], [-73.687084, -21.235736], [-73.668583, -20.870583], [-73.668583, -20.218943], [-73.639406, -19.930485], [-73.555733, -19.661801], [-73.423355, -19.418652], [-73.248061, -19.206797], [-73.035641, -19.031995], [-72.791885, -18.900006], [-72.522583, -18.816589], [-72.233523, -18.787503], [-69.680713, -18.787503], [-69.483111, -18.747634], [-69.321630, -18.638940], [-69.212695, -18.477792], [-69.172733, -18.280563], [-69.172733, -17.031023], [-69.152802, -16.932446], [-69.098440, -16.851958], [-69.017791, -16.797698], [-68.919003, -16.777803], [-44.028533, -16.777813], [-43.810939, -16.733974], [-43.633205, -16.614443], [-43.513350, -16.437200], [-43.469393, -16.220223], [-43.469393, -15.662633], [-43.446742, -15.433081], [-43.381662, -15.218571], [-43.278470, -15.023567], [-43.141478, -14.852531], [-42.975003, -14.709927], [-42.783357, -14.600217], [-42.570856, -14.527865], [-42.341813, -14.497333], [-42.341813, -14.496333], [-42.087158, -14.437164], [-41.880511, -14.291952], [-41.741862, -14.081241], [-41.691203, -13.825573], [-41.735953, -13.584755], [-41.863803, -13.375983], [-44.528753, -10.424223], [-44.613947, -10.362673], [-44.716863, -10.341023], [-68.919003, -10.341023], [-69.017791, -10.321049], [-69.098440, -10.266613], [-69.152802, -10.185951], [-69.172733, -10.087293], [-69.172733, -8.913723], [-69.199582, -8.648223], [-69.276578, -8.400950], [-69.398400, -8.177198], [-69.559723, -7.982258], [-69.755227, -7.821426], [-69.979586, -7.699992], [-70.227480, -7.623250], [-70.493583, -7.596493], [-72.233523, -7.596493], [-72.522583, -7.567380], [-72.791885, -7.483890], [-73.035641, -7.351801], [-73.248061, -7.176888], [-73.423355, -6.964930], [-73.555733, -6.721702], [-73.639406, -6.452981], [-73.668583, -6.164543], [-73.668583, -5.512903], [-73.687084, -5.147797], [-73.741383, -4.793178], [-73.829675, -4.450851], [-73.950155, -4.122618], [-74.101020, -3.810282], [-74.280464, -3.515646], [-74.486683, -3.240514], [-74.717872, -2.986688], [-74.972227, -2.755972], [-75.247942, -2.550168], [-75.543214, -2.371080], [-75.856237, -2.220509], [-76.185208, -2.100261], [-76.528320, -2.012137], [-76.883770, -1.957940], [-77.249753, -1.939473], [-94.597011, -1.939473], [-94.963023, -1.957940], [-95.318496, -2.012137], [-95.661624, -2.100261], [-95.990604, -2.220509], [-96.303632, -2.371080], [-96.598904, -2.550168], [-96.874616, -2.755972], [-97.128964, -2.986688], [-97.360145, -3.240514], [-97.566354, -3.515646], [-97.745788, -3.810282], [-97.896643, -4.122618], [-98.017114, -4.450851], [-98.105398, -4.793178], [-98.159692, -5.147797], [-98.178191, -5.512903], [-95.771621, -13.216273], [-95.715344, -12.659736], [-95.553956, -12.141270], [-95.298616, -11.672012], [-94.960488, -11.263098], [-94.550732, -10.925668], [-94.080509, -10.670857], [-93.560982, -10.509803], [-93.003311, -10.453643], [-92.445557, -10.509803], [-91.925943, -10.670857], [-91.455635, -10.925668], [-91.045799, -11.263098], [-90.707601, -11.672012], [-90.452206, -12.141270], [-90.290780, -12.659736], [-90.234490, -13.216273], [-90.290780, -13.772745], [-90.452206, -14.291131], [-90.707601, -14.760302], [-91.045799, -15.169127], [-91.455635, -15.506477], [-91.925943, -15.761222], [-92.445557, -15.922231], [-93.003311, -15.978373], [-93.560982, -15.922231], [-94.080509, -15.761222], [-94.550732, -15.506477], [-94.960488, -15.169127], [-95.298616, -14.760302], [-95.553956, -14.291131], [-95.715344, -13.772745], [-95.771621, -13.216273]]; +outline_1655_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], [166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134]]; + +outline_1644_points = [[-73.843095, 20.163619], [-73.843095, 19.326439], [-73.812120, 19.019898], [-73.723287, 18.734293], [-73.582741, 18.475766], [-73.396624, 18.250465], [-73.171079, 18.064533], [-72.912249, 17.924116], [-72.626277, 17.835360], [-72.319305, 17.804409], [-70.391625, 17.804409], [-70.146078, 17.779663], [-69.917328, 17.708695], [-69.710288, 17.596411], [-69.529873, 17.447715], [-69.380996, 17.267512], [-69.268572, 17.060706], [-69.197513, 16.832204], [-69.172735, 16.586909], [-69.172735, 15.318429], [-69.152753, 15.219799], [-69.098275, 15.139199], [-69.017511, 15.084825], [-68.918665, 15.064879], [-45.127165, 15.064879], [-44.969453, 15.048413], [-44.820073, 15.000359], [-44.683657, 14.922724], [-44.564835, 14.817519], [-44.565625, 14.816519], [-42.149095, 12.178618], [-41.932629, 11.893018], [-41.773872, 11.575215], [-41.676167, 11.233766], [-41.642855, 10.877229], [-41.685106, 10.475773], [-41.808352, 10.095871], [-42.007334, 9.749520], [-42.276795, 9.448718], [-42.277585, 9.448978], [-43.120725, 8.687788], [-43.199564, 8.639088], [-43.291115, 8.622188], [-68.918825, 8.622188], [-69.017667, 8.602234], [-69.098432, 8.547831], [-69.152911, 8.467166], [-69.172895, 8.368428], [-69.172895, 6.973381], [-69.204820, 6.815431], [-69.291878, 6.686428], [-69.420992, 6.599441], [-69.579085, 6.567541], [-72.319465, 6.567541], [-72.626434, 6.536598], [-72.912404, 6.447861], [-73.171232, 6.307468], [-73.396775, 6.121558], [-73.582892, 5.896270], [-73.723437, 5.637742], [-73.812270, 5.352113], [-73.843245, 5.045521], [-73.861138, 4.684685], [-73.913690, 4.333858], [-73.999214, 3.994776], [-74.116024, 3.669174], [-74.262432, 3.358789], [-74.436750, 3.065354], [-74.637291, 2.790607], [-74.862368, 2.536283], [-75.110293, 2.304118], [-75.379380, 2.095846], [-75.667941, 1.913204], [-75.974288, 1.757928], [-76.296734, 1.631752], [-76.633593, 1.536413], [-76.983175, 1.473646], [-77.343795, 1.445186], [-81.726376, 1.348931], [-86.109857, 1.316876], [-90.493159, 1.348928], [-94.875718, 1.445186], [-95.236316, 1.473644], [-95.585884, 1.536411], [-95.922733, 1.631751], [-96.245176, 1.757928], [-96.551523, 1.913207], [-96.840088, 2.095851], [-97.109182, 2.304126], [-97.357118, 2.536295], [-97.582206, 2.790622], [-97.782759, 3.065372], [-97.957089, 3.358810], [-98.103508, 3.669198], [-98.220328, 3.994803], [-98.305861, 4.333887], [-98.358419, 4.684715], [-98.376313, 5.045551], [-98.376313, 20.163669], [-98.358419, 20.524468], [-98.305861, 20.875264], [-98.220328, 21.214318], [-98.103509, 21.539896], [-97.957090, 21.850261], [-97.782760, 22.143678], [-97.582207, 22.418411], [-97.357119, 22.672724], [-97.109185, 22.904880], [-96.840092, 23.113145], [-96.551528, 23.295783], [-96.245182, 23.451056], [-95.922741, 23.577231], [-95.585894, 23.672570], [-95.236329, 23.735338], [-94.875733, 23.763799], [-90.493153, 23.860244], [-86.109702, 23.892639], [-81.726239, 23.860259], [-77.343815, 23.763799], [-76.983195, 23.735341], [-76.633613, 23.672575], [-76.296754, 23.577238], [-75.974308, 23.451065], [-75.667961, 23.295791], [-75.379400, 23.113154], [-75.110313, 22.904889], [-74.862388, 22.672731], [-74.637311, 22.418417], [-74.436770, 22.143683], [-74.262452, 21.850265], [-74.116044, 21.539899], [-73.999234, 21.214320], [-73.913710, 20.875264], [-73.861158, 20.524469], [-73.843265, 20.163669], [-95.311723, 12.622819], [-95.295324, 12.298804], [-95.247192, 11.984115], [-95.168927, 11.680348], [-95.062129, 11.389101], [-94.769327, 10.850559], [-94.381582, 10.381271], [-93.911687, 9.994019], [-93.372436, 9.701584], [-93.080800, 9.594918], [-92.776623, 9.516750], [-92.461505, 9.468678], [-92.137043, 9.452299], [-91.812644, 9.468678], [-91.497576, 9.516750], [-91.193439, 9.594918], [-90.901835, 9.701584], [-90.362624, 9.994019], [-89.892744, 10.381271], [-89.504997, 10.850559], [-89.212184, 11.389101], [-89.105380, 11.680348], [-89.027109, 11.984115], [-88.978973, 12.298804], [-88.962572, 12.622819], [-88.978973, 12.946866], [-89.027109, 13.261593], [-89.105380, 13.565400], [-89.212184, 13.856689], [-89.504997, 14.395317], [-89.892744, 14.864690], [-90.362624, 15.252019], [-90.901835, 15.544515], [-91.193439, 15.651205], [-91.497576, 15.729391], [-91.812644, 15.777475], [-92.137043, 15.793859], [-92.461505, 15.777475], [-92.776623, 15.729391], [-93.080800, 15.651205], [-93.372436, 15.544515], [-93.911687, 15.252019], [-94.381582, 14.864690], [-94.769327, 14.395317], [-95.062129, 13.856689], [-95.168927, 13.565400], [-95.247192, 13.261593], [-95.295324, 12.946866], [-95.311723, 12.622819]]; +outline_1644_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134], [183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135]]; + +outline_M3_points = [[63.698045, 96.363589], [63.698045, 95.526409], [63.729020, 95.219869], [63.817853, 94.934263], [63.958399, 94.675737], [64.144516, 94.450435], [64.370061, 94.264504], [64.628891, 94.124087], [64.914863, 94.035330], [65.221835, 94.004379], [67.149515, 94.004379], [67.395056, 93.983827], [67.623792, 93.923810], [67.830811, 93.826787], [68.011202, 93.695217], [68.160055, 93.531559], [68.272459, 93.338270], [68.343502, 93.117811], [68.368275, 92.872641], [68.368275, 92.458724], [68.368275, 91.929605], [68.388278, 91.831621], [68.442800, 91.752441], [68.523609, 91.699487], [68.622475, 91.680187], [92.413975, 91.680187], [92.711977, 91.651719], [92.826805, 91.615404], [92.903585, 91.563718], [95.392045, 88.846437], [95.507283, 88.692134], [95.608511, 88.502426], [95.767268, 88.056123], [95.864973, 87.586174], [95.898285, 87.171227], [95.864370, 86.777777], [95.773272, 86.427900], [95.640958, 86.142602], [95.483395, 85.942892], [94.420445, 84.887787], [94.341606, 84.839087], [94.250055, 84.822187], [81.421145, 84.822187], [68.622345, 84.822187], [68.523503, 84.802232], [68.442738, 84.747829], [68.388259, 84.667164], [68.368275, 84.568427], [68.368275, 83.868034], [68.368275, 83.173377], [68.336350, 83.015426], [68.249292, 82.886423], [68.120178, 82.799436], [67.962085, 82.767537], [65.221705, 82.767537], [64.914736, 82.736593], [64.628766, 82.647856], [64.369938, 82.507463], [64.144395, 82.321553], [63.958278, 82.096265], [63.817733, 81.837737], [63.728900, 81.552108], [63.697925, 81.245517], [63.680032, 80.884679], [63.627480, 80.533852], [63.541956, 80.194769], [63.425146, 79.869167], [63.278738, 79.558780], [63.104420, 79.265346], [62.903879, 78.990598], [62.678802, 78.736274], [62.430877, 78.504108], [62.161790, 78.295836], [61.873229, 78.113194], [61.566882, 77.957918], [61.244436, 77.831742], [60.907577, 77.736403], [60.557995, 77.673636], [60.197375, 77.645177], [55.814793, 77.548922], [51.431305, 77.516867], [47.048003, 77.548918], [42.665445, 77.645177], [42.304847, 77.673634], [41.955280, 77.736401], [41.618432, 77.831741], [41.295990, 77.957918], [40.989643, 78.113197], [40.701078, 78.295842], [40.431984, 78.504116], [40.184050, 78.736285], [39.958962, 78.990613], [39.758408, 79.265364], [39.584078, 79.558801], [39.437659, 79.869190], [39.320839, 80.194795], [39.235306, 80.533880], [39.182749, 80.884709], [39.164855, 81.245547], [39.164855, 96.363669], [39.182749, 96.724469], [39.235306, 97.075264], [39.320839, 97.414319], [39.437659, 97.739896], [39.584078, 98.050262], [39.758408, 98.343679], [39.958961, 98.618411], [40.184048, 98.872724], [40.431983, 99.104881], [40.701076, 99.313146], [40.989639, 99.495783], [41.295986, 99.651057], [41.618426, 99.777231], [41.955273, 99.872570], [42.304839, 99.935338], [42.665435, 99.963799], [47.048015, 100.060244], [51.431465, 100.092639], [55.814931, 100.060259], [60.197355, 99.963799], [60.557975, 99.935342], [60.907557, 99.872576], [61.244416, 99.777239], [61.566862, 99.651065], [61.873209, 99.495792], [62.161770, 99.313155], [62.430857, 99.104889], [62.678782, 98.872732], [62.903859, 98.618418], [63.104400, 98.343684], [63.278718, 98.050266], [63.425126, 97.739899], [63.541936, 97.414320], [63.627460, 97.075265], [63.680012, 96.724469], [63.697905, 96.363669], [42.229415, 88.822787], [42.245814, 88.498772], [42.293945, 88.184083], [42.372210, 87.880316], [42.479009, 87.589069], [42.771810, 87.050527], [43.159556, 86.581239], [43.629451, 86.193987], [44.168702, 85.901552], [44.460338, 85.794886], [44.764515, 85.716718], [45.079633, 85.668646], [45.404095, 85.652267], [45.728494, 85.668646], [46.043562, 85.716718], [46.347698, 85.794886], [46.639302, 85.901552], [47.178513, 86.193987], [47.648393, 86.581239], [48.036140, 87.050527], [48.328953, 87.589069], [48.435757, 87.880316], [48.514028, 88.184083], [48.562164, 88.498772], [48.578565, 88.822787], [48.562164, 89.146834], [48.514028, 89.461561], [48.435757, 89.765368], [48.328953, 90.056657], [48.036140, 90.595286], [47.648393, 91.064659], [47.178513, 91.451988], [46.639302, 91.744485], [46.347698, 91.851175], [46.043562, 91.929361], [45.728494, 91.977445], [45.404095, 91.993829], [45.079633, 91.977445], [44.764515, 91.929361], [44.460338, 91.851175], [44.168702, 91.744485], [43.629451, 91.451988], [43.159556, 91.064659], [42.771810, 90.595286], [42.479009, 90.056657], [42.372210, 89.765368], [42.293945, 89.461561], [42.245814, 89.146834], [42.229415, 88.822787]]; +outline_M3_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135], [184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136]]; + +outline_1638_points = [[-99.114585, 56.488968], [-99.095704, 56.107308], [-99.040246, 55.736244], [-98.949993, 55.377611], [-98.826727, 55.033243], [-98.672227, 54.704976], [-98.488276, 54.394644], [-98.276654, 54.104082], [-98.039143, 53.835125], [-97.777523, 53.589608], [-97.493575, 53.369367], [-97.189082, 53.176235], [-96.865823, 53.012048], [-96.525580, 52.878641], [-96.170133, 52.777849], [-95.801265, 52.711506], [-95.420755, 52.681448], [-91.040075, 52.584933], [-86.658495, 52.552768], [-82.276909, 52.584940], [-77.896245, 52.681448], [-77.515736, 52.711507], [-77.146868, 52.777851], [-76.791421, 52.878645], [-76.451178, 53.012052], [-76.127919, 53.176239], [-75.823425, 53.369371], [-75.539478, 53.589613], [-75.277858, 53.835129], [-75.040347, 54.104085], [-74.828725, 54.394646], [-74.644774, 54.704978], [-74.490274, 55.033245], [-74.367008, 55.377612], [-74.276755, 55.736245], [-74.221297, 56.107308], [-74.202415, 56.488968], [-74.202415, 57.390718], [-74.174051, 57.672107], [-74.092707, 57.934247], [-73.964010, 58.171508], [-73.793587, 58.378259], [-73.587062, 58.548867], [-73.350063, 58.677702], [-73.088216, 58.759133], [-72.807145, 58.787528], [-72.510943, 58.755698], [-72.231263, 58.662988], [-71.977267, 58.513562], [-71.758115, 58.311588], [-71.757115, 58.309588], [-71.250695, 57.727718], [-71.065040, 57.556505], [-70.849848, 57.429788], [-70.612880, 57.351138], [-70.361895, 57.324128], [-70.123752, 57.348199], [-69.901878, 57.417230], [-69.701046, 57.526443], [-69.526028, 57.671060], [-69.381596, 57.846304], [-69.272521, 58.047398], [-69.203577, 58.269565], [-69.179535, 58.508028], [-69.179535, 59.167938], [-69.159561, 59.266811], [-69.105125, 59.347638], [-69.024463, 59.402177], [-68.925805, 59.422188], [-41.949155, 59.422188], [-41.851454, 59.441575], [-41.768805, 59.496588], [-41.771805, 59.495588], [-40.787885, 60.478998], [-40.562559, 60.754036], [-40.396694, 61.064871], [-40.294262, 61.402000], [-40.259235, 61.755918], [-40.289694, 62.086300], [-40.379087, 62.403000], [-40.524439, 62.698209], [-40.722775, 62.964118], [-40.723305, 62.965117], [-44.426955, 67.083727], [-44.512002, 67.146002], [-44.615055, 67.167927], [-68.926275, 67.167927], [-69.024934, 67.187895], [-69.105600, 67.242361], [-69.160039, 67.323173], [-69.180015, 67.422178], [-69.180015, 69.357457], [-69.203893, 69.594285], [-69.272370, 69.814867], [-69.380709, 70.014478], [-69.524177, 70.188392], [-69.698036, 70.331885], [-69.897553, 70.440231], [-70.117991, 70.508703], [-70.354615, 70.532578], [-70.544705, 70.517155], [-70.728619, 70.471599], [-70.902782, 70.396974], [-71.063615, 70.294347], [-71.062615, 70.294347], [-71.965445, 69.609597], [-72.156527, 69.488038], [-72.363420, 69.399285], [-72.581909, 69.344893], [-72.807775, 69.326417], [-73.088842, 69.354838], [-73.350688, 69.436334], [-73.587685, 69.565261], [-73.794208, 69.735972], [-73.964631, 69.942823], [-74.093327, 70.180166], [-74.174671, 70.442356], [-74.203035, 70.723747], [-74.203035, 71.624977], [-74.221917, 72.006581], [-74.277375, 72.377608], [-74.367628, 72.736222], [-74.490894, 73.080586], [-74.645394, 73.408864], [-74.829345, 73.719220], [-75.040967, 74.009816], [-75.278478, 74.278817], [-75.540098, 74.524387], [-75.824045, 74.744688], [-76.128539, 74.937884], [-76.451798, 75.102139], [-76.792041, 75.235616], [-77.147488, 75.336479], [-77.516356, 75.402892], [-77.896865, 75.433017], [-82.277534, 75.529122], [-86.659125, 75.561177], [-91.040764, 75.529107], [-95.421375, 75.433017], [-95.801885, 75.402898], [-96.170753, 75.336491], [-96.526200, 75.235631], [-96.866443, 75.102156], [-97.189702, 74.937902], [-97.494195, 74.744705], [-97.778143, 74.524403], [-98.039763, 74.278832], [-98.277274, 74.009829], [-98.488896, 73.719230], [-98.672847, 73.408872], [-98.827347, 73.080592], [-98.950613, 72.736226], [-99.040866, 72.377610], [-99.096324, 72.006582], [-99.115205, 71.624977], [-95.835715, 64.080228], [-95.819330, 64.404687], [-95.771241, 64.719799], [-95.693046, 65.023967], [-95.586344, 65.315590], [-95.293815, 65.854811], [-94.906444, 66.324671], [-94.437020, 66.712382], [-93.898335, 67.005153], [-93.607015, 67.111939], [-93.303176, 67.190195], [-92.988417, 67.238320], [-92.664335, 67.254718], [-92.340260, 67.238320], [-92.025517, 67.190195], [-91.721704, 67.111939], [-91.430417, 67.005153], [-90.891815, 66.712382], [-90.422487, 66.324671], [-90.035211, 65.854811], [-89.742765, 65.315590], [-89.636097, 65.023967], [-89.557928, 64.719799], [-89.509855, 64.404687], [-89.493475, 64.080228], [-89.509855, 63.755805], [-89.557928, 63.440719], [-89.636097, 63.136571], [-89.742765, 62.844959], [-90.035211, 62.305744], [-90.422487, 61.835871], [-90.891815, 61.448138], [-91.430417, 61.155341], [-91.721704, 61.048544], [-92.025517, 60.970279], [-92.340260, 60.922147], [-92.664335, 60.905748], [-92.988417, 60.922147], [-93.303176, 60.970279], [-93.607015, 61.048544], [-93.898335, 61.155341], [-94.437020, 61.448138], [-94.906444, 61.835871], [-95.293815, 62.305744], [-95.586344, 62.844959], [-95.693046, 63.136571], [-95.771241, 63.440719], [-95.819330, 63.755805], [-95.835715, 64.080228]]; +outline_1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154], [203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155]]; + +outline_a1638_points = [[-99.112005, 31.098270], [-99.093122, 30.717774], [-99.037658, 30.347827], [-98.947395, 29.990262], [-98.824114, 29.646908], [-98.669597, 29.319597], [-98.485624, 29.010159], [-98.273976, 28.720425], [-98.036434, 28.452227], [-97.774780, 28.207395], [-97.490794, 27.987759], [-97.186257, 27.795151], [-96.862952, 27.631402], [-96.522657, 27.498342], [-96.167156, 27.397803], [-95.798228, 27.331615], [-95.417655, 27.301610], [-91.036460, 27.205505], [-86.654365, 27.173450], [-82.272259, 27.205482], [-77.891075, 27.301610], [-77.510502, 27.331617], [-77.141575, 27.397806], [-76.786073, 27.498346], [-76.445779, 27.631406], [-76.122473, 27.795156], [-75.817937, 27.987763], [-75.533951, 28.207399], [-75.272297, 28.452231], [-75.034755, 28.720429], [-74.823107, 29.010162], [-74.639134, 29.319599], [-74.484616, 29.646910], [-74.361336, 29.990263], [-74.271073, 30.347828], [-74.215609, 30.717774], [-74.196725, 31.098270], [-74.196725, 31.996920], [-74.168361, 32.277485], [-74.087018, 32.538855], [-73.958323, 32.775415], [-73.787902, 32.981552], [-73.581379, 33.151653], [-73.344382, 33.280103], [-73.082535, 33.361290], [-72.801465, 33.389600], [-72.505200, 33.357868], [-72.225349, 33.265450], [-71.971169, 33.116511], [-71.751915, 32.915220], [-71.750915, 32.913220], [-71.244485, 32.332890], [-71.058792, 32.162303], [-70.843555, 32.036076], [-70.606577, 31.957746], [-70.355655, 31.930850], [-70.117463, 31.954829], [-69.895567, 32.023600], [-69.694731, 32.132407], [-69.519724, 32.276497], [-69.375311, 32.451117], [-69.266257, 32.651513], [-69.197330, 32.872932], [-69.173295, 33.110620], [-69.173295, 33.768980], [-69.153345, 33.867480], [-69.098949, 33.947972], [-69.018294, 34.002271], [-68.919565, 34.022190], [-37.498785, 34.022190], [-37.401453, 34.041327], [-37.318955, 34.096090], [-37.320955, 34.095560], [-36.337035, 35.075860], [-36.111705, 35.350098], [-35.945840, 35.660063], [-35.843411, 35.996254], [-35.808385, 36.349170], [-35.838924, 36.678597], [-35.928492, 36.994333], [-36.074019, 37.288633], [-36.272435, 37.553750], [-36.272965, 37.554280], [-39.976615, 41.661000], [-40.061805, 41.722875], [-40.165235, 41.744700], [-68.919535, 41.744700], [-69.018264, 41.764645], [-69.098919, 41.818990], [-69.153315, 41.899494], [-69.173265, 41.997920], [-69.173265, 43.927520], [-69.172735, 43.927520], [-69.196615, 44.163628], [-69.265095, 44.383584], [-69.373440, 44.582663], [-69.516913, 44.756140], [-69.690776, 44.899290], [-69.890294, 45.007390], [-70.110729, 45.075715], [-70.347345, 45.099540], [-70.537567, 45.084097], [-70.721615, 45.038551], [-70.895907, 44.964071], [-71.056855, 44.861830], [-71.055855, 44.861830], [-71.958645, 44.179180], [-72.149883, 44.057695], [-72.356943, 43.969118], [-72.575565, 43.914904], [-72.801485, 43.896510], [-73.082556, 43.924835], [-73.344403, 44.006063], [-73.581402, 44.134576], [-73.787927, 44.304753], [-73.958350, 44.510975], [-74.087047, 44.747621], [-74.168391, 45.009073], [-74.196755, 45.289710], [-74.196755, 46.188360], [-74.215639, 46.568815], [-74.271103, 46.938719], [-74.361366, 47.296242], [-74.484646, 47.639552], [-74.639163, 47.966821], [-74.823136, 48.276216], [-75.034784, 48.565909], [-75.272325, 48.834068], [-75.533979, 49.078864], [-75.817964, 49.298466], [-76.122500, 49.491044], [-76.445805, 49.654767], [-76.786098, 49.787806], [-77.141598, 49.888329], [-77.510524, 49.954507], [-77.891095, 49.984510], [-82.272280, 50.080615], [-86.654395, 50.112670], [-91.036482, 50.080637], [-95.417675, 49.984510], [-95.798250, 49.954506], [-96.167179, 49.888326], [-96.522681, 49.787802], [-96.862976, 49.654763], [-97.186282, 49.491039], [-97.490818, 49.298462], [-97.774804, 49.078860], [-98.036458, 48.834065], [-98.273999, 48.565906], [-98.485646, 48.276214], [-98.669619, 47.966819], [-98.824136, 47.639551], [-98.947416, 47.296241], [-99.037678, 46.938719], [-99.093142, 46.568815], [-99.112025, 46.188360], [-95.843475, 38.650780], [-95.827092, 38.974257], [-95.779008, 39.288424], [-95.700820, 39.591684], [-95.594128, 39.882443], [-95.301620, 40.420079], [-94.914267, 40.888573], [-94.444853, 41.275167], [-93.906162, 41.567102], [-93.614833, 41.673585], [-93.310978, 41.751619], [-92.996197, 41.799608], [-92.672085, 41.815960], [-92.347970, 41.799608], [-92.033173, 41.751619], [-91.729295, 41.673585], [-91.437933, 41.567102], [-90.899161, 41.275167], [-90.429653, 40.888573], [-90.042205, 40.420079], [-89.749614, 39.882443], [-89.642888, 39.591684], [-89.564675, 39.288424], [-89.516574, 38.974257], [-89.500185, 38.650780], [-89.516574, 38.327344], [-89.564675, 38.013221], [-89.642888, 37.710005], [-89.749614, 37.419290], [-90.042205, 36.881741], [-90.429653, 36.413328], [-90.899161, 36.026806], [-91.437933, 35.734927], [-91.729295, 35.628465], [-92.033173, 35.550447], [-92.347970, 35.502467], [-92.672085, 35.486120], [-92.996197, 35.502467], [-93.310978, 35.550447], [-93.614833, 35.628465], [-93.906162, 35.734927], [-94.444853, 36.026806], [-94.914267, 36.413328], [-95.301620, 36.881741], [-95.594128, 37.419290], [-95.700820, 37.710005], [-95.779008, 38.013221], [-95.827092, 38.327344], [-95.843475, 38.650780]]; +outline_a1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], [204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156]]; + +engrave_1515_points = [[-6.265496, 63.570957], [-6.350166, 65.518325], [-6.773499, 67.380992], [-7.535499, 69.158989], [-8.551499, 70.682989], [-9.821499, 72.122323], [-11.345499, 73.307656], [-13.038832, 74.154323], [-14.901499, 74.746989], [-16.764163, 75.000989], [-18.711497, 74.746989], [-20.574163, 74.154323], [-22.352162, 73.138323], [-23.876162, 71.952989], [-25.146161, 70.428989], [-26.162161, 68.735656], [-26.839494, 66.872992], [-27.178161, 64.925659], [-27.178161, 62.978325], [-26.839494, 61.030992], [-26.162161, 59.168325], [-25.146161, 57.474995], [-23.876162, 55.950995], [-22.352162, 54.680995], [-20.574163, 53.749661], [-18.711497, 53.072328], [-16.764163, 52.818328], [-14.901499, 53.072328], [-13.123499, 53.664995], [-11.430166, 54.511661], [-9.906166, 55.696995], [-8.636166, 57.051661], [-7.620166, 58.660325], [-6.688833, 61.030991]]; +engrave_1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]]; + +engrave_a1515_points = [[-6.260307, 89.408839], [-6.313426, 90.501432], [-6.469545, 91.564872], [-6.723806, 92.594016], [-7.071350, 93.583724], [-7.507320, 94.528853], [-8.026859, 95.424260], [-8.625109, 96.264804], [-9.297212, 97.045343], [-10.038309, 97.760734], [-10.843544, 98.405835], [-11.708058, 98.975505], [-12.626994, 99.464602], [-13.595494, 99.867983], [-14.608700, 100.180506], [-15.661754, 100.397029], [-16.749798, 100.512411], [-17.837837, 100.397029], [-18.890885, 100.180506], [-19.904087, 99.867983], [-20.872582, 99.464602], [-21.791515, 98.975505], [-22.656026, 98.405835], [-23.461259, 97.760734], [-24.202354, 97.045343], [-24.874455, 96.264804], [-25.472704, 95.424260], [-25.992242, 94.528853], [-26.428212, 93.583724], [-26.775757, 92.594016], [-27.030017, 91.564872], [-27.186135, 90.501432], [-27.239254, 89.408839], [-27.186135, 88.316252], [-27.030017, 87.252817], [-26.775757, 86.223677], [-26.428212, 85.233974], [-25.992242, 84.288849], [-25.472704, 83.393444], [-24.874455, 82.552903], [-24.202354, 81.772366], [-23.461259, 81.056976], [-22.656026, 80.411876], [-21.791515, 79.842207], [-20.872582, 79.353111], [-19.904087, 78.949730], [-18.890885, 78.637207], [-17.837837, 78.420684], [-16.749798, 78.305303], [-15.908959, 78.385474], [-15.084836, 78.528300], [-14.279868, 78.732725], [-13.496490, 78.997691], [-12.737139, 79.322143], [-12.004252, 79.705023], [-11.300264, 80.145276], [-10.627613, 80.641844], [-9.988735, 81.193670], [-9.386067, 81.799699], [-8.822044, 82.458873], [-8.299105, 83.170137], [-7.819684, 83.932433], [-7.386218, 84.744705], [-7.001145, 85.605896], [-6.666900, 86.514950], [-6.463196, 87.458175], [-6.339005, 88.212845], [-6.277113, 88.842039], [-6.260307, 89.408839]]; +engrave_a1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68]]; + +engrave_a1517_points = [[-92.032879, -57.248593], [-91.186177, -56.909923], [-90.424213, -56.401923], [-89.746844, -55.724593], [-88.730844, -54.539263], [-87.460846, -53.692593], [-86.021513, -53.099923], [-84.497513, -52.930593], [-77.978217, -52.930593], [-77.216217, -53.099923], [-76.454182, -53.353923], [-75.861550, -53.946593], [-75.522849, -54.539263], [-75.268849, -55.301263], [-74.168182, -63.598593], [-75.268849, -71.895923], [-75.522849, -72.657923], [-75.861550, -73.335263], [-76.454182, -73.843263], [-77.216217, -74.181923], [-77.978217, -74.266623], [-84.497513, -74.266623], [-86.021513, -74.097293], [-87.460846, -73.589293], [-88.730844, -72.657963], [-89.746844, -71.557293], [-90.424213, -70.879963], [-91.186177, -70.287293], [-92.032879, -69.948623], [-93.048845, -69.863923], [-94.403546, -69.694593], [-95.673511, -69.186593], [-96.858844, -68.509263], [-97.874843, -67.493263], [-98.636879, -66.307933], [-99.060177, -65.037923], [-99.229510, -63.598593], [-99.060177, -62.243923], [-98.636879, -60.889253], [-97.874843, -59.788593], [-96.858844, -58.772593], [-95.673511, -58.010593], [-94.403546, -57.587253], [-93.048845, -57.417923]]; +engrave_a1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43]]; + +engrave_1542_points = [[-6.942606, 37.069950], [-6.942606, 38.932610], [-7.111939, 40.710610], [-7.535272, 42.488610], [-8.381974, 44.097280], [-9.397974, 45.621280], [-10.752640, 46.806610], [-12.276604, 47.822610], [-13.885271, 48.584610], [-15.663270, 48.923280], [-17.525936, 49.007980], [-19.303936, 48.838650], [-21.081970, 48.245990], [-22.605934, 47.399320], [-24.045267, 46.213990], [-25.230601, 44.859320], [-26.331302, 43.081320], [-27.093267, 41.133990], [-27.431969, 39.017319], [-27.431969, 36.900660], [-27.093267, 34.868660], [-26.331302, 32.921320], [-25.230601, 31.058660], [-24.129934, 29.788660], [-22.775268, 28.687990], [-21.251268, 27.841320], [-19.642602, 27.248660], [-17.949270, 26.909990], [-16.255937, 26.909990], [-14.477972, 27.248660], [-12.869306, 27.841320], [-11.345271, 28.687990], [-9.990640, 29.703990], [-8.889974, 31.058660], [-7.958606, 32.497990], [-7.365939, 34.106660], [-6.984957, 35.884660]]; +engrave_1542_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]]; + +engrave_1518_points = [[-74.760742, 96.590908], [-74.930075, 97.522248], [-75.353409, 98.368908], [-76.030741, 99.130908], [-76.877408, 99.554248], [-77.893407, 99.638948], [-95.165402, 99.638948], [-96.181402, 99.554248], [-97.028069, 99.130908], [-97.705402, 98.368908], [-98.128735, 97.522248], [-98.298068, 96.590908], [-98.298068, 81.181587], [-98.128735, 80.250247], [-97.705402, 79.403585], [-97.028069, 78.726245], [-96.181402, 78.302915], [-95.165402, 78.133585], [-77.893407, 78.133585], [-76.877408, 78.302915], [-76.030741, 78.726245], [-75.353409, 79.403585], [-74.930075, 80.250247], [-74.760742, 81.181587], [-74.760742, 87.827917]]; +engrave_1518_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]]; + +engrave_1543_points = [[-75.268862, -98.057793], [-75.438160, -98.819763], [-75.861528, -99.497093], [-76.454160, -100.089763], [-77.216195, -100.428433], [-77.978195, -100.513133], [-84.582193, -100.513133], [-86.021491, -100.343764], [-87.460859, -99.751094], [-88.730858, -98.904464], [-89.746822, -97.803793], [-90.424191, -97.041793], [-91.186191, -96.533793], [-92.032858, -96.195093], [-93.048859, -96.025794], [-94.403524, -95.941094], [-95.673524, -95.433093], [-96.858822, -94.671093], [-97.874821, -93.739763], [-98.636856, -92.554423], [-99.060189, -91.199764], [-99.229487, -89.845063], [-99.060189, -88.490424], [-98.636856, -87.135723], [-97.874821, -85.950423], [-96.858822, -85.019063], [-95.673524, -84.257093], [-94.403524, -83.749093], [-93.048859, -83.579763], [-92.032858, -83.495063], [-91.186191, -83.156433], [-90.424191, -82.648433], [-89.746822, -81.886393], [-88.730858, -80.785723], [-87.460859, -79.939063], [-86.021491, -79.346433], [-84.582193, -79.177063], [-77.978195, -79.177063], [-77.216195, -79.261763], [-76.454160, -79.600473], [-75.861528, -80.193103], [-75.438160, -80.870433], [-75.268862, -81.632473], [-74.633844, -87.559113], [-74.337494, -89.845113], [-74.464529, -90.649463]]; +engrave_1543_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]]; + +engrave_1517_points = [[-91.894354, -31.848593], [-91.047653, -31.509923], [-90.285689, -31.001923], [-89.608320, -30.324593], [-88.592322, -29.139263], [-87.322323, -28.292593], [-85.882989, -27.699923], [-84.358989, -27.530593], [-77.839693, -27.530593], [-77.077693, -27.699923], [-76.315659, -27.953923], [-75.723027, -28.546593], [-75.384325, -29.139263], [-75.130326, -29.901263], [-74.029660, -38.198593], [-75.130326, -46.495923], [-75.384325, -47.257923], [-75.723027, -47.935263], [-76.315659, -48.443263], [-77.077693, -48.781923], [-77.839693, -48.866623], [-84.358989, -48.866623], [-85.882989, -48.697293], [-87.322323, -48.189293], [-88.592322, -47.257953], [-89.608320, -46.157293], [-90.285689, -45.479953], [-91.047653, -44.887293], [-91.894354, -44.548623], [-92.910318, -44.463923], [-94.265021, -44.294593], [-95.534986, -43.786593], [-96.720319, -43.109263], [-97.736318, -42.093253], [-98.498354, -40.907923], [-98.921651, -39.637923], [-99.090985, -38.198593], [-98.921651, -36.843923], [-98.498354, -35.489263], [-97.736318, -34.388593], [-96.720319, -33.372593], [-95.534986, -32.610593], [-94.265021, -32.187263], [-92.910318, -32.017923]]; +engrave_1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43]]; + +engrave_1655_points = [[-74.227303, -6.166083], [-74.227303, -5.512183], [-74.242918, -5.203988], [-74.288746, -4.904660], [-74.464950, -4.338686], [-74.743728, -3.826420], [-75.112893, -3.380025], [-75.560260, -3.011660], [-76.073639, -2.733486], [-76.640846, -2.557663], [-76.940827, -2.511934], [-77.249693, -2.496353], [-94.597111, -2.496353], [-94.905979, -2.511934], [-95.205961, -2.557663], [-95.773169, -2.733486], [-96.286549, -3.011660], [-96.733914, -3.380025], [-97.103079, -3.826420], [-97.381855, -4.338686], [-97.558058, -4.904660], [-97.603886, -5.203988], [-97.619501, -5.512183], [-97.619501, -20.869583], [-97.603886, -21.177776], [-97.558058, -21.477098], [-97.381855, -22.043051], [-97.103079, -22.555286], [-96.733914, -23.001647], [-96.286549, -23.369978], [-95.773169, -23.648121], [-95.205961, -23.823922], [-94.905979, -23.869645], [-94.597111, -23.885223], [-77.249693, -23.885223], [-76.940827, -23.869645], [-76.640846, -23.823922], [-76.073639, -23.648121], [-75.560260, -23.369978], [-75.112893, -23.001647], [-74.743728, -22.555286], [-74.464950, -22.043051], [-74.288746, -21.477098], [-74.242918, -21.177776], [-74.227303, -20.869583], [-74.227303, -20.218283], [-74.227303, -14.743153]]; +engrave_1655_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46]]; + +engrave_1644_points = [[-74.401715, 5.046882], [-74.416837, 4.741916], [-74.461251, 4.445414], [-74.632252, 3.883666], [-74.903306, 3.373367], [-75.263003, 2.926247], [-75.699932, 2.554035], [-76.202683, 2.268461], [-76.759844, 2.081255], [-77.055263, 2.028206], [-77.360005, 2.004147], [-81.734321, 1.908097], [-86.109692, 1.876157], [-90.484892, 1.908130], [-94.859183, 2.004147], [-95.163929, 2.028206], [-95.459347, 2.081255], [-96.016496, 2.268461], [-96.519225, 2.554035], [-96.956127, 2.926247], [-97.315795, 3.373367], [-97.586823, 3.883666], [-97.757805, 4.445414], [-97.802213, 4.741916], [-97.817333, 5.046882], [-97.817333, 20.164639], [-97.802213, 20.469596], [-97.757805, 20.766086], [-97.586823, 21.327804], [-97.315795, 21.838063], [-96.956127, 22.285135], [-96.519225, 22.657292], [-96.016496, 22.942805], [-95.459347, 23.129947], [-95.163929, 23.182963], [-94.859183, 23.206989], [-94.859003, 23.206989], [-90.484780, 23.303099], [-86.109522, 23.335159], [-81.734300, 23.303125], [-77.360005, 23.206989], [-77.055263, 23.182966], [-76.759844, 23.129952], [-76.202683, 22.942813], [-75.699932, 22.657300], [-75.263003, 22.285142], [-74.903306, 21.838068], [-74.632252, 21.327807], [-74.461251, 20.766087], [-74.416837, 20.469596], [-74.401715, 20.164639], [-74.401715, 11.233489]]; +engrave_1644_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51]]; + +engrave_M3_points = [[63.139425, 81.246847], [63.124303, 80.941880], [63.079889, 80.645378], [62.908888, 80.083629], [62.637834, 79.573329], [62.278137, 79.126208], [61.841208, 78.753995], [61.338457, 78.468421], [60.781296, 78.281215], [60.485877, 78.228166], [60.181135, 78.204107], [55.806818, 78.108057], [51.431445, 78.076117], [47.056246, 78.108090], [42.681955, 78.204107], [42.377209, 78.228166], [42.081791, 78.281215], [41.524641, 78.468421], [41.021912, 78.753995], [40.585011, 79.126208], [40.225343, 79.573329], [39.954315, 80.083629], [39.783333, 80.645378], [39.738924, 80.941880], [39.723805, 81.246847], [39.723805, 96.364609], [39.738924, 96.669566], [39.783333, 96.966057], [39.954315, 97.527775], [40.225343, 98.038034], [40.585011, 98.485105], [41.021912, 98.857262], [41.524641, 99.142776], [42.081791, 99.329917], [42.377209, 99.382934], [42.681955, 99.406959], [42.682135, 99.406959], [47.056357, 99.503069], [51.431615, 99.535129], [55.806840, 99.503095], [60.181135, 99.406959], [60.485877, 99.382937], [60.781296, 99.329923], [61.338457, 99.142784], [61.841208, 98.857271], [62.278137, 98.485113], [62.637834, 98.038039], [62.908888, 97.527777], [63.079889, 96.966058], [63.124303, 96.669567], [63.139425, 96.364609], [63.139425, 87.433457]]; +engrave_M3_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51]]; + +engrave_1638_points = [[-74.760855, 71.624038], [-74.776967, 71.949729], [-74.824289, 72.266379], [-74.901301, 72.572422], [-75.006483, 72.866292], [-75.295280, 73.411252], [-75.678523, 73.888735], [-76.144053, 74.286216], [-76.679712, 74.591172], [-76.970040, 74.705038], [-77.273342, 74.791077], [-77.588097, 74.847722], [-77.912785, 74.873408], [-82.285354, 74.969920], [-86.658845, 75.002308], [-91.032229, 74.969920], [-95.404735, 74.873408], [-95.729455, 74.847730], [-96.044238, 74.791091], [-96.347564, 74.705057], [-96.637913, 74.591193], [-97.173604, 74.286238], [-97.639155, 73.888754], [-98.022411, 73.411265], [-98.311215, 72.866299], [-98.416399, 72.572426], [-98.493412, 72.266381], [-98.540734, 71.949730], [-98.556845, 71.624038], [-98.556845, 56.487798], [-98.540734, 56.162129], [-98.493412, 55.845496], [-98.416399, 55.539466], [-98.311215, 55.245604], [-98.022411, 54.700652], [-97.639155, 54.223170], [-97.173604, 53.825690], [-96.637913, 53.520742], [-96.347564, 53.406884], [-96.044238, 53.320858], [-95.729455, 53.264230], [-95.404735, 53.238568], [-91.032229, 53.142213], [-86.658845, 53.110058], [-82.285372, 53.142209], [-77.912925, 53.238568], [-77.912785, 53.238568], [-77.588097, 53.264229], [-77.273342, 53.320855], [-76.970040, 53.406880], [-76.679712, 53.520738], [-76.144053, 53.825685], [-75.678523, 54.223166], [-75.295280, 54.700649], [-75.006483, 55.245603], [-74.901301, 55.539465], [-74.824289, 55.845496], [-74.776967, 56.162129], [-74.760855, 56.487798], [-74.760855, 62.035788]]; +engrave_1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]]; + +engrave_a1638_points = [[-74.754755, 46.187470], [-74.770869, 46.512144], [-74.818197, 46.827813], [-74.895219, 47.132914], [-75.000417, 47.425884], [-75.289256, 47.969188], [-75.672557, 48.445230], [-76.138161, 48.841514], [-76.673911, 49.145547], [-76.964291, 49.259065], [-77.267649, 49.344834], [-77.582463, 49.401293], [-77.907215, 49.426880], [-82.280317, 49.522990], [-86.654475, 49.555050], [-91.028380, 49.523016], [-95.401385, 49.426880], [-95.726137, 49.401286], [-96.040952, 49.344823], [-96.344309, 49.259050], [-96.634689, 49.145530], [-97.170439, 48.841497], [-97.636044, 48.445215], [-98.019345, 47.969177], [-98.308184, 47.425879], [-98.413381, 47.132910], [-98.490404, 46.827811], [-98.537732, 46.512144], [-98.553845, 46.187470], [-98.553845, 31.096900], [-98.537732, 30.772218], [-98.490404, 30.456543], [-98.413381, 30.151438], [-98.308184, 29.858464], [-98.019345, 29.315156], [-97.636044, 28.839113], [-97.170439, 28.442831], [-96.634689, 28.138803], [-96.344309, 28.025290], [-96.040952, 27.939525], [-95.726137, 27.883071], [-95.401385, 27.857490], [-91.028358, 27.761470], [-86.654295, 27.729500], [-82.280294, 27.761473], [-77.907215, 27.857490], [-77.582463, 27.883066], [-77.267649, 27.939516], [-76.964291, 28.025278], [-76.673911, 28.138791], [-76.138161, 28.442818], [-75.672557, 28.839102], [-75.289256, 29.315148], [-75.000417, 29.858460], [-74.895219, 30.151435], [-74.818197, 30.456542], [-74.770869, 30.772217], [-74.754755, 31.096900], [-74.754755, 36.628110]]; +engrave_a1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58]]; + +rect54_points = [[97.324275, 91.680190], [99.737275, 91.680190], [99.737275, 84.822190], [97.324275, 84.822190]]; +rect54_paths = [[0, 1, 2, 3]]; + +//polygon(points=warding_1515_points, paths=warding_1515_paths); +//polygon(points=warding_1517_points, paths=warding_1517_paths); +//polygon(points=warding_1542_points, paths=warding_1542_paths); +//polygon(points=warding_1518_points, paths=warding_1518_paths); +//polygon(points=warding_1543_points, paths=warding_1543_paths); +//polygon(points=warding_1655_points, paths=warding_1655_paths); +//polygon(points=warding_1644_points, paths=warding_1644_paths); +//polygon(points=warding_1638_points, paths=warding_1638_paths); +//polygon(points=warding_M3_points, paths=warding_M3_paths); +//polygon(points=outline_1543_points, paths=outline_1543_paths); +//polygon(points=outline_1518_points, paths=outline_1518_paths); +//polygon(points=outline_a1517_points, paths=outline_a1517_paths); +//polygon(points=outline_a1515_points, paths=outline_a1515_paths); +//polygon(points=outline_1515_points, paths=outline_1515_paths); +//polygon(points=outline_1542_points, paths=outline_1542_paths); +//polygon(points=outline_1517_points, paths=outline_1517_paths); +//polygon(points=outline_1655_points, paths=outline_1655_paths); +//polygon(points=outline_1644_points, paths=outline_1644_paths); +//polygon(points=outline_M3_points, paths=outline_M3_paths); +//polygon(points=outline_1638_points, paths=outline_1638_paths); +//polygon(points=outline_a1638_points, paths=outline_a1638_paths); +//polygon(points=engrave_1515_points, paths=engrave_1515_paths); +//polygon(points=engrave_a1515_points, paths=engrave_a1515_paths); +//polygon(points=engrave_a1517_points, paths=engrave_a1517_paths); +//polygon(points=engrave_1542_points, paths=engrave_1542_paths); +//polygon(points=engrave_1518_points, paths=engrave_1518_paths); +//polygon(points=engrave_1543_points, paths=engrave_1543_paths); +//polygon(points=engrave_1517_points, paths=engrave_1517_paths); +//polygon(points=engrave_1655_points, paths=engrave_1655_paths); +//polygon(points=engrave_1644_points, paths=engrave_1644_paths); +//polygon(points=engrave_M3_points, paths=engrave_M3_paths); +//polygon(points=engrave_1638_points, paths=engrave_1638_paths); +//polygon(points=engrave_a1638_points, paths=engrave_a1638_paths); +//polygon(points=rect54_points, paths=rect54_paths); diff --git a/scad/schlage.gen.scad b/scad/gen/schlage.gen.scad similarity index 99% rename from scad/schlage.gen.scad rename to scad/gen/schlage.gen.scad index bdd23ad..88360c2 100644 --- a/scad/schlage.gen.scad +++ b/scad/gen/schlage.gen.scad @@ -1,6 +1,6 @@ // Automatically generated using the Inkscape to OpenSCAD Converter // Variable names are of the form _points and -// _paths. As a result, you can associate a polygon in this +// _paths. As a result, you can associate a polygon in this // OpenSCAD program with the corresponding SVG element in the Inkscape document // by looking for the XML element with the attribute id="inkscape-path-id". diff --git a/scad/keygen.scad b/scad/keygen.scad index f07c08f..f0a2cd4 100644 --- a/scad/keygen.scad +++ b/scad/keygen.scad @@ -131,7 +131,7 @@ module key_blank(outline_points, } } -function key_code_to_heights(code, depth_table) = [for(i=key_enum(code)) depth_table[search(code[i], "0123456789")[0]]]; +function key_code_to_heights(code, depth_table) = [for(i=key_enum(code)) depth_table[search(code[i], "0123456789x")[0]]]; module key_bitting_cutter(flat, angle, tool_height) { polygon([[-0.5 * flat, 0], @@ -165,7 +165,7 @@ module m3_slider(slider_depth) { // Creates a cuboid cut in the finished Medeco M3 key blank for the M3 slider element difference() { translate([-1.4445,-slider_depth-30,0]) - cube([1,30,2.16]); //measurements of slider dimensions taken from a couple M3 keys. M3 slider depths appear to be in 0.1" increments (from 0.3" - 0.7" possibly?) + cube([1,30,3]); //measurements of slider dimensions taken from a couple M3 keys. M3 slider depths appear to be in 0.1" increments (from 0.3" - 0.7" possibly?) } } diff --git a/scad/kwikset.gen.scad b/scad/kwikset.gen.scad deleted file mode 100644 index 26ff01f..0000000 --- a/scad/kwikset.gen.scad +++ /dev/null @@ -1,18 +0,0 @@ -// Automatically generated using the Inkscape to OpenSCAD Converter -// Variable names are of the form _points and -// _paths. As a result, you can associate a polygon in this -// OpenSCAD program with the corresponding SVG element in the Inkscape document -// by looking for the XML element with the attribute id="inkscape-path-id". - -outline_points = [[-16.682359, -40.298727], [-21.483139, -40.939357], [-26.281970, -42.859276], [-30.442129, -46.058496], [-33.322990, -49.900286], [-46.123770, -71.660056], [-48.043689, -76.458887], [-48.682359, -81.259666], [-48.043689, -86.378806], [-46.123770, -90.859277], [-33.322990, -112.619036], [-30.442129, -116.779197], [-26.281970, -119.660056], [-21.483139, -121.900286], [-16.682359, -122.538967], [13.077401, -122.538967], [18.516861, -121.579977], [23.956311, -119.339747], [28.116470, -115.499897], [31.317640, -110.699117], [33.237560, -107.820217], [36.116470, -105.900287], [39.637950, -105.259667], [41.557870, -105.259667], [42.516860, -104.939357], [43.157480, -103.660057], [43.157480, -97.579977], [139.796150, -97.579977], [147.157480, -90.218647], [148.436780, -88.298727], [149.077400, -85.740137], [148.436780, -83.499897], [147.157480, -81.579977], [132.837170, -65.419467], [44.116470, -65.419827], [44.116470, -58.859277], [43.477790, -57.900287], [42.516861, -57.259667], [39.637951, -57.259667], [36.116471, -56.619037], [33.237561, -54.699117], [31.317641, -52.138567], [28.116471, -47.339747], [23.956311, -43.499897], [18.516861, -40.939357], [13.077401, -40.298727], [-15.403059, -49.898337], [-4.522209, -49.898337], [-3.563219, -50.218647], [-3.242909, -51.499897], [-3.242909, -72.939357], [-3.563219, -74.218647], [-4.842519, -74.538967], [-5.963609, -74.060447], [-24.043689, -55.660056], [-24.682359, -54.699117], [-24.043689, -53.740137], [-21.483139, -51.499897], [-18.602279, -50.218647], [-30.442129, -64.939357], [-29.162829, -65.579977], [-14.442129, -80.298727], [-13.803460, -81.259667], [-14.442129, -82.538967], [-29.162829, -97.259667], [-30.442129, -97.579977], [-31.403059, -96.939357], [-37.162829, -87.339747], [-38.442129, -83.499897], [-38.442129, -79.339747], [-37.162829, -75.499897], [-31.403059, -65.898337], [-4.842520, -87.980367], [-3.563220, -88.619037], [-3.242909, -89.579977], [-3.242909, -111.339747], [-3.563220, -112.298727], [-4.522210, -112.939357], [-15.403060, -112.939357], [-18.602280, -112.298727], [-21.483140, -111.019427], [-24.043690, -109.099507], [-24.682360, -107.820217], [-24.043690, -106.859277], [-5.963610, -88.779197]]; -outline_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], [58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46], [71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59], [84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72]]; - -warding_kw1_points = [[-91.133659, 110.770103], [-91.133659, 107.891433], [-89.133657, 107.891418], [-89.133657, 108.568733], [-90.093664, 108.653433], [-90.093664, 110.092748], [-89.133657, 110.092748], [-89.133657, 111.870748], [-89.693658, 112.632733], [-89.693658, 116.400553], [-90.973663, 116.400553], [-90.973663, 112.463403], [-90.493662, 112.463403], [-90.093664, 111.870733], [-90.093664, 111.108733], [-90.653659, 111.108733], [-91.133660, 110.770063]]; -warding_kw1_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]]; - -engrave_points = [[-125.793622, 118.058646], [-126.556072, 118.051646], [-127.487402, 118.305646], [-128.334071, 118.898306], [-128.842072, 119.744976], [-129.604072, 120.845646], [-130.704742, 121.776966], [-131.890072, 122.369636], [-133.244742, 122.538966], [-141.118737, 122.538966], [-142.304070, 122.369636], [-143.404737, 121.946306], [-144.420737, 121.184306], [-145.098070, 120.252966], [-148.400068, 114.495636], [-148.908068, 113.394976], [-149.077401, 112.209636], [-148.908068, 111.024306], [-148.442401, 109.923637], [-145.098070, 104.166307], [-144.420737, 103.150306], [-143.404737, 102.472977], [-142.304070, 101.964977], [-141.118737, 101.795647], [-133.244742, 101.795647], [-131.890072, 102.049647], [-130.704742, 102.557647], [-129.604072, 103.488977], [-128.842072, 104.674307], [-128.334071, 105.436307], [-127.656742, 106.028976], [-126.725402, 106.282977], [-125.793622, 106.282977]]; -engrave_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]]; - -//polygon(points=outline_points, paths=outline_paths); -//polygon(points=warding_kw1_points, paths=warding_kw1_paths); -//polygon(points=engrave_points, paths=engrave_paths); diff --git a/scad/kwikset.scad b/scad/kwikset.scad index f618a2f..aaefee3 100644 --- a/scad/kwikset.scad +++ b/scad/kwikset.scad @@ -1,60 +1,61 @@ -use -include - -module kwikset(bitting="", - outline_name="KW1", - warding_name="KW1") { - - name = "Kwikset"; - - /* - Bitting is specified from bow to tip, 1-7, with 1 being the shallowest cut and 7 being the deepest. - Example: 25363 - */ - - outlines_k = ["KW1"]; - outlines_v = [[outline_points, outline_paths, - [-outline_points[34][0], -outline_points[26][1]], - engrave_points, - engrave_paths]]; - wardings_k = ["KW1"]; - wardings_v = [warding_kw1_points]; - - outline_param = key_lkup(outlines_k, outlines_v, outline_name); - outline_points = outline_param[0]; - outline_paths = outline_param[1]; - offset = outline_param[2]; - engrave_points = outline_param[3]; - engrave_paths = outline_param[4]; - - warding_points = key_lkup(wardings_k, wardings_v, warding_name); - - cut_locations = [for(i=[.247, .397, .547, .697, .847]) i*25.4]; - // Kwikset starts with 1?? - depth_table = [for(i=[0.329+0.023:-0.023:0.190]) i*25.4]; - - heights = key_code_to_heights(bitting, depth_table); - - difference() { - if($children == 0) { - key_blank(outline_points, - warding_points, - outline_paths=outline_paths, - engrave_right_points=engrave_points, - engrave_right_paths=engrave_paths, - engrave_left_points=engrave_points, - engrave_left_paths=engrave_paths, - offset=offset, - plug_diameter=12.7); - } else { - children(0); - } - key_bitting(heights, cut_locations, 2.1336, 90); - } -} - -// Defaults -bitting=""; -outline="KW1"; -warding="KW1"; -kwikset(bitting, outline, warding); + +use +include + +module kwikset(bitting="", + outline_name="KW1", + warding_name="KW1") { + + name = "Kwikset"; + + /* + Bitting is specified from bow to tip, 1-7, with 1 being the shallowest cut and 7 being the deepest. + Example: 25363 + */ + + outlines_k = ["KW1"]; + outlines_v = [[outline_points, outline_paths, + [-outline_points[34][0], -outline_points[26][1]], + engrave_points, + engrave_paths]]; + wardings_k = ["KW1"]; + wardings_v = [warding_kw1_points]; + + outline_param = key_lkup(outlines_k, outlines_v, outline_name); + outline_points = outline_param[0]; + outline_paths = outline_param[1]; + offset = outline_param[2]; + engrave_points = outline_param[3]; + engrave_paths = outline_param[4]; + + warding_points = key_lkup(wardings_k, wardings_v, warding_name); + + cut_locations = [for(i=[.247, .397, .547, .697, .847]) i*25.4]; + // Kwikset starts with 1?? + depth_table = [for(i=[0.329+0.023:-0.023:0.190]) i*25.4]; + + heights = key_code_to_heights(bitting, depth_table); + + difference() { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + engrave_right_points=engrave_points, + engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations, 2.1336, 90); + } +} + +// Defaults +bitting=""; +outline="KW1"; +warding="KW1"; +kwikset(bitting, outline, warding); \ No newline at end of file diff --git a/scad/lockwood.scad b/scad/lockwood.scad new file mode 100644 index 0000000..d032223 --- /dev/null +++ b/scad/lockwood.scad @@ -0,0 +1,65 @@ +use +include + +module lockwood(bitting="", + outline_name="LW5", + warding_name="LW5") { + + name = "Lockwood"; + + /* + Bitting is specified from bow to tip, 0-x, with 0 being the shallowest cut and x (10 or sometimes referenced as "A") being the deepest. + Example: 0258x6 + LW4 outline designates 5-pin variant and LW5 the 6-pin. + */ + + outlines_k = ["LW4", + "LW5"]; + outlines_v = [[outline_LW4_points, outline_LW4_paths, + [-outline_LW4_points[6][0], -outline_LW4_points[4][1]], + engrave_LW4_points, + engrave_LW4_paths], + [outline_LW5_points, outline_LW5_paths, + [-outline_LW5_points[6][0], -outline_LW5_points[4][1]], + engrave_LW5_points, + engrave_LW5_paths]]; + wardings_k = ["LW5"]; + wardings_v = [warding_LW5_points]; + + outline_param = key_lkup(outlines_k, outlines_v, outline_name); + outline_points = outline_param[0]; + outline_paths = outline_param[1]; + offset = outline_param[2]; + engrave_points = outline_param[3]; + engrave_paths = outline_param[4]; + + warding_points = key_lkup(wardings_k, wardings_v, warding_name); + + cut_locations = [for(i=[6.1, 10.07, 14.04, 18.01, 21.98, 25.95]) i]; + depth_table = [for(i=[8.56:-0.38:4.75]) i]; + + heights = key_code_to_heights(bitting, depth_table); + + difference() { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + engrave_right_points=engrave_points, + engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations, 1.2); + } +} + +// Defaults +bitting=""; +outline="LW4"; +warding="LW5"; +lockwood(bitting, outline, warding); diff --git a/scad/master.scad b/scad/master.scad index e53f9c9..8e02507 100644 --- a/scad/master.scad +++ b/scad/master.scad @@ -1,61 +1,61 @@ -use -include - -module kwikset(bitting="", - outline_name="K1", - warding_name="K1") { - - name = "Master"; - - /* - Bitting is specified from bow to tip, 0-7, with 0 being the shallowest cut and 7 being the deepest. - Example: 5437 - */ - - outlines_k = ["K1"]; - outlines_v = [[outline_k1_points, outline_k1_paths, - [-outline_k1_points[61][0], -outline_k1_points[40][1]], - engrave_k1_points, - engrave_k1_paths]]; - wardings_k = ["K1", - "K2"]; - wardings_v = [warding_k1_points, - warding_k2_points]; - - outline_param = key_lkup(outlines_k, outlines_v, outline_name); - outline_points = outline_param[0]; - outline_paths = outline_param[1]; - offset = outline_param[2]; - engrave_points = outline_param[3]; - engrave_paths = outline_param[4]; - - warding_points = key_lkup(wardings_k, wardings_v, warding_name); - - cut_locations = [for(i=[.187:.125:.563]) i*25.4]; - depth_table = [for(i=[0.2720, 0.2565, 0.2410, 0.2255, 0.2100, 0.1945, 0.1790, 0.1635]) i*25.4]; - - heights = key_code_to_heights(bitting, depth_table); - - difference() { - if($children == 0) { - key_blank(outline_points, - warding_points, - outline_paths=outline_paths, - engrave_right_points=engrave_points, - engrave_right_paths=engrave_paths, - engrave_left_points=engrave_points, - engrave_left_paths=engrave_paths, - offset=offset, - plug_diameter=12.7); - } else { - children(0); - } - key_bitting(heights, cut_locations, 1.27, cutter_height=3); - } -} - -// Defaults -bitting=""; -outline="K1"; -warding="K1"; -kwikset(bitting, outline, warding); +use +include + +module kwikset(bitting="", + outline_name="K1", + warding_name="K1") { + + name = "Master"; + + /* + Bitting is specified from bow to tip, 0-7, with 0 being the shallowest cut and 7 being the deepest. + Example: 5437 + */ + + outlines_k = ["K1"]; + outlines_v = [[outline_k1_points, outline_k1_paths, + [-outline_k1_points[61][0], -outline_k1_points[40][1]], + engrave_k1_points, + engrave_k1_paths]]; + wardings_k = ["K1", + "K2"]; + wardings_v = [warding_k1_points, + warding_k2_points]; + + outline_param = key_lkup(outlines_k, outlines_v, outline_name); + outline_points = outline_param[0]; + outline_paths = outline_param[1]; + offset = outline_param[2]; + engrave_points = outline_param[3]; + engrave_paths = outline_param[4]; + + warding_points = key_lkup(wardings_k, wardings_v, warding_name); + + cut_locations = [for(i=[.187:.125:.563]) i*25.4]; + depth_table = [for(i=[0.2720, 0.2565, 0.2410, 0.2255, 0.2100, 0.1945, 0.1790, 0.1635]) i*25.4]; + + heights = key_code_to_heights(bitting, depth_table); + + difference() { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + engrave_right_points=engrave_points, + engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations, 1.27, cutter_height=3); + } +} + +// Defaults +bitting=""; +outline="K1"; +warding="K1"; +kwikset(bitting, outline, warding); \ No newline at end of file diff --git a/scad/medeco.gen.scad b/scad/medeco.gen.scad deleted file mode 100644 index 46b183b..0000000 --- a/scad/medeco.gen.scad +++ /dev/null @@ -1,138 +0,0 @@ -// Automatically generated using the Inkscape to OpenSCAD Converter -// Variable names are of the form _points and -// _paths. As a result, you can associate a polygon in this -// OpenSCAD program with the corresponding SVG element in the Inkscape document -// by looking for the XML element with the attribute id="inkscape-path-id". - -outline_1543_points = [[-86.068899, 49.168011], [-87.677587, 48.998511], [-89.201524, 48.405791], [-90.556480, 47.474581], [-91.657188, 46.204371], [-92.418899, 45.442661], [-93.434857, 44.934681], [-94.535565, 44.765181], [-95.974754, 44.511451], [-97.414459, 44.087701], [-98.684150, 43.241241], [-99.700108, 42.225281], [-100.547085, 40.870851], [-101.055064, 39.515891], [-101.224046, 37.991951], [-101.055064, 36.468011], [-100.547085, 35.113061], [-99.700108, 33.843371], [-98.684150, 32.742661], [-97.414459, 31.895681], [-95.974754, 31.472451], [-94.535565, 31.303471], [-93.434857, 31.049221], [-92.418899, 30.541241], [-91.657188, 29.779531], [-90.556480, 28.509331], [-89.201524, 27.578121], [-87.677587, 26.985391], [-86.068899, 26.815891], [-79.465167, 26.815891], [-78.533442, 26.985391], [-77.686982, 27.323871], [-77.009505, 28.001351], [-76.501524, 28.763061], [-76.247794, 29.694781], [-75.993545, 31.980431], [-75.739815, 32.657911], [-75.062336, 33.081141], [-74.300109, 33.165841], [-73.623149, 32.742611], [-73.115168, 32.234631], [-72.522440, 31.895631], [-71.844961, 31.811431], [-71.252234, 32.065161], [-70.829004, 32.573141], [-70.659506, 33.250621], [-70.659506, 34.181831], [-70.659506, 34.605061], [-70.659506, 34.774561], [-70.405773, 34.859261], [-44.666776, 34.859261], [-44.497795, 34.944061], [-44.328295, 35.028761], [-43.566067, 35.959971], [-43.227588, 36.552701], [-43.058088, 37.145431], [-43.227588, 37.737641], [-43.566067, 38.245621], [-46.021731, 41.124521], [-46.275464, 41.209221], [-70.405773, 41.209221], [-70.659506, 41.209221], [-70.659506, 41.462951], [-70.659506, 41.717201], [-70.659506, 42.733151], [-70.829004, 43.410631], [-71.252234, 43.918611], [-71.844961, 44.172341], [-72.522440, 44.087641], [-73.115168, 43.749161], [-73.623149, 43.241181], [-74.300109, 42.817951], [-75.062336, 42.902651], [-75.739815, 43.325881], [-75.993545, 44.003361], [-76.247794, 46.289011], [-76.501524, 47.220741], [-77.009505, 47.982451], [-77.686982, 48.659921], [-78.533442, 48.998401], [-79.465167, 49.167901], [-94.958795, 41.209331], [-93.942837, 41.039831], [-93.096377, 40.531851], [-92.418899, 39.854371], [-91.910920, 39.007911], [-91.741421, 37.991951], [-91.910920, 36.975991], [-92.418899, 36.129011], [-93.096377, 35.452051], [-93.942837, 34.944081], [-94.958795, 34.859281], [-95.974754, 34.944081], [-96.821731, 35.452051], [-97.498692, 36.129011], [-98.007188, 36.975991], [-98.091418, 37.991951], [-98.007188, 39.007911], [-97.498692, 39.854371], [-96.821731, 40.531851], [-95.974754, 41.039831]]; -outline_1543_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80], [100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81]]; - -outline_1518_points = [[-95.716882, 22.627539], [-96.902340, 22.458039], [-97.833549, 21.950059], [-98.680009, 21.188349], [-99.187988, 20.172389], [-99.357487, 19.071679], [-99.357487, 3.662289], [-99.187988, 2.561579], [-98.680009, 1.545619], [-97.833549, 0.783390], [-96.902340, 0.275410], [-95.716882, 0.106430], [-78.445070, 0.106430], [-77.259612, 0.275410], [-76.328403, 0.783390], [-75.481428, 1.545619], [-74.973449, 2.561579], [-74.803949, 3.662289], [-74.803949, 3.831779], [-74.634967, 4.508749], [-74.126989, 5.016729], [-73.449510, 5.186219], [-70.994362, 5.186219], [-70.655364, 5.355719], [-70.486383, 5.778949], [-70.486383, 6.625409], [-70.486383, 7.048639], [-70.401633, 7.218139], [-70.232136, 7.302839], [-44.493654, 7.302839], [-44.239406, 7.387539], [-43.308197, 8.403499], [-42.969715, 8.996229], [-42.884965, 9.588959], [-42.969715, 10.181679], [-43.308197, 10.773899], [-45.763345, 13.652789], [-46.017591, 13.737489], [-69.470425, 13.737489], [-69.639407, 13.822189], [-69.724157, 13.991169], [-69.724157, 14.160669], [-69.724157, 15.007129], [-69.893657, 15.769359], [-70.401636, 16.277339], [-71.078596, 16.446839], [-73.449512, 16.446839], [-74.126991, 16.615819], [-74.634969, 17.123799], [-74.803951, 17.801269], [-74.803951, 19.071479], [-74.973451, 20.172189], [-75.481430, 21.188149], [-76.328405, 21.949859], [-77.259614, 22.457839], [-78.445072, 22.627339], [-94.192944, 14.160869], [-93.261735, 13.991369], [-92.499507, 13.652889], [-91.906780, 12.975409], [-91.483550, 12.213699], [-91.398800, 11.366729], [-91.483550, 10.520269], [-91.906780, 9.758039], [-92.499507, 9.165309], [-93.261735, 8.742079], [-94.192944, 8.657379], [-95.039404, 8.742079], [-95.801632, 9.165309], [-96.394360, 9.758039], [-96.817590, 10.520269], [-96.902340, 11.366729], [-96.817590, 12.213699], [-96.394360, 12.975409], [-95.801632, 13.652889], [-95.039404, 13.991369]]; -outline_1518_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], [75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56]]; - -outline_a1517_points = [[-85.694069, 100.058246], [-87.387506, 99.804516], [-88.911445, 99.211785], [-90.266399, 98.280060], [-91.367108, 97.095119], [-92.128818, 96.248142], [-93.144777, 95.740164], [-94.245485, 95.571182], [-95.684674, 95.401682], [-97.124379, 94.893703], [-98.394069, 94.131476], [-99.410028, 93.030767], [-100.257005, 91.761079], [-100.764984, 90.321373], [-100.933966, 88.882185], [-100.764984, 87.358246], [-100.257005, 85.919053], [-99.410028, 84.648853], [-98.394069, 83.632893], [-97.124379, 82.786433], [-95.684674, 82.278453], [-94.245485, 82.108953], [-93.144777, 81.939453], [-92.128818, 81.431473], [-91.367108, 80.669763], [-90.266399, 79.399553], [-88.911445, 78.468353], [-87.387506, 77.875623], [-85.694069, 77.706123], [-79.175087, 77.706123], [-78.243362, 77.790823], [-77.396902, 78.214053], [-76.719423, 78.806783], [-76.211444, 79.569013], [-75.957714, 80.500213], [-75.703465, 82.447383], [-75.364984, 83.124863], [-74.687506, 83.548093], [-73.925797, 83.548093], [-73.248318, 83.124863], [-72.825088, 82.701633], [-72.317109, 82.278403], [-71.639630, 82.193703], [-71.046903, 82.447433], [-70.538924, 82.955413], [-70.369424, 83.632893], [-70.369424, 84.648853], [-70.369424, 84.818353], [-70.115694, 84.903053], [-38.873673, 84.903053], [-38.704173, 84.987753], [-37.688215, 86.087943], [-37.349733, 86.595918], [-37.180236, 87.188648], [-37.349733, 87.866124], [-37.688215, 88.458855], [-41.328821, 92.522688], [-41.583067, 92.607438], [-68.507006, 92.607438], [-68.591756, 92.607438], [-68.930237, 92.437940], [-69.014987, 92.353710], [-70.115696, 92.353710], [-70.369426, 92.437940], [-70.369426, 92.607437], [-70.369426, 94.131376], [-70.538926, 94.808855], [-71.046905, 95.316833], [-71.639632, 95.486331], [-72.317111, 95.401581], [-72.867466, 95.020727], [-73.248320, 94.554605], [-73.925799, 94.131375], [-74.687507, 94.131375], [-75.364985, 94.554605], [-75.703466, 95.316832], [-75.957715, 97.263999], [-76.211445, 98.110978], [-76.719424, 98.872687], [-77.396903, 99.550166], [-78.243363, 99.888647], [-79.175088, 100.058145], [-94.668715, 91.930060], [-93.737506, 91.845830], [-92.806296, 91.337851], [-92.128818, 90.660372], [-91.705588, 89.813396], [-91.536089, 88.882187], [-91.705588, 87.866226], [-92.128818, 87.019766], [-92.806296, 86.342290], [-93.737506, 85.919063], [-94.668715, 85.749563], [-95.600441, 85.919063], [-96.531650, 86.342290], [-97.208612, 87.019766], [-97.632358, 87.866226], [-97.801340, 88.882187], [-97.632358, 89.813396], [-97.208612, 90.660372], [-96.531650, 91.337851], [-95.600441, 91.845830]]; -outline_a1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81], [101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82]]; - -outline_a1515_points = [[-28.576710, 88.630232], [-28.520968, 87.485728], [-28.357153, 86.371869], [-28.090375, 85.294052], [-27.725749, 84.257674], [-27.268385, 83.268133], [-26.723398, 82.330826], [-26.095898, 81.451151], [-25.390999, 80.634503], [-24.613813, 79.886282], [-23.769453, 79.211883], [-22.863032, 78.616705], [-21.899660, 78.106145], [-20.884452, 77.685599], [-19.822520, 77.360465], [-18.718975, 77.136140], [-17.578932, 77.018022], [-16.821442, 77.084236], [-16.075572, 77.198679], [-15.343271, 77.360108], [-14.626483, 77.567281], [-13.927158, 77.818956], [-13.247240, 78.113889], [-12.588678, 78.450837], [-11.953419, 78.828560], [-11.343408, 79.245813], [-10.760594, 79.701354], [-10.206923, 80.193941], [-9.684342, 80.722331], [-9.194799, 81.285281], [-8.740239, 81.881549], [-8.322611, 82.509892], [-7.943861, 83.169068], [-7.818446, 83.370195], [-7.668915, 83.549614], [-7.497992, 83.705430], [-7.308401, 83.835746], [-7.102867, 83.938668], [-6.884115, 84.012298], [-6.654869, 84.054742], [-6.417856, 84.064103], [-5.230851, 84.043443], [-5.233451, 82.379460], [-5.194854, 82.198461], [-5.086394, 82.042544], [-4.924468, 81.928090], [-4.725473, 81.871482], [-2.947287, 81.871482], [-2.750988, 81.928089], [-2.589970, 82.042543], [-2.480615, 82.198461], [-2.439306, 82.379460], [-2.437206, 84.042965], [28.974316, 84.044065], [30.387666, 85.493632], [30.572183, 85.740450], [30.711419, 86.016111], [30.799366, 86.313204], [30.830016, 86.624313], [30.803301, 86.916208], [30.727641, 87.195460], [30.609764, 87.454756], [30.456396, 87.686782], [26.603886, 91.748020], [-2.436705, 91.748020], [-2.439305, 93.194359], [-2.468498, 93.477899], [-2.550542, 93.741628], [-2.679829, 93.979999], [-2.850754, 94.187465], [-3.057710, 94.358482], [-3.295092, 94.487504], [-3.557292, 94.568983], [-3.838705, 94.597376], [-4.089617, 94.574233], [-4.328693, 94.504786], [-4.548472, 94.389004], [-4.741492, 94.226856], [-5.501181, 93.556095], [-5.736745, 93.408440], [-5.991623, 93.296459], [-6.260954, 93.225412], [-6.539877, 93.200561], [-6.959670, 93.258506], [-7.341596, 93.424242], [-7.665664, 93.685618], [-7.911886, 94.030485], [-8.289093, 94.695761], [-8.705791, 95.330030], [-9.160003, 95.932022], [-9.649750, 96.500467], [-10.173058, 97.034092], [-10.727948, 97.531628], [-11.312445, 97.991804], [-11.924570, 98.413349], [-12.562348, 98.794992], [-13.223801, 99.135463], [-13.906952, 99.433491], [-14.609825, 99.687805], [-15.330443, 99.897135], [-16.066828, 100.060209], [-16.817005, 100.175758], [-17.578996, 100.242510], [-18.719036, 100.124398], [-19.822579, 99.900078], [-20.884509, 99.574949], [-21.899717, 99.154406], [-22.863087, 98.643849], [-23.769509, 98.048672], [-24.613870, 97.374275], [-25.391056, 96.626054], [-26.095956, 95.809406], [-26.723456, 94.929729], [-27.268445, 93.992420], [-27.725809, 93.002875], [-28.090437, 91.966494], [-28.357215, 90.888672], [-28.521031, 89.774807], [-28.576773, 88.630296], [-25.945862, 88.657622], [-25.928149, 89.007947], [-25.876162, 89.348195], [-25.791628, 89.676639], [-25.676277, 89.991550], [-25.531834, 90.291200], [-25.360029, 90.573861], [-25.162589, 90.837805], [-24.941241, 91.081302], [-24.697714, 91.302626], [-24.433735, 91.500047], [-24.151032, 91.671837], [-23.851333, 91.816268], [-23.536365, 91.931612], [-23.207857, 92.016140], [-22.867537, 92.068125], [-22.517131, 92.085837], [-22.166719, 92.068125], [-21.826394, 92.016140], [-21.497883, 91.931612], [-21.182914, 91.816268], [-20.883215, 91.671837], [-20.600512, 91.500047], [-20.336534, 91.302626], [-20.093008, 91.081302], [-19.871662, 90.837805], [-19.674224, 90.573861], [-19.502421, 90.291200], [-19.357981, 89.991550], [-19.242631, 89.676639], [-19.158099, 89.348195], [-19.106113, 89.007947], [-19.088401, 88.657622], [-19.106113, 88.307304], [-19.158099, 87.967072], [-19.242631, 87.638653], [-19.357981, 87.323775], [-19.502421, 87.024164], [-19.674224, 86.741547], [-19.871662, 86.477650], [-20.093008, 86.234201], [-20.336534, 86.012925], [-20.600512, 85.815551], [-20.883215, 85.643804], [-21.182914, 85.499412], [-21.497883, 85.384101], [-21.826394, 85.299599], [-22.166719, 85.247631], [-22.517131, 85.229924], [-22.867537, 85.247631], [-23.207857, 85.299599], [-23.536365, 85.384101], [-23.851333, 85.499412], [-24.151032, 85.643804], [-24.433735, 85.815551], [-24.697714, 86.012925], [-24.941241, 86.234201], [-25.162589, 86.477650], [-25.360029, 86.741547], [-25.531834, 87.024164], [-25.676277, 87.323775], [-25.791628, 87.638653], [-25.876162, 87.967072], [-25.928149, 88.307304], [-25.945862, 88.657622]]; -outline_a1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118], [183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119]]; - -outline_1515_points = [[-27.857499, 62.148622], [-27.519019, 60.116707], [-26.756791, 58.169537], [-25.740833, 56.391352], [-24.385876, 54.782664], [-22.777706, 53.512458], [-20.914771, 52.496498], [-18.967603, 51.903770], [-16.935686, 51.565289], [-14.988000, 51.819537], [-13.040834, 52.496498], [-11.262646, 53.343476], [-9.738709, 54.613164], [-8.384270, 56.052871], [-7.283561, 57.745791], [-6.944564, 58.169537], [-6.352353, 58.508019], [-5.759626, 58.677516], [-4.574168, 58.677516], [-4.574168, 56.984080], [-4.404668, 56.645082], [-4.066189, 56.476101], [-2.288004, 56.476101], [-1.949524, 56.645082], [-1.780024, 56.984080], [-1.780024, 58.677191], [25.482396, 58.677191], [26.583106, 59.778164], [26.922106, 60.286143], [27.006306, 60.963103], [26.922106, 61.555833], [26.583106, 62.148561], [22.772996, 66.382191], [-1.780024, 66.382130], [-1.780024, 67.736852], [-2.034274, 68.498561], [-2.626999, 69.006542], [-3.388710, 69.176040], [-4.066189, 68.837042], [-4.827898, 68.160082], [-5.335877, 67.821085], [-5.928607, 67.736855], [-6.436586, 67.821085], [-6.944564, 68.160082], [-7.283561, 68.583312], [-8.299522, 70.276749], [-9.653961, 71.715937], [-11.262646, 72.986143], [-13.040834, 73.917352], [-14.903252, 74.510084], [-16.935686, 74.763814], [-18.967603, 74.510084], [-20.914771, 73.832603], [-22.777706, 72.816646], [-24.385876, 71.546437], [-25.740833, 70.022500], [-26.756791, 68.244831], [-27.519019, 66.297146], [-27.857499, 64.180479], [-25.317603, 63.164582], [-25.148104, 64.265289], [-24.640125, 65.196498], [-23.877897, 65.958725], [-22.946688, 66.466707], [-21.845980, 66.636204], [-20.830022, 66.466707], [-19.814063, 65.958725], [-19.052353, 65.196498], [-18.628606, 64.265289], [-18.459624, 63.164582], [-18.628606, 62.148622], [-19.052353, 61.132664], [-19.814063, 60.370437], [-20.830022, 59.947207], [-21.845980, 59.778225], [-22.946688, 59.947207], [-23.877897, 60.370437], [-24.640125, 61.132664], [-25.148104, 62.148622]]; -outline_1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], [78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59]]; - -warding_1515_points = [[32.691736, 62.400887], [32.437736, 62.824221], [32.353036, 63.078221], [32.353036, 63.501554], [32.437736, 63.924887], [32.522436, 64.094221], [32.607136, 64.517554], [32.607136, 65.533554], [32.353136, 66.210887], [30.575136, 66.210887], [30.913806, 65.364221], [30.998506, 65.025554], [30.913806, 64.602221], [30.575136, 63.924887], [30.575136, 63.078221], [30.829136, 62.316221], [31.252476, 61.808221], [31.421806, 61.300221], [31.167806, 60.876887], [30.829136, 60.622887], [30.659806, 60.284221], [30.575106, 59.945554], [30.575106, 58.675554], [30.829106, 58.336887], [32.691776, 58.336887], [32.861106, 58.506221], [32.861106, 58.760221], [32.776406, 59.014221], [32.607076, 59.183554], [32.014406, 59.268224], [31.845076, 59.437557], [31.760376, 59.691557], [31.845076, 59.945557], [32.607076, 60.622890], [32.776406, 60.961557], [32.861106, 61.300224], [32.861106, 61.723557]]; -warding_1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]]; - -engrave_1515_points = [[-6.436790, 62.825960], [-6.521460, 64.773328], [-6.944793, 66.635995], [-7.706793, 68.413992], [-8.722793, 69.937992], [-9.992793, 71.377326], [-11.516793, 72.562659], [-13.210126, 73.409326], [-15.072793, 74.001992], [-16.935457, 74.255992], [-18.882791, 74.001992], [-20.745457, 73.409326], [-22.523456, 72.393326], [-24.047456, 71.207992], [-25.317455, 69.683992], [-26.333455, 67.990659], [-27.010788, 66.127995], [-27.349455, 64.180662], [-27.349455, 62.233328], [-27.010788, 60.285995], [-26.333455, 58.423328], [-25.317455, 56.729998], [-24.047456, 55.205998], [-22.523456, 53.935998], [-20.745457, 53.004664], [-18.882791, 52.327331], [-16.935457, 52.073331], [-15.072793, 52.327331], [-13.294793, 52.919998], [-11.601460, 53.766664], [-10.077460, 54.951998], [-8.807460, 56.306664], [-7.791460, 57.915328], [-6.860127, 60.285995]]; -engrave_1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]]; - -engrave_a1515_points = [[-7.089582, 88.630164], [-7.142701, 89.722757], [-7.298819, 90.786197], [-7.553080, 91.815342], [-7.900624, 92.805050], [-8.336595, 93.750179], [-8.856134, 94.645586], [-9.454383, 95.486130], [-10.126486, 96.266669], [-10.867583, 96.982060], [-11.672818, 97.627161], [-12.537332, 98.196831], [-13.456268, 98.685928], [-14.424768, 99.089309], [-15.437974, 99.401832], [-16.491028, 99.618355], [-17.579073, 99.733737], [-18.667111, 99.618355], [-19.720160, 99.401832], [-20.733361, 99.089309], [-21.701857, 98.685928], [-22.620789, 98.196831], [-23.485300, 97.627161], [-24.290533, 96.982060], [-25.031629, 96.266669], [-25.703730, 95.486130], [-26.301978, 94.645586], [-26.821516, 93.750179], [-27.257487, 92.805050], [-27.605031, 91.815342], [-27.859291, 90.786197], [-28.015410, 89.722757], [-28.068529, 88.630164], [-28.015410, 87.537578], [-27.859291, 86.474143], [-27.605031, 85.445003], [-27.257487, 84.455299], [-26.821516, 83.510174], [-26.301978, 82.614770], [-25.703730, 81.774228], [-25.031629, 80.993692], [-24.290533, 80.278302], [-23.485300, 79.633202], [-22.620789, 79.063532], [-21.701857, 78.574436], [-20.733361, 78.171056], [-19.720160, 77.858533], [-18.667111, 77.642010], [-17.579073, 77.526628], [-16.738233, 77.606800], [-15.914111, 77.749626], [-15.109142, 77.954051], [-14.325764, 78.219017], [-13.566413, 78.543469], [-12.833526, 78.926349], [-12.129538, 79.366602], [-11.456888, 79.863169], [-10.818010, 80.414996], [-10.215341, 81.021025], [-9.651319, 81.680199], [-9.128379, 82.391463], [-8.648958, 83.153759], [-8.215493, 83.966030], [-7.830419, 84.827222], [-7.496175, 85.736275], [-7.292471, 86.679501], [-7.168279, 87.434171], [-7.106387, 88.063365], [-7.089582, 88.630164]]; -engrave_a1515_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68]]; - -warding_1517_points = [[-37.279615, 62.568508], [-37.279615, 62.145178], [-37.194985, 61.975848], [-36.263617, 61.044508], [-36.178947, 60.790508], [-36.263617, 60.536508], [-36.432950, 60.367178], [-37.025617, 60.197848], [-37.194985, 60.113148], [-37.279615, 59.859148], [-37.279615, 59.605148], [-37.110282, 59.435808], [-35.247615, 59.435808], [-34.993615, 59.689808], [-34.993615, 60.621148], [-35.078315, 60.959808], [-35.755614, 61.721808], [-35.924947, 62.060478], [-35.755614, 62.399148], [-35.416947, 62.907148], [-35.332317, 63.499808], [-35.586283, 64.007808], [-35.840283, 64.346478], [-35.840283, 64.939148], [-35.332317, 65.870478], [-35.332317, 67.140478], [-36.940983, 67.140478], [-36.940983, 65.447148], [-37.194983, 65.108478], [-37.110283, 64.431148], [-36.686984, 63.923148], [-36.602284, 63.499808], [-36.856284, 63.076478], [-37.110284, 62.822478]]; -warding_1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]]; - -engrave_a1517_points = [[-93.229572, 95.232269], [-92.382870, 95.570936], [-91.620906, 96.078936], [-90.943537, 96.756267], [-89.927537, 97.941600], [-88.657539, 98.788267], [-87.218206, 99.380933], [-85.694206, 99.550267], [-79.174910, 99.550267], [-78.412910, 99.380933], [-77.650875, 99.126933], [-77.058243, 98.534267], [-76.719542, 97.941600], [-76.465542, 97.179600], [-75.364875, 88.882269], [-76.465542, 80.584943], [-76.719542, 79.822943], [-77.058243, 79.145603], [-77.650875, 78.637603], [-78.412910, 78.298943], [-79.174910, 78.214243], [-85.694206, 78.214243], [-87.218206, 78.383573], [-88.657539, 78.891573], [-89.927537, 79.822903], [-90.943537, 80.923573], [-91.620906, 81.600903], [-92.382870, 82.193573], [-93.229572, 82.532243], [-94.245537, 82.616943], [-95.600238, 82.786273], [-96.870203, 83.294273], [-98.055536, 83.971603], [-99.071535, 84.987603], [-99.833571, 86.172933], [-100.256869, 87.442936], [-100.426202, 88.882269], [-100.256869, 90.236936], [-99.833571, 91.591603], [-99.071535, 92.692269], [-98.055536, 93.708269], [-96.870203, 94.470269], [-95.600238, 94.893603], [-94.245537, 95.062936]]; -engrave_a1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43]]; - -outline_1542_points = [[-16.791857, 49.129643], [-18.654791, 48.875913], [-20.432977, 48.283183], [-22.041665, 47.351973], [-23.565603, 46.166513], [-24.750544, 44.812073], [-25.766502, 43.118643], [-26.528730, 41.340453], [-26.951959, 39.478033], [-27.121458, 37.615093], [-26.951959, 35.667933], [-26.528730, 33.804993], [-25.766502, 32.027323], [-24.750544, 30.418643], [-23.565603, 29.063683], [-22.125897, 27.878743], [-20.601959, 26.947013], [-18.824290, 26.354293], [-17.046105, 26.015803], [-15.183169, 26.015803], [-13.405500, 26.354293], [-11.712064, 27.031763], [-10.103376, 27.878743], [-8.664188, 29.063683], [-7.478731, 30.418643], [-6.547522, 32.027323], [-6.208524, 32.535303], [-5.616313, 32.873783], [-5.023582, 32.958583], [-4.430855, 32.958583], [-4.261355, 32.873783], [-4.176605, 32.704293], [-4.176605, 32.027323], [-4.091855, 31.688323], [-3.668625, 31.519343], [-1.890954, 31.519343], [-1.551954, 31.688323], [-1.382974, 32.027323], [-1.382974, 33.254643], [-1.382974, 33.551263], [-1.128724, 33.636063], [24.440776, 33.636063], [24.609756, 33.636063], [25.541476, 34.567273], [25.879956, 35.160003], [26.049456, 35.836963], [25.964656, 36.429693], [25.625656, 37.022423], [22.916786, 39.986063], [22.747286, 40.070263], [-0.451304, 40.070263], [-0.620804, 40.155063], [-0.705504, 40.324563], [-0.705504, 40.578813], [-0.705504, 41.340523], [-0.959234, 42.102753], [-1.551964, 42.610733], [-2.314191, 42.695433], [-2.991667, 42.356433], [-3.499649, 41.933203], [-4.007628, 41.594723], [-4.684587, 41.509923], [-5.362066, 41.594723], [-5.954793, 42.017953], [-6.293275, 42.610683], [-7.140251, 44.219363], [-8.325193, 45.743303], [-9.680148, 47.012993], [-11.288836, 48.028953], [-13.066505, 48.706433], [-14.929440, 49.129663], [-21.109939, 40.747723], [-20.093980, 40.578743], [-19.247520, 40.154993], [-18.485293, 39.478033], [-18.062064, 38.546313], [-17.892565, 37.615093], [-18.062064, 36.599143], [-18.485293, 35.752683], [-19.247520, 34.990453], [-20.093980, 34.567223], [-21.109939, 34.397723], [-22.041665, 34.567223], [-22.972874, 34.990453], [-23.649835, 35.752683], [-24.073582, 36.599143], [-24.242564, 37.615093], [-24.073582, 38.546313], [-23.649835, 39.478033], [-22.972874, 40.154993], [-22.041665, 40.578743]]; -outline_1542_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70], [90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71]]; - -engrave_1542_points = [[-6.039385, 36.683823], [-6.039385, 38.546483], [-6.208718, 40.324483], [-6.632051, 42.102483], [-7.478753, 43.711153], [-8.494753, 45.235153], [-9.849419, 46.420483], [-11.373383, 47.436483], [-12.982050, 48.198483], [-14.760049, 48.537153], [-16.622715, 48.621853], [-18.400715, 48.452523], [-20.178749, 47.859863], [-21.702713, 47.013193], [-23.142046, 45.827863], [-24.327380, 44.473193], [-25.428081, 42.695193], [-26.190046, 40.747863], [-26.528748, 38.631193], [-26.528748, 36.514533], [-26.190046, 34.482533], [-25.428081, 32.535193], [-24.327380, 30.672533], [-23.226713, 29.402533], [-21.872047, 28.301863], [-20.348047, 27.455193], [-18.739381, 26.862533], [-17.046049, 26.523863], [-15.352716, 26.523863], [-13.574751, 26.862533], [-11.966085, 27.455193], [-10.442050, 28.301863], [-9.087419, 29.317863], [-7.986753, 30.672533], [-7.055385, 32.111863], [-6.462718, 33.720533], [-6.081736, 35.498533]]; -engrave_1542_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]]; - -warding_1542_points = [[28.236286, 38.377343], [28.236286, 39.054673], [28.405586, 39.562673], [28.744286, 40.240013], [30.352956, 40.240013], [30.352956, 39.562673], [30.098956, 38.885343], [30.098956, 38.462013], [30.268256, 38.038673], [30.522246, 37.615343], [30.691616, 37.107343], [30.691616, 36.599343], [30.606916, 36.260673], [30.352916, 35.922013], [29.675586, 35.329343], [29.590886, 35.075343], [29.675586, 34.821343], [29.844916, 34.652013], [30.437586, 34.482673], [30.606916, 34.397973], [30.691616, 34.143973], [30.691616, 33.889973], [30.437616, 33.635973], [28.574956, 33.635973], [28.320956, 33.974633], [28.320956, 35.244633], [28.405556, 35.667973], [28.659556, 36.006633], [28.998256, 36.345303], [29.167586, 36.683973], [29.082886, 37.022633], [28.490216, 37.699973]]; -warding_1542_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]]; - -warding_1518_points = [[-37.339322, 7.302889], [-37.169989, 7.472219], [-37.085319, 7.641559], [-37.085319, 7.895559], [-37.254652, 8.234219], [-37.423986, 8.403559], [-37.508656, 8.657559], [-37.508656, 8.996219], [-37.254656, 9.250219], [-37.085323, 9.588889], [-37.339323, 9.927559], [-37.762656, 10.181559], [-37.931990, 10.435559], [-37.847320, 10.689559], [-37.169987, 11.451559], [-37.169987, 11.705559], [-37.254657, 11.874889], [-37.762657, 12.467559], [-37.762657, 13.822219], [-39.455991, 13.822219], [-39.455991, 12.890889], [-39.117324, 12.128889], [-39.032654, 11.620889], [-39.201988, 11.112889], [-39.371321, 10.943559], [-39.455991, 10.689559], [-39.371321, 10.435559], [-38.355321, 8.996219], [-38.355321, 8.657559], [-38.439991, 8.488219], [-38.609324, 8.318889], [-39.201991, 8.234189], [-39.371324, 8.064859], [-39.455994, 7.810859], [-39.455994, 7.556859], [-39.201994, 7.302859]]; -warding_1518_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]]; - -engrave_1518_points = [[-75.312166, 19.071559], [-75.481499, 20.002899], [-75.904833, 20.849559], [-76.582165, 21.611559], [-77.428832, 22.034899], [-78.444831, 22.119599], [-95.716825, 22.119599], [-96.732825, 22.034899], [-97.579492, 21.611559], [-98.256825, 20.849559], [-98.680158, 20.002899], [-98.849491, 19.071559], [-98.849491, 3.662239], [-98.680158, 2.730899], [-98.256825, 1.884239], [-97.579492, 1.206900], [-96.732825, 0.783570], [-95.716825, 0.614240], [-78.444831, 0.614240], [-77.428832, 0.783570], [-76.582165, 1.206900], [-75.904833, 1.884239], [-75.481499, 2.730899], [-75.312166, 3.662239], [-75.312166, 10.308569]]; -engrave_1518_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]]; - -warding_1543_points = [[-37.082775, 37.314641], [-37.252109, 37.653271], [-37.252109, 37.991971], [-36.998109, 38.415271], [-36.744109, 38.584641], [-36.574741, 38.923311], [-36.659411, 39.261941], [-36.828778, 39.515941], [-36.998112, 39.769941], [-37.252112, 40.193311], [-37.167412, 40.616641], [-36.998113, 41.293971], [-35.389446, 41.293971], [-35.389446, 41.124641], [-35.812745, 40.362611], [-35.812745, 39.854611], [-35.558745, 39.600641], [-35.304745, 38.923311], [-35.304745, 38.245941], [-35.728113, 37.653271], [-35.812743, 37.399271], [-35.728113, 37.145271], [-35.135446, 36.637271], [-34.966113, 36.298611], [-34.881443, 35.875311], [-34.881443, 35.028611], [-35.050742, 34.859311], [-36.998110, 34.859311], [-37.252110, 35.028611], [-37.252110, 35.282611], [-37.167410, 35.536611], [-36.913410, 35.705971], [-36.320743, 35.875311], [-36.151444, 35.960011], [-36.151444, 36.213981], [-36.236114, 36.383351]]; -warding_1543_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]]; - -engrave_1543_points = [[-76.755635, 29.779281], [-76.924933, 29.017311], [-77.348301, 28.339981], [-77.940933, 27.747311], [-78.702968, 27.408641], [-79.464968, 27.323941], [-86.068966, 27.323941], [-87.508264, 27.493311], [-88.947632, 28.085981], [-90.217631, 28.932611], [-91.233595, 30.033281], [-91.910964, 30.795281], [-92.672963, 31.303281], [-93.519630, 31.641981], [-94.535630, 31.811281], [-95.890296, 31.895981], [-97.160296, 32.403981], [-98.345594, 33.165981], [-99.361593, 34.097311], [-100.123628, 35.282651], [-100.546961, 36.637311], [-100.716259, 37.992011], [-100.546961, 39.346651], [-100.123628, 40.701351], [-99.361593, 41.886651], [-98.345594, 42.818011], [-97.160296, 43.579981], [-95.890296, 44.087981], [-94.535630, 44.257311], [-93.519630, 44.342011], [-92.672963, 44.680641], [-91.910964, 45.188641], [-91.233595, 45.950681], [-90.217631, 47.051351], [-88.947632, 47.898011], [-87.508264, 48.490641], [-86.068966, 48.660011], [-79.464968, 48.660011], [-78.702968, 48.575311], [-77.940933, 48.236601], [-77.348301, 47.643971], [-76.924933, 46.966641], [-76.755635, 46.204601], [-76.120617, 40.277961], [-75.824267, 37.991961], [-75.951302, 37.187611]]; -engrave_1543_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]]; - -outline_1517_points = [[-85.305176, 74.590998], [-86.998612, 74.337268], [-88.522552, 73.744538], [-89.877507, 72.812808], [-90.978214, 71.627868], [-91.739925, 70.780888], [-92.755883, 70.272908], [-93.856591, 70.103928], [-95.295779, 69.934428], [-96.735485, 69.426448], [-98.005175, 68.664228], [-99.021134, 67.563518], [-99.868110, 66.293828], [-100.376090, 64.854118], [-100.545072, 63.414928], [-100.376090, 61.890998], [-99.868110, 60.451808], [-99.021134, 59.181598], [-98.005175, 58.165638], [-96.735485, 57.319178], [-95.295779, 56.811198], [-93.856591, 56.641698], [-92.755883, 56.472198], [-91.739925, 55.964218], [-90.978214, 55.202508], [-89.877507, 53.932298], [-88.522552, 53.001098], [-86.998612, 52.408371], [-85.305176, 52.238871], [-78.786194, 52.238871], [-77.854470, 52.323571], [-77.008009, 52.746798], [-76.330530, 53.339528], [-75.822552, 54.101748], [-75.568822, 55.032958], [-75.314574, 56.980128], [-74.976092, 57.657608], [-74.298613, 58.080838], [-73.536904, 58.080838], [-72.859425, 57.657608], [-72.436195, 57.234378], [-71.928216, 56.811148], [-71.250738, 56.726448], [-70.658010, 56.980178], [-70.150031, 57.488158], [-69.980531, 58.165638], [-69.980531, 59.181598], [-69.980531, 59.351098], [-69.726801, 59.435798], [-42.857977, 59.435798], [-42.688477, 59.520598], [-41.672520, 60.620788], [-41.334038, 61.128768], [-41.164541, 61.721498], [-41.334038, 62.398968], [-41.672520, 62.991698], [-45.313125, 67.055538], [-45.567371, 67.140238], [-68.118113, 67.140238], [-68.202863, 67.140238], [-68.541344, 66.970738], [-68.626094, 66.886538], [-69.726803, 66.886538], [-69.980533, 66.970738], [-69.980533, 67.140238], [-69.980533, 68.664178], [-70.150033, 69.341658], [-70.658012, 69.849638], [-71.250740, 70.019128], [-71.928218, 69.934428], [-72.478573, 69.553578], [-72.859427, 69.087458], [-73.536906, 68.664228], [-74.298614, 68.664228], [-74.976093, 69.087458], [-75.314575, 69.849678], [-75.568823, 71.796848], [-75.822553, 72.643828], [-76.330531, 73.405538], [-77.008010, 74.083018], [-77.854471, 74.421498], [-78.786195, 74.590998], [-94.279821, 66.462808], [-93.348611, 66.378608], [-92.417402, 65.870628], [-91.739925, 65.193148], [-91.316695, 64.346178], [-91.147196, 63.414968], [-91.316695, 62.399008], [-91.739925, 61.552548], [-92.417402, 60.875068], [-93.348611, 60.451838], [-94.279821, 60.282338], [-95.211547, 60.451838], [-96.142756, 60.875068], [-96.819718, 61.552538], [-97.243464, 62.398998], [-97.412446, 63.414958], [-97.243464, 64.346168], [-96.819718, 65.193148], [-96.142756, 65.870628], [-95.211547, 66.378608]]; -outline_1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81], [101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82]]; - -engrave_1517_points = [[-92.840678, 69.765018], [-91.993977, 70.103688], [-91.232013, 70.611688], [-90.554644, 71.289018], [-89.538646, 72.474348], [-88.268647, 73.321018], [-86.829313, 73.913688], [-85.305313, 74.083018], [-78.786017, 74.083018], [-78.024017, 73.913688], [-77.261983, 73.659688], [-76.669351, 73.067018], [-76.330649, 72.474348], [-76.076650, 71.712348], [-74.975984, 63.415018], [-76.076650, 55.117688], [-76.330649, 54.355688], [-76.669351, 53.678348], [-77.261983, 53.170348], [-78.024017, 52.831688], [-78.786017, 52.746988], [-85.305313, 52.746988], [-86.829313, 52.916318], [-88.268647, 53.424318], [-89.538646, 54.355658], [-90.554644, 55.456318], [-91.232013, 56.133658], [-91.993977, 56.726318], [-92.840678, 57.064988], [-93.856642, 57.149688], [-95.211344, 57.319018], [-96.481309, 57.827018], [-97.666642, 58.504348], [-98.682641, 59.520358], [-99.444677, 60.705688], [-99.867974, 61.975688], [-100.037308, 63.415018], [-99.867974, 64.769688], [-99.444677, 66.124348], [-98.682641, 67.225018], [-97.666642, 68.241018], [-96.481309, 69.003018], [-95.211344, 69.426348], [-93.856642, 69.595688]]; -engrave_1517_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43]]; - -outline_1655_points = [[-100.103686, -46.371380], [-100.085187, -46.736532], [-100.030893, -47.091172], [-99.942609, -47.433500], [-99.822138, -47.761715], [-99.671283, -48.074018], [-99.491849, -48.368609], [-99.285640, -48.643686], [-99.054459, -48.897451], [-98.800111, -49.128103], [-98.524399, -49.333841], [-98.229127, -49.512867], [-97.916099, -49.663379], [-97.587119, -49.783577], [-97.243991, -49.871662], [-96.888518, -49.925833], [-96.522506, -49.944290], [-79.175249, -49.944290], [-78.809265, -49.925833], [-78.453815, -49.871662], [-78.110703, -49.783577], [-77.781733, -49.663379], [-77.468709, -49.512867], [-77.173438, -49.333841], [-76.897722, -49.128103], [-76.643367, -48.897451], [-76.412178, -48.643686], [-76.205959, -48.368609], [-76.026515, -48.074018], [-75.875650, -47.761715], [-75.755170, -47.433500], [-75.666878, -47.091172], [-75.612579, -46.736532], [-75.594079, -46.371380], [-75.594079, -45.719740], [-75.564901, -45.431281], [-75.481228, -45.162598], [-75.348850, -44.919449], [-75.173556, -44.707593], [-74.961136, -44.532792], [-74.717380, -44.400802], [-74.448078, -44.317385], [-74.159019, -44.288300], [-71.606209, -44.288300], [-71.408606, -44.248430], [-71.247125, -44.139736], [-71.138190, -43.978589], [-71.098229, -43.781360], [-71.098229, -42.531820], [-71.078298, -42.433242], [-71.023935, -42.352755], [-70.943287, -42.298495], [-70.844499, -42.278600], [-45.954029, -42.278610], [-45.736434, -42.234771], [-45.558700, -42.115240], [-45.438845, -41.937996], [-45.394889, -41.721020], [-45.394889, -41.163430], [-45.372237, -40.933877], [-45.307157, -40.719367], [-45.203965, -40.524363], [-45.066974, -40.353327], [-44.900498, -40.210723], [-44.708852, -40.101013], [-44.496351, -40.028661], [-44.267309, -39.998130], [-44.267309, -39.997130], [-44.012654, -39.937960], [-43.806006, -39.792748], [-43.667357, -39.582037], [-43.616699, -39.326370], [-43.661449, -39.085551], [-43.789299, -38.876780], [-46.454249, -35.925020], [-46.539442, -35.863470], [-46.642359, -35.841820], [-70.844499, -35.841820], [-70.943287, -35.821845], [-71.023935, -35.767410], [-71.078298, -35.686747], [-71.098229, -35.588090], [-71.098229, -34.414520], [-71.125077, -34.149019], [-71.202073, -33.901746], [-71.323895, -33.677994], [-71.485219, -33.483055], [-71.680722, -33.322222], [-71.905081, -33.200788], [-72.152975, -33.124046], [-72.419079, -33.097290], [-74.159019, -33.097290], [-74.448078, -33.068176], [-74.717380, -32.984686], [-74.961136, -32.852597], [-75.173556, -32.677685], [-75.348850, -32.465726], [-75.481228, -32.222498], [-75.564901, -31.953777], [-75.594079, -31.665340], [-75.594079, -31.013700], [-75.612579, -30.648593], [-75.666878, -30.293974], [-75.755170, -29.951647], [-75.875650, -29.623414], [-76.026515, -29.311078], [-76.205959, -29.016443], [-76.412178, -28.741310], [-76.643367, -28.487485], [-76.897722, -28.256768], [-77.173438, -28.050964], [-77.468709, -27.871876], [-77.781733, -27.721306], [-78.110703, -27.601057], [-78.453815, -27.512933], [-78.809265, -27.458736], [-79.175249, -27.440270], [-96.522506, -27.440270], [-96.888518, -27.458736], [-97.243991, -27.512933], [-97.587119, -27.601057], [-97.916099, -27.721306], [-98.229127, -27.871876], [-98.524399, -28.050964], [-98.800111, -28.256768], [-99.054459, -28.487485], [-99.285640, -28.741310], [-99.491849, -29.016443], [-99.671283, -29.311078], [-99.822138, -29.623414], [-99.942609, -29.951647], [-100.030893, -30.293974], [-100.085187, -30.648593], [-100.103686, -31.013700], [-97.697116, -38.717070], [-97.640839, -38.160533], [-97.479451, -37.642066], [-97.224111, -37.172808], [-96.885983, -36.763895], [-96.476227, -36.426464], [-96.006004, -36.171653], [-95.486477, -36.010599], [-94.928806, -35.954440], [-94.371052, -36.010599], [-93.851439, -36.171653], [-93.381131, -36.426464], [-92.971294, -36.763895], [-92.633096, -37.172808], [-92.377701, -37.642066], [-92.216275, -38.160533], [-92.159986, -38.717070], [-92.216275, -39.273541], [-92.377701, -39.791927], [-92.633096, -40.261098], [-92.971294, -40.669923], [-93.381131, -41.007274], [-93.851439, -41.262018], [-94.371052, -41.423027], [-94.928806, -41.479170], [-95.486477, -41.423027], [-96.006004, -41.262018], [-96.476227, -41.007274], [-96.885983, -40.669923], [-97.224111, -40.261098], [-97.479451, -39.791927], [-97.640839, -39.273541], [-97.697116, -38.717070]]; -outline_1655_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], [166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134]]; - -warding_1655_points = [[-39.857992, -42.278440], [-38.206992, -42.278440], [-38.058909, -42.248543], [-37.937779, -42.167036], [-37.856006, -42.046193], [-37.825992, -41.898290], [-37.825992, -41.267310], [-37.878399, -41.096827], [-38.017552, -40.984980], [-38.016552, -40.983980], [-38.618032, -40.744050], [-38.734368, -40.676039], [-38.823484, -40.579068], [-38.880519, -40.460503], [-38.900612, -40.327710], [-38.842817, -40.107243], [-38.774572, -40.015875], [-38.683652, -39.943740], [-38.684652, -39.942740], [-38.118092, -39.602350], [-37.996104, -39.505322], [-37.904178, -39.382482], [-37.846183, -39.240522], [-37.825992, -39.086130], [-37.825992, -37.646940], [-38.209812, -37.206720], [-38.279474, -37.090545], [-38.303612, -36.957300], [-38.303612, -35.791480], [-39.535512, -35.791480], [-39.535512, -36.298590], [-39.556160, -36.441814], [-39.614975, -36.571017], [-39.707261, -36.678902], [-39.828322, -36.758170], [-39.827522, -36.757370], [-39.912922, -36.797370], [-40.016186, -36.864778], [-40.094777, -36.956506], [-40.144793, -37.066333], [-40.162332, -37.188040], [-40.162332, -38.216740], [-40.110177, -38.422431], [-39.966192, -38.578120], [-39.966992, -38.577120], [-39.631142, -38.795880], [-39.529097, -38.905891], [-39.492152, -39.051010], [-39.532914, -39.203097], [-39.644552, -39.314400], [-39.644552, -39.314540], [-39.983222, -39.507820], [-40.103342, -39.627521], [-40.147262, -39.791000], [-40.131249, -39.892027], [-40.084862, -39.983080], [-40.084062, -39.983350], [-39.559492, -40.705800], [-39.498092, -40.825897], [-39.476892, -40.959030], [-39.495395, -41.083784], [-39.547929, -41.195745], [-39.630032, -41.288258], [-39.737242, -41.354670], [-39.736242, -41.354410], [-39.978952, -41.457910], [-40.112652, -41.569987], [-40.162742, -41.737130], [-40.162742, -41.975350], [-40.138836, -42.093641], [-40.073623, -42.190286], [-39.976859, -42.255470], [-39.858302, -42.279380]]; -warding_1655_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72]]; - -engrave_1655_points = [[-76.152799, -31.666880], [-76.152799, -31.012980], [-76.168413, -30.704785], [-76.214241, -30.405457], [-76.390445, -29.839482], [-76.669223, -29.327217], [-77.038389, -28.880821], [-77.485755, -28.512456], [-77.999135, -28.234282], [-78.566342, -28.058459], [-78.866322, -28.012730], [-79.175189, -27.997150], [-96.522606, -27.997150], [-96.831474, -28.012730], [-97.131456, -28.058459], [-97.698664, -28.234282], [-98.212044, -28.512456], [-98.659409, -28.880821], [-99.028574, -29.327217], [-99.307350, -29.839482], [-99.483553, -30.405457], [-99.529381, -30.704785], [-99.544996, -31.012980], [-99.544996, -46.370380], [-99.529381, -46.678573], [-99.483553, -46.977895], [-99.307350, -47.543848], [-99.028574, -48.056083], [-98.659409, -48.502443], [-98.212044, -48.870774], [-97.698664, -49.148917], [-97.131456, -49.324718], [-96.831474, -49.370441], [-96.522606, -49.386020], [-79.175189, -49.386020], [-78.866322, -49.370441], [-78.566342, -49.324718], [-77.999135, -49.148917], [-77.485755, -48.870774], [-77.038389, -48.502443], [-76.669223, -48.056083], [-76.390445, -47.543848], [-76.214241, -46.977895], [-76.168413, -46.678573], [-76.152799, -46.370380], [-76.152799, -45.719080], [-76.152799, -40.243950]]; -engrave_1655_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46]]; - -outline_1644_points = [[-75.617273, -6.220310], [-75.617273, -7.057490], [-75.586297, -7.364030], [-75.497464, -7.649635], [-75.356918, -7.908162], [-75.170801, -8.133463], [-74.945257, -8.319395], [-74.686427, -8.459812], [-74.400454, -8.548569], [-74.093483, -8.579520], [-72.165803, -8.579520], [-71.920256, -8.604266], [-71.691505, -8.675233], [-71.484465, -8.787517], [-71.304050, -8.936213], [-71.155173, -9.116417], [-71.042749, -9.323222], [-70.971691, -9.551725], [-70.946913, -9.797020], [-70.946913, -11.065500], [-70.926930, -11.164129], [-70.872453, -11.244730], [-70.791688, -11.299103], [-70.692843, -11.319050], [-46.901343, -11.319050], [-46.743630, -11.335515], [-46.594250, -11.383570], [-46.457834, -11.461205], [-46.339013, -11.566410], [-46.339803, -11.567410], [-43.923273, -14.205310], [-43.706806, -14.490910], [-43.548049, -14.808713], [-43.450344, -15.150162], [-43.417033, -15.506700], [-43.459283, -15.908155], [-43.582529, -16.288057], [-43.781512, -16.634408], [-44.050973, -16.935210], [-44.051763, -16.934950], [-44.894903, -17.696140], [-44.973741, -17.744840], [-45.065293, -17.761740], [-70.693003, -17.761740], [-70.791844, -17.781694], [-70.872609, -17.836097], [-70.927088, -17.916762], [-70.947073, -18.015500], [-70.947073, -19.410550], [-70.978998, -19.568500], [-71.066055, -19.697503], [-71.195169, -19.784490], [-71.353263, -19.816390], [-74.093643, -19.816390], [-74.400611, -19.847333], [-74.686581, -19.936070], [-74.945409, -20.076464], [-75.170953, -20.262373], [-75.357069, -20.487662], [-75.497615, -20.746190], [-75.586447, -21.031818], [-75.617423, -21.338410], [-75.635315, -21.699247], [-75.687867, -22.050074], [-75.773392, -22.389157], [-75.890201, -22.714760], [-76.036609, -23.025146], [-76.210927, -23.318581], [-76.411468, -23.593328], [-76.636545, -23.847652], [-76.884471, -24.079818], [-77.153557, -24.288090], [-77.442118, -24.470732], [-77.748465, -24.626008], [-78.070912, -24.752184], [-78.407770, -24.847523], [-78.757353, -24.910290], [-79.117973, -24.938750], [-83.500553, -25.035005], [-87.884035, -25.067060], [-92.267336, -25.035008], [-96.649895, -24.938750], [-97.010494, -24.910292], [-97.360061, -24.847525], [-97.696911, -24.752185], [-98.019353, -24.626008], [-98.325701, -24.470729], [-98.614265, -24.288085], [-98.883360, -24.079810], [-99.131295, -23.847641], [-99.356383, -23.593313], [-99.556936, -23.318563], [-99.731266, -23.025125], [-99.877686, -22.714736], [-99.994506, -22.389131], [-100.080038, -22.050046], [-100.132596, -21.699217], [-100.150490, -21.338380], [-100.150490, -6.220260], [-100.132596, -5.859460], [-100.080038, -5.508665], [-99.994506, -5.169610], [-99.877686, -4.844033], [-99.731267, -4.533667], [-99.556937, -4.240250], [-99.356384, -3.965517], [-99.131297, -3.711205], [-98.883362, -3.479048], [-98.614269, -3.270783], [-98.325705, -3.088146], [-98.019359, -2.932872], [-97.696919, -2.806698], [-97.360071, -2.711358], [-97.010506, -2.648591], [-96.649910, -2.620130], [-92.267330, -2.523685], [-87.883880, -2.491290], [-83.500416, -2.523670], [-79.117993, -2.620130], [-78.757373, -2.648587], [-78.407790, -2.711353], [-78.070932, -2.806690], [-77.748485, -2.932863], [-77.442138, -3.088137], [-77.153577, -3.270774], [-76.884491, -3.479040], [-76.636565, -3.711197], [-76.411488, -3.965511], [-76.210947, -4.240245], [-76.036629, -4.533663], [-75.890221, -4.844030], [-75.773412, -5.169609], [-75.687887, -5.508664], [-75.635335, -5.859460], [-75.617443, -6.220260], [-97.085900, -13.761110], [-97.069501, -14.085124], [-97.021369, -14.399813], [-96.943105, -14.703580], [-96.836306, -14.994827], [-96.543505, -15.533369], [-96.155759, -16.002657], [-95.685864, -16.389910], [-95.146613, -16.682344], [-94.854977, -16.789010], [-94.550800, -16.867178], [-94.235682, -16.915250], [-93.911220, -16.931630], [-93.586821, -16.915250], [-93.271753, -16.867178], [-92.967616, -16.789010], [-92.676012, -16.682344], [-92.136801, -16.389910], [-91.666921, -16.002657], [-91.279174, -15.533369], [-90.986362, -14.994827], [-90.879557, -14.703580], [-90.801286, -14.399813], [-90.753151, -14.085124], [-90.736750, -13.761110], [-90.753151, -13.437062], [-90.801286, -13.122335], [-90.879557, -12.818528], [-90.986362, -12.527240], [-91.279174, -11.988611], [-91.666921, -11.519238], [-92.136801, -11.131910], [-92.676012, -10.839413], [-92.967616, -10.732723], [-93.271753, -10.654537], [-93.586821, -10.606453], [-93.911220, -10.590070], [-94.235682, -10.606453], [-94.550800, -10.654537], [-94.854977, -10.732723], [-95.146613, -10.839413], [-95.685864, -11.131910], [-96.155759, -11.519238], [-96.543505, -11.988611], [-96.836306, -12.527240], [-96.943105, -12.818528], [-97.021369, -13.122335], [-97.069501, -13.437062], [-97.085900, -13.761110]]; -outline_1644_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134], [183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135]]; - -engrave_1644_points = [[-76.175893, -21.337050], [-76.191014, -21.642016], [-76.235429, -21.938519], [-76.406429, -22.500268], [-76.677483, -23.010568], [-77.037180, -23.457688], [-77.474109, -23.829901], [-77.976860, -24.115475], [-78.534021, -24.302681], [-78.829440, -24.355731], [-79.134183, -24.379790], [-83.508499, -24.475840], [-87.883870, -24.507780], [-92.259069, -24.475806], [-96.633360, -24.379790], [-96.938106, -24.355731], [-97.233524, -24.302681], [-97.790674, -24.115475], [-98.293402, -23.829901], [-98.730304, -23.457688], [-99.089972, -23.010568], [-99.361000, -22.500268], [-99.531982, -21.938519], [-99.576391, -21.642016], [-99.591510, -21.337050], [-99.591510, -6.219290], [-99.576391, -5.914332], [-99.531982, -5.617842], [-99.361000, -5.056124], [-99.089972, -4.545865], [-98.730304, -4.098793], [-98.293402, -3.726637], [-97.790674, -3.441123], [-97.233524, -3.253982], [-96.938106, -3.200965], [-96.633360, -3.176940], [-96.633180, -3.176940], [-92.258957, -3.080830], [-87.883700, -3.048770], [-83.508477, -3.080803], [-79.134183, -3.176940], [-78.829440, -3.200962], [-78.534021, -3.253976], [-77.976860, -3.441115], [-77.474109, -3.726628], [-77.037180, -4.098786], [-76.677483, -4.545860], [-76.406429, -5.056121], [-76.235429, -5.617841], [-76.191014, -5.914332], [-76.175893, -6.219290], [-76.175893, -15.150440]]; -engrave_1644_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51]]; - -outline_M3_points = [[65.611106, 95.656934], [65.611106, 94.819754], [65.642082, 94.513214], [65.730915, 94.227608], [65.871461, 93.969082], [66.057578, 93.743780], [66.283122, 93.557848], [66.541952, 93.417431], [66.827925, 93.328675], [67.134896, 93.297724], [69.062576, 93.297724], [69.308123, 93.277018], [69.536874, 93.216703], [69.743914, 93.119478], [69.924329, 92.988045], [70.073206, 92.825105], [70.185630, 92.633359], [70.256688, 92.415508], [70.281466, 92.174254], [70.281466, 91.279593], [70.301449, 91.180964], [70.355926, 91.100363], [70.436691, 91.045990], [70.535536, 91.026043], [94.327036, 91.026043], [94.484749, 91.009578], [94.634129, 90.961523], [94.770545, 90.883888], [94.889366, 90.778683], [94.888576, 90.777683], [97.305106, 88.139783], [97.420345, 87.985480], [97.521573, 87.795773], [97.680330, 87.349470], [97.778035, 86.879520], [97.811346, 86.464573], [97.774555, 86.068538], [97.663320, 85.700561], [97.476348, 85.366135], [97.212346, 85.070753], [97.176646, 85.036353], [96.333506, 84.181133], [96.254668, 84.132433], [96.163116, 84.115533], [70.535406, 84.115533], [70.436565, 84.095579], [70.355800, 84.041176], [70.301321, 83.960511], [70.281336, 83.861773], [70.281336, 82.466723], [70.249411, 82.308773], [70.162354, 82.179770], [70.033240, 82.092783], [69.875146, 82.060883], [67.134766, 82.060883], [66.827798, 82.029940], [66.541828, 81.941203], [66.283000, 81.800809], [66.057456, 81.614900], [65.871340, 81.389611], [65.730794, 81.131083], [65.641962, 80.845455], [65.610986, 80.538863], [65.593094, 80.178026], [65.540542, 79.827199], [65.455017, 79.488116], [65.338208, 79.162513], [65.191800, 78.852127], [65.017482, 78.558692], [64.816941, 78.283945], [64.591864, 78.029621], [64.343938, 77.797455], [64.074852, 77.589183], [63.786291, 77.406541], [63.479944, 77.251265], [63.157497, 77.125089], [62.820639, 77.029750], [62.471056, 76.966983], [62.110436, 76.938523], [57.727855, 76.842268], [53.344366, 76.810213], [48.961065, 76.842265], [44.578506, 76.938523], [44.217909, 76.966981], [43.868342, 77.029748], [43.531494, 77.125088], [43.209052, 77.251265], [42.902704, 77.406544], [42.614140, 77.589188], [42.345046, 77.797463], [42.097111, 78.029632], [41.872023, 78.283960], [41.671470, 78.558710], [41.497140, 78.852148], [41.350721, 79.162537], [41.233901, 79.488142], [41.148368, 79.827227], [41.095811, 80.178056], [41.077916, 80.538893], [41.077916, 95.657014], [41.095811, 96.017814], [41.148368, 96.368609], [41.233901, 96.707663], [41.350721, 97.033241], [41.497140, 97.343606], [41.671470, 97.637023], [41.872022, 97.911756], [42.097110, 98.166069], [42.345044, 98.398226], [42.614138, 98.606491], [42.902701, 98.789128], [43.209047, 98.944402], [43.531488, 99.070576], [43.868335, 99.165915], [44.217901, 99.228683], [44.578496, 99.257144], [48.961076, 99.353589], [53.344526, 99.385984], [57.727993, 99.353604], [62.110416, 99.257144], [62.471036, 99.228686], [62.820619, 99.165921], [63.157477, 99.070583], [63.479924, 98.944410], [63.786271, 98.789137], [64.074832, 98.606499], [64.343918, 98.398234], [64.591844, 98.166076], [64.816921, 97.911763], [65.017462, 97.637029], [65.191780, 97.343610], [65.338188, 97.033244], [65.454997, 96.707665], [65.540522, 96.368610], [65.593074, 96.017814], [65.610966, 95.657014], [44.142476, 88.116133], [44.158876, 87.792119], [44.207007, 87.477430], [44.285272, 87.173663], [44.392071, 86.882416], [44.684872, 86.343874], [45.072618, 85.874586], [45.542513, 85.487333], [46.081764, 85.194899], [46.373400, 85.088233], [46.677577, 85.010065], [46.992695, 84.961993], [47.317156, 84.945613], [47.641556, 84.961993], [47.956624, 85.010065], [48.260760, 85.088233], [48.552364, 85.194899], [49.091575, 85.487333], [49.561455, 85.874586], [49.949202, 86.343874], [50.242014, 86.882416], [50.348819, 87.173663], [50.427090, 87.477430], [50.475225, 87.792119], [50.491626, 88.116133], [50.475225, 88.440181], [50.427090, 88.754908], [50.348819, 89.058715], [50.242014, 89.350003], [49.949202, 89.888632], [49.561455, 90.358005], [49.091575, 90.745333], [48.552364, 91.037830], [48.260760, 91.144520], [47.956624, 91.222706], [47.641556, 91.270790], [47.317156, 91.287173], [46.992695, 91.270790], [46.677577, 91.222706], [46.373400, 91.144520], [46.081764, 91.037830], [45.542513, 90.745333], [45.072618, 90.358005], [44.684872, 89.888632], [44.392071, 89.350003], [44.285272, 89.058715], [44.207007, 88.754908], [44.158876, 88.440181], [44.142476, 88.116133]]; -outline_M3_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135], [184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136]]; - -engrave_M3_points = [[65.052486, 80.540193], [65.037365, 80.235227], [64.992950, 79.938724], [64.821950, 79.376975], [64.550896, 78.866675], [64.191199, 78.419555], [63.754270, 78.047342], [63.251519, 77.761768], [62.694358, 77.574562], [62.398939, 77.521512], [62.094196, 77.497453], [57.719880, 77.401403], [53.344506, 77.369463], [48.969308, 77.401437], [44.595016, 77.497453], [44.290271, 77.521512], [43.994853, 77.574562], [43.437703, 77.761768], [42.934974, 78.047342], [42.498073, 78.419555], [42.138405, 78.866675], [41.867377, 79.376975], [41.696395, 79.938724], [41.651986, 80.235227], [41.636866, 80.540193], [41.636866, 95.657954], [41.651986, 95.962911], [41.696395, 96.259402], [41.867377, 96.821119], [42.138405, 97.331378], [42.498073, 97.778450], [42.934974, 98.150607], [43.437703, 98.436120], [43.994853, 98.623262], [44.290271, 98.676278], [44.595016, 98.700304], [44.595196, 98.700304], [48.969419, 98.796414], [53.344676, 98.828474], [57.719901, 98.796440], [62.094196, 98.700304], [62.398939, 98.676282], [62.694358, 98.623268], [63.251519, 98.436129], [63.754270, 98.150616], [64.191199, 97.778458], [64.550896, 97.331383], [64.821950, 96.821122], [64.992950, 96.259403], [65.037365, 95.962911], [65.052486, 95.657954], [65.052486, 86.726803]]; -engrave_M3_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51]]; - -warding_1644_points = [[-37.695131, -15.185890], [-37.911644, -15.460542], [-38.193251, -15.667890], [-38.192451, -15.668030], [-38.512411, -15.842190], [-38.659217, -15.983900], [-38.713151, -16.180510], [-38.695690, -16.295262], [-38.646216, -16.397565], [-38.569089, -16.481042], [-38.468671, -16.539320], [-38.466671, -16.538320], [-37.900461, -16.760320], [-37.790896, -16.823983], [-37.706653, -16.915196], [-37.652564, -17.026946], [-37.633461, -17.152220], [-37.633461, -17.920820], [-37.651418, -18.009598], [-37.700398, -18.082157], [-37.773059, -18.131110], [-37.862061, -18.149070], [-39.695801, -18.149070], [-39.784798, -18.131110], [-39.857459, -18.082157], [-39.906441, -18.009598], [-39.924401, -17.920820], [-39.922401, -17.641770], [-39.900760, -17.506825], [-39.839762, -17.388033], [-39.745293, -17.293533], [-39.623241, -17.231460], [-39.625241, -17.230750], [-39.529241, -17.201650], [-39.418224, -17.145026], [-39.332211, -17.058851], [-39.276625, -16.950545], [-39.256891, -16.827530], [-39.277078, -16.702863], [-39.335891, -16.591030], [-39.335631, -16.591690], [-39.811881, -15.959510], [-39.878706, -15.832646], [-39.901881, -15.691150], [-39.886197, -15.573822], [-39.841214, -15.466461], [-39.770032, -15.374379], [-39.675751, -15.302890], [-39.676011, -15.303060], [-39.407201, -15.147840], [-39.304596, -15.046466], [-39.266791, -14.907390], [-39.300183, -14.775920], [-39.392031, -14.676040], [-39.391241, -14.676570], [-39.730261, -14.455420], [-39.859912, -14.314365], [-39.907011, -14.128640], [-39.891074, -14.018314], [-39.845668, -13.918745], [-39.774398, -13.835586], [-39.680871, -13.774490], [-39.680871, -13.773490], [-39.564461, -13.719390], [-39.456047, -13.638938], [-39.388411, -13.522330], [-39.387411, -13.521670], [-39.335911, -13.205410], [-39.354211, -13.015543], [-39.408211, -12.832660], [-39.409211, -12.833370], [-39.510111, -12.702100], [-39.511111, -12.700100], [-39.598211, -12.636400], [-39.709793, -12.502295], [-39.749901, -12.332550], [-39.749901, -11.655200], [-38.230841, -11.655200], [-38.230841, -12.111690], [-38.211918, -12.249287], [-38.157772, -12.374588], [-38.072338, -12.481093], [-37.959551, -12.562300], [-37.959291, -12.561300], [-37.850631, -12.619900], [-37.758421, -12.686220], [-37.688666, -12.773058], [-37.644508, -12.875135], [-37.629091, -12.987170], [-37.660692, -13.146410], [-37.750801, -13.281350], [-37.748801, -13.281700], [-38.295601, -13.831360], [-38.355113, -13.920125], [-38.376001, -14.024820], [-38.340126, -14.160115], [-38.242301, -14.260130], [-38.243301, -14.260790], [-37.876061, -14.478520], [-37.770719, -14.561693], [-37.691341, -14.667361], [-37.641265, -14.789674], [-37.623831, -14.922780], [-37.641893, -15.058885], [-37.695431, -15.185450], [-37.695161, -15.186290]]; -warding_1644_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105]]; - -outline_1638_points = [[-100.089954, -96.306310], [-100.071073, -96.687969], [-100.015615, -97.059033], [-99.925362, -97.417666], [-99.802096, -97.762034], [-99.647596, -98.090301], [-99.463645, -98.400634], [-99.252023, -98.691195], [-99.014512, -98.960152], [-98.752892, -99.205669], [-98.468945, -99.425910], [-98.164451, -99.619042], [-97.841192, -99.783229], [-97.500949, -99.916636], [-97.145502, -100.017429], [-96.776634, -100.083771], [-96.396124, -100.113830], [-92.015445, -100.210345], [-87.633865, -100.242510], [-83.252278, -100.210337], [-78.871615, -100.113830], [-78.491105, -100.083770], [-78.122237, -100.017426], [-77.766790, -99.916632], [-77.426547, -99.783225], [-77.103288, -99.619038], [-76.798794, -99.425906], [-76.514847, -99.205665], [-76.253227, -98.960148], [-76.015716, -98.691192], [-75.804094, -98.400631], [-75.620143, -98.090299], [-75.465643, -97.762033], [-75.342377, -97.417665], [-75.252124, -97.059033], [-75.196666, -96.687969], [-75.177785, -96.306310], [-75.177785, -95.404560], [-75.149420, -95.123171], [-75.068076, -94.861030], [-74.939379, -94.623769], [-74.768956, -94.417018], [-74.562432, -94.246410], [-74.325433, -94.117575], [-74.063585, -94.036145], [-73.782515, -94.007750], [-73.486312, -94.039579], [-73.206632, -94.132290], [-72.952636, -94.281715], [-72.733485, -94.483690], [-72.732485, -94.485690], [-72.226065, -95.067560], [-72.040409, -95.238773], [-71.825217, -95.365490], [-71.588249, -95.444139], [-71.337265, -95.471150], [-71.099121, -95.447078], [-70.877247, -95.378047], [-70.676415, -95.268834], [-70.501397, -95.124217], [-70.356965, -94.948973], [-70.247891, -94.747879], [-70.178946, -94.525712], [-70.154905, -94.287250], [-70.154905, -93.627340], [-70.134930, -93.528466], [-70.080495, -93.447640], [-69.999832, -93.393101], [-69.901175, -93.373090], [-42.924525, -93.373090], [-42.826823, -93.353702], [-42.744175, -93.298690], [-42.747175, -93.299690], [-41.763255, -92.316280], [-41.537929, -92.041241], [-41.372063, -91.730406], [-41.269631, -91.393278], [-41.234605, -91.039360], [-41.265063, -90.708978], [-41.354456, -90.392277], [-41.499808, -90.097068], [-41.698145, -89.831160], [-41.698675, -89.830160], [-45.402325, -85.711550], [-45.487371, -85.649275], [-45.590425, -85.627350], [-69.901645, -85.627350], [-70.000303, -85.607382], [-70.080970, -85.552916], [-70.135408, -85.472104], [-70.155385, -85.373100], [-70.155385, -83.437820], [-70.179262, -83.200992], [-70.247739, -82.980410], [-70.356078, -82.780799], [-70.499546, -82.606885], [-70.673406, -82.463392], [-70.872922, -82.355047], [-71.093360, -82.286574], [-71.329985, -82.262700], [-71.520074, -82.278122], [-71.703988, -82.323678], [-71.878151, -82.398303], [-72.038985, -82.500930], [-72.037985, -82.500930], [-72.940815, -83.185680], [-73.131896, -83.307239], [-73.338790, -83.395992], [-73.557278, -83.450384], [-73.783145, -83.468860], [-74.064212, -83.440440], [-74.326057, -83.358943], [-74.563054, -83.230016], [-74.769577, -83.059305], [-74.940000, -82.852454], [-75.068696, -82.615111], [-75.150040, -82.352921], [-75.178405, -82.071530], [-75.178405, -81.170300], [-75.197286, -80.788696], [-75.252744, -80.417669], [-75.342997, -80.059055], [-75.466263, -79.714691], [-75.620763, -79.386413], [-75.804714, -79.076057], [-76.016336, -78.785461], [-76.253847, -78.516460], [-76.515467, -78.270890], [-76.799414, -78.050590], [-77.103908, -77.857393], [-77.427167, -77.693138], [-77.767410, -77.559661], [-78.122857, -77.458798], [-78.491725, -77.392385], [-78.872235, -77.362260], [-83.252903, -77.266155], [-87.634495, -77.234100], [-92.016133, -77.266170], [-96.396744, -77.362260], [-96.777254, -77.392379], [-97.146122, -77.458786], [-97.501569, -77.559646], [-97.841812, -77.693122], [-98.165071, -77.857376], [-98.469565, -78.050572], [-98.753512, -78.270874], [-99.015132, -78.516445], [-99.252643, -78.785448], [-99.464265, -79.076047], [-99.648216, -79.386405], [-99.802716, -79.714685], [-99.925982, -80.059052], [-100.016235, -80.417667], [-100.071693, -80.788695], [-100.090574, -81.170300], [-96.811084, -88.715050], [-96.794699, -88.390591], [-96.746610, -88.075478], [-96.668415, -87.771311], [-96.561713, -87.479687], [-96.269184, -86.940466], [-95.881813, -86.470606], [-95.412390, -86.082895], [-94.873704, -85.790124], [-94.582384, -85.683338], [-94.278545, -85.605082], [-93.963786, -85.556957], [-93.639704, -85.540560], [-93.315629, -85.556957], [-93.000886, -85.605082], [-92.697073, -85.683338], [-92.405787, -85.790124], [-91.867184, -86.082895], [-91.397856, -86.470606], [-91.010580, -86.940466], [-90.718134, -87.479687], [-90.611466, -87.771311], [-90.533297, -88.075478], [-90.485224, -88.390591], [-90.468845, -88.715050], [-90.485224, -89.039472], [-90.533297, -89.354558], [-90.611466, -89.658706], [-90.718134, -89.950318], [-91.010580, -90.489533], [-91.397856, -90.959406], [-91.867184, -91.347139], [-92.405787, -91.639936], [-92.697073, -91.746734], [-93.000886, -91.824998], [-93.315629, -91.873130], [-93.639704, -91.889530], [-93.963786, -91.873130], [-94.278545, -91.824998], [-94.582384, -91.746734], [-94.873704, -91.639936], [-95.412390, -91.347139], [-95.881813, -90.959406], [-96.269184, -90.489533], [-96.561713, -89.950318], [-96.668415, -89.658706], [-96.746610, -89.354558], [-96.794699, -89.039472], [-96.811084, -88.715050]]; -outline_1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154], [203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155]]; - -outline_a1638_points = [[-100.087374, -71.001800], [-100.068491, -71.382296], [-100.013027, -71.752242], [-99.922764, -72.109807], [-99.799484, -72.453161], [-99.644966, -72.780472], [-99.460993, -73.089910], [-99.249345, -73.379644], [-99.011803, -73.647842], [-98.750149, -73.892675], [-98.466163, -74.112310], [-98.161627, -74.304918], [-97.838321, -74.468667], [-97.498027, -74.601727], [-97.142525, -74.702266], [-96.773597, -74.768454], [-96.393024, -74.798460], [-92.011830, -74.894565], [-87.629735, -74.926620], [-83.247628, -74.894587], [-78.866445, -74.798460], [-78.485872, -74.768452], [-78.116944, -74.702263], [-77.761442, -74.601723], [-77.421148, -74.468663], [-77.097842, -74.304914], [-76.793306, -74.112306], [-76.509320, -73.892671], [-76.247666, -73.647838], [-76.010124, -73.379640], [-75.798476, -73.089907], [-75.614503, -72.780470], [-75.459985, -72.453160], [-75.336705, -72.109806], [-75.246442, -71.752241], [-75.190978, -71.382296], [-75.172095, -71.001800], [-75.172095, -70.103150], [-75.143730, -69.822584], [-75.062388, -69.561214], [-74.933693, -69.324654], [-74.763271, -69.118517], [-74.556748, -68.948417], [-74.319751, -68.819966], [-74.057905, -68.738779], [-73.776835, -68.710470], [-73.480569, -68.742202], [-73.200718, -68.834620], [-72.946538, -68.983558], [-72.727285, -69.184850], [-72.726285, -69.186850], [-72.219855, -69.767180], [-72.034161, -69.937766], [-71.818925, -70.063993], [-71.581946, -70.142324], [-71.331025, -70.169220], [-71.092832, -70.145240], [-70.870936, -70.076470], [-70.670101, -69.967663], [-70.495093, -69.823572], [-70.350680, -69.648952], [-70.241627, -69.448556], [-70.172700, -69.227137], [-70.148665, -68.989450], [-70.148665, -68.331090], [-70.128714, -68.232590], [-70.074318, -68.152097], [-69.993664, -68.097798], [-69.894935, -68.077880], [-38.474155, -68.077880], [-38.376822, -68.058742], [-38.294325, -68.003980], [-38.296325, -68.004510], [-37.312405, -67.024210], [-37.087074, -66.749971], [-36.921210, -66.440006], [-36.818780, -66.103815], [-36.783755, -65.750900], [-36.814293, -65.421473], [-36.903861, -65.105736], [-37.049388, -64.811436], [-37.247805, -64.546320], [-37.248335, -64.545790], [-40.951985, -60.439070], [-41.037175, -60.377195], [-41.140605, -60.355370], [-69.894905, -60.355370], [-69.993634, -60.335424], [-70.074288, -60.281080], [-70.128684, -60.200575], [-70.148635, -60.102150], [-70.148635, -58.172550], [-70.148105, -58.172550], [-70.171984, -57.936441], [-70.240465, -57.716485], [-70.348810, -57.517407], [-70.492282, -57.343930], [-70.666146, -57.200779], [-70.865663, -57.092679], [-71.086099, -57.024354], [-71.322715, -57.000530], [-71.512936, -57.015972], [-71.696985, -57.061518], [-71.871276, -57.135998], [-72.032225, -57.238240], [-72.031225, -57.238240], [-72.934015, -57.920890], [-73.125252, -58.042374], [-73.332312, -58.130951], [-73.550934, -58.185165], [-73.776855, -58.203560], [-74.057925, -58.175235], [-74.319773, -58.094006], [-74.556772, -57.965493], [-74.763296, -57.795316], [-74.933719, -57.589094], [-75.062416, -57.352448], [-75.143760, -57.090997], [-75.172125, -56.810360], [-75.172125, -55.911710], [-75.191008, -55.531254], [-75.246472, -55.161350], [-75.336735, -54.803827], [-75.460015, -54.460517], [-75.614533, -54.133249], [-75.798506, -53.823853], [-76.010153, -53.534160], [-76.247695, -53.266001], [-76.509348, -53.021205], [-76.793334, -52.801603], [-77.097869, -52.609025], [-77.421174, -52.445302], [-77.761467, -52.312264], [-78.116967, -52.211740], [-78.485893, -52.145562], [-78.866465, -52.115560], [-83.247650, -52.019455], [-87.629765, -51.987400], [-92.011851, -52.019432], [-96.393044, -52.115560], [-96.773619, -52.145564], [-97.142548, -52.211743], [-97.498050, -52.312267], [-97.838345, -52.445306], [-98.161651, -52.609030], [-98.466187, -52.801608], [-98.750173, -53.021209], [-99.011827, -53.266005], [-99.249368, -53.534164], [-99.461016, -53.823856], [-99.644988, -54.133251], [-99.799505, -54.460518], [-99.922785, -54.803828], [-100.013047, -55.161350], [-100.068511, -55.531254], [-100.087394, -55.911710], [-96.818844, -63.449290], [-96.802461, -63.125812], [-96.754377, -62.811646], [-96.676190, -62.508385], [-96.569497, -62.217626], [-96.276989, -61.679990], [-95.889636, -61.211496], [-95.420222, -60.824902], [-94.881531, -60.532968], [-94.590202, -60.426485], [-94.286347, -60.348451], [-93.971566, -60.300461], [-93.647454, -60.284110], [-93.323339, -60.300461], [-93.008543, -60.348451], [-92.704664, -60.426485], [-92.413302, -60.532968], [-91.874530, -60.824902], [-91.405022, -61.211496], [-91.017574, -61.679990], [-90.724983, -62.217626], [-90.618257, -62.508385], [-90.540044, -62.811646], [-90.491944, -63.125812], [-90.475555, -63.449290], [-90.491944, -63.772725], [-90.540044, -64.086848], [-90.618257, -64.390064], [-90.724983, -64.680779], [-91.017574, -65.218328], [-91.405022, -65.686741], [-91.874530, -66.073264], [-92.413302, -66.365142], [-92.704664, -66.471604], [-93.008543, -66.549622], [-93.323339, -66.597602], [-93.647454, -66.613950], [-93.971566, -66.597602], [-94.286347, -66.549622], [-94.590202, -66.471604], [-94.881531, -66.365142], [-95.420222, -66.073264], [-95.889636, -65.686741], [-96.276989, -65.218328], [-96.569497, -64.680779], [-96.676190, -64.390064], [-96.754377, -64.086848], [-96.802461, -63.772725], [-96.818844, -63.449290]]; -outline_a1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], [204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156]]; - -warding_1638_points = [[-37.620075, -89.675120], [-37.749677, -89.534010], [-37.796465, -89.348020], [-37.780643, -89.237491], [-37.735518, -89.137818], [-37.664599, -89.054621], [-37.571395, -88.993520], [-37.571395, -88.992520], [-37.452155, -88.938220], [-37.343926, -88.857615], [-37.276475, -88.740800], [-37.277475, -88.742800], [-37.225575, -88.426010], [-37.243725, -88.236055], [-37.297875, -88.053090], [-37.295875, -88.051090], [-37.397475, -87.919430], [-37.398265, -87.920430], [-37.485065, -87.853630], [-37.596585, -87.719497], [-37.636405, -87.549710], [-37.636405, -85.576420], [-36.119465, -85.576420], [-36.121465, -87.328560], [-36.102602, -87.466206], [-36.048616, -87.591592], [-35.963409, -87.698119], [-35.850885, -87.779190], [-35.850095, -87.780190], [-35.738965, -87.838790], [-35.646957, -87.905122], [-35.577306, -87.992037], [-35.533187, -88.094317], [-35.517775, -88.206740], [-35.549220, -88.366058], [-35.639135, -88.501130], [-35.639925, -88.501480], [-36.186375, -89.049410], [-36.245275, -89.138253], [-36.266075, -89.243020], [-36.230356, -89.378443], [-36.132725, -89.478460], [-36.131935, -89.479180], [-35.765405, -89.699800], [-35.659910, -89.783157], [-35.580545, -89.888950], [-35.530550, -90.011363], [-35.513165, -90.144580], [-35.531115, -90.280945], [-35.584765, -90.407650], [-35.583975, -90.408650], [-35.800130, -90.683580], [-36.081385, -90.891190], [-36.080585, -90.891330], [-36.400205, -91.063060], [-36.546871, -91.204896], [-36.600935, -91.401760], [-36.583412, -91.516640], [-36.533806, -91.619060], [-36.456556, -91.702647], [-36.356105, -91.761030], [-36.357105, -91.760030], [-35.791605, -91.985000], [-35.682213, -92.048661], [-35.598060, -92.139896], [-35.544003, -92.251727], [-35.524905, -92.377180], [-35.521905, -92.377180], [-35.521905, -93.144260], [-35.539917, -93.233140], [-35.589017, -93.305750], [-35.661798, -93.354719], [-35.750855, -93.372680], [-37.582125, -93.372680], [-37.670863, -93.354719], [-37.743297, -93.305750], [-37.792117, -93.233140], [-37.810015, -93.144260], [-37.810015, -92.867300], [-37.788440, -92.732209], [-37.727640, -92.613300], [-37.633502, -92.518713], [-37.511915, -92.456590], [-37.511125, -92.455880], [-37.415125, -92.423980], [-37.304316, -92.367321], [-37.218410, -92.281058], [-37.162863, -92.172639], [-37.143135, -92.049510], [-37.163322, -91.924688], [-37.222135, -91.812790], [-37.221345, -91.813510], [-37.700415, -91.180630], [-37.766927, -91.053597], [-37.790015, -90.911880], [-37.774374, -90.794423], [-37.729461, -90.686941], [-37.658293, -90.594738], [-37.563885, -90.523120], [-37.560885, -90.523260], [-37.293125, -90.370470], [-37.190437, -90.268912], [-37.153075, -90.129660], [-37.186272, -89.998117], [-37.277955, -89.898210], [-37.279955, -89.896210], [-37.618265, -89.674840]]; -warding_1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106]]; - -engrave_1638_points = [[-75.736225, -81.171240], [-75.752336, -80.845548], [-75.799658, -80.528898], [-75.876670, -80.222855], [-75.981852, -79.928985], [-76.270650, -79.384025], [-76.653892, -78.906542], [-77.119422, -78.509061], [-77.655081, -78.204106], [-77.945409, -78.090239], [-78.248711, -78.004200], [-78.563466, -77.947555], [-78.888155, -77.921870], [-83.260723, -77.825357], [-87.634215, -77.792970], [-92.007598, -77.825357], [-96.380104, -77.921870], [-96.704825, -77.947547], [-97.019607, -78.004186], [-97.322933, -78.090220], [-97.613282, -78.204085], [-98.148973, -78.509039], [-98.614524, -78.906523], [-98.997780, -79.384012], [-99.286584, -79.928978], [-99.391768, -80.222851], [-99.468781, -80.528896], [-99.516103, -80.845547], [-99.532214, -81.171240], [-99.532214, -96.307480], [-99.516103, -96.633148], [-99.468781, -96.949781], [-99.391768, -97.255811], [-99.286584, -97.549673], [-98.997780, -98.094626], [-98.614524, -98.572107], [-98.148973, -98.969587], [-97.613282, -99.274535], [-97.322933, -99.388393], [-97.019607, -99.474419], [-96.704825, -99.531047], [-96.380104, -99.556710], [-92.007598, -99.653065], [-87.634215, -99.685220], [-83.260741, -99.653068], [-78.888295, -99.556710], [-78.888155, -99.556710], [-78.563466, -99.531049], [-78.248711, -99.474422], [-77.945409, -99.388397], [-77.655081, -99.274539], [-77.119422, -98.969592], [-76.653892, -98.572111], [-76.270650, -98.094628], [-75.981852, -97.549675], [-75.876670, -97.255812], [-75.799658, -96.949781], [-75.752336, -96.633148], [-75.736225, -96.307480], [-75.736225, -90.759490]]; -engrave_1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]]; - -engrave_a1638_points = [[-75.730125, -55.912600], [-75.746238, -55.587925], [-75.793566, -55.272256], [-75.870589, -54.967156], [-75.975786, -54.674185], [-76.264625, -54.130881], [-76.647926, -53.654840], [-77.113530, -53.258555], [-77.649280, -52.954522], [-77.939661, -52.841004], [-78.243018, -52.755235], [-78.557832, -52.698776], [-78.882585, -52.673190], [-83.255686, -52.577080], [-87.629845, -52.545020], [-92.003750, -52.577053], [-96.376754, -52.673190], [-96.701507, -52.698783], [-97.016321, -52.755247], [-97.319678, -52.841019], [-97.610059, -52.954539], [-98.145809, -53.258573], [-98.611413, -53.654855], [-98.994714, -54.130892], [-99.283553, -54.674191], [-99.388750, -54.967159], [-99.465773, -55.272258], [-99.513101, -55.587925], [-99.529214, -55.912600], [-99.529214, -71.003170], [-99.513101, -71.327852], [-99.465773, -71.643526], [-99.388750, -71.948631], [-99.283553, -72.241605], [-98.994714, -72.784914], [-98.611413, -73.260956], [-98.145809, -73.657238], [-97.610059, -73.961266], [-97.319678, -74.074780], [-97.016321, -74.160544], [-96.701507, -74.216998], [-96.376754, -74.242580], [-92.003727, -74.338600], [-87.629665, -74.370570], [-83.255663, -74.338596], [-78.882585, -74.242580], [-78.557832, -74.217003], [-78.243018, -74.160553], [-77.939661, -74.074791], [-77.649280, -73.961278], [-77.113530, -73.657251], [-76.647926, -73.260967], [-76.264625, -72.784921], [-75.975786, -72.241610], [-75.870589, -71.948634], [-75.793566, -71.643527], [-75.746238, -71.327852], [-75.730125, -71.003170], [-75.730125, -65.471960]]; -engrave_a1638_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58]]; - -warding_M3_points = [[98.917886, 84.181463], [99.015949, 84.121776], [99.076886, 84.099363], [101.032326, 84.101363], [101.167046, 84.189963], [101.213509, 84.286228], [101.222846, 84.345143], [101.222846, 86.199283], [101.198746, 86.386063], [101.160084, 86.463050], [101.099446, 86.521053], [100.942856, 86.582653], [100.244736, 86.717233], [100.140974, 86.743583], [99.989196, 86.811933], [99.927546, 86.909665], [99.903996, 87.027803], [99.912859, 87.149331], [99.952996, 87.264753], [100.108676, 87.481013], [101.030586, 88.558353], [101.088759, 88.636872], [101.171846, 88.784173], [101.210134, 89.003137], [101.218046, 89.138423], [101.224046, 90.372133], [100.921396, 90.658773], [100.921396, 91.036823], [99.655206, 91.036823], [99.655206, 89.944413], [99.655206, 89.757303], [99.697735, 89.667181], [99.802536, 89.568223], [99.983724, 89.381870], [100.129886, 89.188173], [100.184986, 89.063992], [100.204386, 88.930863], [100.179536, 88.811642], [100.117186, 88.709423], [100.015716, 88.630122], [99.886547, 88.566977], [99.595941, 88.482271], [99.241466, 88.431023], [99.114681, 88.407998], [99.014430, 88.374576], [98.941366, 88.322423], [98.879691, 88.157573], [98.863766, 88.054223], [98.863766, 86.384163], [98.862441, 86.301446], [98.887966, 86.167563], [99.001266, 86.058803], [99.727916, 85.569263], [99.794710, 85.516975], [99.888466, 85.411953], [99.923679, 85.307863], [99.931666, 85.196993], [99.921291, 85.086665], [99.875666, 84.982763], [99.724111, 84.901978], [99.620556, 84.879243], [99.048226, 84.803343], [98.991339, 84.794968], [98.904286, 84.751343], [98.872774, 84.670023], [98.866986, 84.618853], [98.866826, 84.322323], [98.875464, 84.268860], [98.917926, 84.181713]]; -warding_M3_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68]]; - -//polygon(points=outline_1543_points, paths=outline_1543_paths); -//polygon(points=outline_1518_points, paths=outline_1518_paths); -//polygon(points=outline_a1517_points, paths=outline_a1517_paths); -//polygon(points=outline_a1515_points, paths=outline_a1515_paths); -//polygon(points=outline_1515_points, paths=outline_1515_paths); -//polygon(points=warding_1515_points, paths=warding_1515_paths); -//polygon(points=engrave_1515_points, paths=engrave_1515_paths); -//polygon(points=engrave_a1515_points, paths=engrave_a1515_paths); -//polygon(points=warding_1517_points, paths=warding_1517_paths); -//polygon(points=engrave_a1517_points, paths=engrave_a1517_paths); -//polygon(points=outline_1542_points, paths=outline_1542_paths); -//polygon(points=engrave_1542_points, paths=engrave_1542_paths); -//polygon(points=warding_1542_points, paths=warding_1542_paths); -//polygon(points=warding_1518_points, paths=warding_1518_paths); -//polygon(points=engrave_1518_points, paths=engrave_1518_paths); -//polygon(points=warding_1543_points, paths=warding_1543_paths); -//polygon(points=engrave_1543_points, paths=engrave_1543_paths); -//polygon(points=outline_1517_points, paths=outline_1517_paths); -//polygon(points=engrave_1517_points, paths=engrave_1517_paths); -//polygon(points=outline_1655_points, paths=outline_1655_paths); -//polygon(points=warding_1655_points, paths=warding_1655_paths); -//polygon(points=engrave_1655_points, paths=engrave_1655_paths); -//polygon(points=outline_1644_points, paths=outline_1644_paths); -//polygon(points=engrave_1644_points, paths=engrave_1644_paths); -//polygon(points=outline_M3_points, paths=outline_M3_paths); -//polygon(points=engrave_M3_points, paths=engrave_M3_paths); -//polygon(points=warding_1644_points, paths=warding_1644_paths); -//polygon(points=outline_1638_points, paths=outline_1638_paths); -//polygon(points=outline_a1638_points, paths=outline_a1638_paths); -//polygon(points=warding_1638_points, paths=warding_1638_paths); -//polygon(points=engrave_1638_points, paths=engrave_1638_paths); -//polygon(points=engrave_a1638_points, paths=engrave_a1638_paths); -//polygon(points=warding_M3_points, paths=warding_M3_paths); diff --git a/scad/medeco.scad b/scad/medeco.scad index 22fbf79..068f02a 100644 --- a/scad/medeco.scad +++ b/scad/medeco.scad @@ -1,4 +1,4 @@ -include +include outlines_k = ["A1515", "1515", @@ -34,7 +34,7 @@ outlines_v = [[outline_a1515_points, outline_a1515_paths, engrave_1518_points, engrave_1518_paths], [outline_1542_points, outline_1542_paths, - [-outline_1542_points[92][0], -outline_1542_points[98][1]], + [-outline_1542_points[52][0], -outline_1542_points[40][1]], engrave_1542_points, engrave_1542_paths], [outline_1543_points, outline_1543_paths, @@ -57,7 +57,7 @@ outlines_v = [[outline_a1515_points, outline_a1515_paths, [-outline_1655_points[48][0], -outline_1655_points[52][1]], engrave_1655_points, engrave_1655_paths], - [outline_M3_points, outline_M3_paths, + [outline_M3_points, outline_M3_paths, [-outline_M3_points[47][0], -outline_M3_points[43][1]], engrave_M3_points, engrave_M3_paths]]; diff --git a/scad/medeco_M3.scad b/scad/medeco_M3.scad index 46e14e7..f7dfe0f 100644 --- a/scad/medeco_M3.scad +++ b/scad/medeco_M3.scad @@ -1,103 +1,103 @@ -use -include - -module medeco_m3(bitting="", - outline_name="M3", - warding_name="M3", - slider_depth=.6) { - - name = "Medeco M3"; - - /* - "A" variants of key outlines indicates 6-pin version. - - Bitting is specified from bow to tip, 1-6, with 1 being the shallowest cut and 6 being the deepest. - - After each number, a letter K,B,Q,L,C,R,M,D,S is specified for the cut angle and offset. - - Example: 2K5B3Q6M3S - - Note: KBQ & MDS Biaxial cuts (Fore & Aft) do not appear to be used in conjunction with LCR Classic cuts(Centered) - - Example: 2K5B3Q6M3S or 2L5C3R6L3R - - Note: On non-Biaxial(locks not utilizing Fore or Aft cuts) M3 Cam locks, only the deepest 4 cut depths are used (3,4,5,6) and only the deepest 3 cut depths (4,5,6) on Biaxial M3 Cam locks - - Example: 3L5C3R6L4R or 4K5B4Q6M4S - - The M3 slider variable has been added and can be measured in inches from either the key or the face of a gutted lock. - */ - - outlines_k = ["A1515", - "1515", - "A1517", - "1517", - "1518", - "1542", - "1543", - "A1638", - "1638", - "1644", - "1655", - "M3"]; - - wardings_k = ["1515", - "1517", - "1518", - "1542", - "1543", - "1638", - "1644", - "1655", - "M3"]; - - outline_param = key_lkup(outlines_k, outlines_v, outline_name); - outline_points = outline_param[0]; - outline_paths = outline_param[1]; - offset = outline_param[2]; - engrave_points = outline_param[3]; - engrave_paths = outline_param[4]; - - warding_points = key_lkup(wardings_k, wardings_v, warding_name); - - cut_locations = [for(i=[0.244, 0.414, 0.584, 0.754, 0.924, 1.094]) i*25.4]; - depth_table = [for(i=[0.280+0.025:-0.025:0.154]) i*25.4]; - angles_k = ["K", "B", "Q", "M", "D", "S", "L", "C", "R"]; - angles_v = [[20, -.7874], [0, -.7874], [-20, -.7874], - [20, .7874], [0, .7874], [-20, .7874], - [20, 0], [0, 0], [-20, 0]]; - - bitting_depth = [for(i=[0:2:len(bitting)-1]) bitting[i]]; - bitting_angle = [for(i=[1:2:len(bitting)-1]) bitting[i]]; - heights = key_code_to_heights(bitting_depth, depth_table); - angles_and_offsets = [for(c=bitting_angle) key_lkup(angles_k, angles_v, c)]; - angles = [for(c=angles_and_offsets) c[0]]; - offsets = [for(c=angles_and_offsets) c[1]]; - - difference() { - if($children == 0) { - key_blank(outline_points, - warding_points, - outline_paths=outline_paths, - engrave_right_points=engrave_points, - engrave_right_paths=engrave_paths, - engrave_left_points=engrave_points, - engrave_left_paths=engrave_paths, - offset=offset, - plug_diameter=12.7); - } else { - children(0); - } - key_bitting(heights, cut_locations + offsets, - flat=.381, angle=86, // from CW-1012 cutter specs - angles=angles); - m3_slider(slider*25.4); - } -} - -// Defaults -bitting=""; -outline="M3"; -warding="M3"; -slider=0.6; -medeco_m3(bitting, outline, warding, slider); \ No newline at end of file +use +include + +module medeco_m3(bitting="", + outline_name="M3", + warding_name="M3", + slider_depth=0.6) { + + name = "Medeco M3"; + + /* + "A" variants of key outlines indicates 6-pin version. + + Bitting is specified from bow to tip, 1-6, with 1 being the shallowest cut and 6 being the deepest. + + After each number, a letter K,B,Q,L,C,R,M,D,S is specified for the cut angle and offset. + + Example: 2K5B3Q6M3S + + Note: KBQ & MDS Biaxial cuts (Fore & Aft) do not appear to be used in conjunction with LCR Classic cuts(Centered) + + Example: 2K5B3Q6M3S or 2L5C3R6L3R + + Note: On non-Biaxial(locks not utilizing Fore or Aft cuts) M3 Cam locks, only the deepest 4 cut depths are used (3,4,5,6) and only the deepest 3 cut depths (4,5,6) on Biaxial M3 Cam locks + + Example: 3L5C3R6L4R or 4K5B4Q6M4S + + The M3 slider variable has been added and can be measured in inches from either the key or the face of a gutted lock. + */ + + outlines_k = ["A1515", + "1515", + "A1517", + "1517", + "1518", + "1542", + "1543", + "A1638", + "1638", + "1644", + "1655", + "M3"]; + + wardings_k = ["1515", + "1517", + "1518", + "1542", + "1543", + "1638", + "1644", + "1655", + "M3"]; + + outline_param = key_lkup(outlines_k, outlines_v, outline_name); + outline_points = outline_param[0]; + outline_paths = outline_param[1]; + offset = outline_param[2]; + engrave_points = outline_param[3]; + engrave_paths = outline_param[4]; + + warding_points = key_lkup(wardings_k, wardings_v, warding_name); + + cut_locations = [for(i=[0.244, 0.414, 0.584, 0.754, 0.924, 1.094]) i*25.4]; + depth_table = [for(i=[0.272+0.025:-0.025:0.140]) i*25.4]; + angles_k = ["K", "B", "Q", "M", "D", "S", "L", "C", "R"]; + angles_v = [[20, -.7874], [0, -.7874], [-20, -.7874], + [20, .7874], [0, .7874], [-20, .7874], + [20, 0], [0, 0], [-20, 0]]; + + bitting_depth = [for(i=[0:2:len(bitting)-1]) bitting[i]]; + bitting_angle = [for(i=[1:2:len(bitting)-1]) bitting[i]]; + heights = key_code_to_heights(bitting_depth, depth_table); + angles_and_offsets = [for(c=bitting_angle) key_lkup(angles_k, angles_v, c)]; + angles = [for(c=angles_and_offsets) c[0]]; + offsets = [for(c=angles_and_offsets) c[1]]; + + difference() { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + engrave_right_points=engrave_points, + engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations + offsets, + flat=.381, angle=86, // from CW-1012 cutter specs + angles=angles); + m3_slider(slider_depth*25.4); + } +} + +// Defaults +bitting=""; +outline="M3"; +warding="M3"; +slider_depth=0.6; +medeco_m3(bitting, outline, warding, slider_depth); diff --git a/scad/medeco_biaxial.scad b/scad/medeco_biaxial.scad index d471297..8b717f4 100644 --- a/scad/medeco_biaxial.scad +++ b/scad/medeco_biaxial.scad @@ -1,93 +1,93 @@ -use -include - -module medeco_biaxial(bitting="", - outline_name="", - warding_name="") { - - name = "Medeco Biaxial"; - - /* - "A" variants of key outlines indicates 6-pin version. - - Bitting is specified from bow to tip, 1-6, with 1 being the shallowest cut and 6 being the deepest. - - After each number, a letter K,B,Q,L,C,R,M,D,S is specified for the cut angle and offset. - - Example: 2K5B3Q6M3S - - Note: KBQ & MDS Biaxial cuts (Fore & Aft) do not appear to be used in conjunction with LCR Classic cuts(Centered) - - Example: 2K5B3Q6M3S or 2L5C3R6L3R - */ - - outlines_k = ["A1515", - "1515", - "A1517", - "1517", - "1518", - "1542", - "1543", - "A1638", - "1638", - "1644", - "1655"]; - - wardings_k = ["1515", - "1517", - "1518", - "1542", - "1543", - "1638", - "1644", - "1655"]; - - outline_param = key_lkup(outlines_k, outlines_v, outline_name); - outline_points = outline_param[0]; - outline_paths = outline_param[1]; - offset = outline_param[2]; - engrave_points = outline_param[3]; - engrave_paths = outline_param[4]; - - warding_points = key_lkup(wardings_k, wardings_v, warding_name); - - cut_locations = [for(i=[0.244, 0.414, 0.584, 0.754, 0.924, 1.094]) i*25.4]; - depth_table = [for(i=[0.272+0.025:-0.025:0.146]) i*25.4]; - angles_k = ["K", "B", "Q", "M", "D", "S", "L", "C", "R"]; - angles_v = [[20, -.7874], [0, -.7874], [-20, -.7874], - [20, .7874], [0, .7874], [-20, .7874], - [20, 0], [0, 0], [-20, 0]]; - - bitting_depth = [for(i=[0:2:len(bitting)-1]) bitting[i]]; - bitting_angle = [for(i=[1:2:len(bitting)-1]) bitting[i]]; - heights = key_code_to_heights(bitting_depth, depth_table); - angles_and_offsets = [for(c=bitting_angle) key_lkup(angles_k, angles_v, c)]; - angles = [for(c=angles_and_offsets) c[0]]; - offsets = [for(c=angles_and_offsets) c[1]]; - - difference() { - if($children == 0) { - key_blank(outline_points, - warding_points, - outline_paths=outline_paths, - engrave_right_points=engrave_points, - engrave_right_paths=engrave_paths, - engrave_left_points=engrave_points, - engrave_left_paths=engrave_paths, - offset=offset, - plug_diameter=12.7); - } else { - children(0); - } - key_bitting(heights, cut_locations + offsets, - flat=.381, angle=86, // from CW-1012 cutter specs - angles=angles); - } -} - -// Defaults -bitting=""; -outline="1518"; -warding="1518"; -medeco_biaxial(bitting, outline, warding); +use +include + +module medeco_biaxial(bitting="", + outline_name="", + warding_name="") { + + name = "Medeco Biaxial"; + + /* + "A" variants of key outlines indicates 6-pin version. + + Bitting is specified from bow to tip, 1-6, with 1 being the shallowest cut and 6 being the deepest. + + After each number, a letter K,B,Q,L,C,R,M,D,S is specified for the cut angle and offset. + + Example: 2K5B3Q6M3S + + Note: KBQ & MDS Biaxial cuts (Fore & Aft) do not appear to be used in conjunction with LCR Classic cuts(Centered) + + Example: 2K5B3Q6M3S or 2L5C3R6L3R + */ + + outlines_k = ["A1515", + "1515", + "A1517", + "1517", + "1518", + "1542", + "1543", + "A1638", + "1638", + "1644", + "1655"]; + + wardings_k = ["1515", + "1517", + "1518", + "1542", + "1543", + "1638", + "1644", + "1655"]; + + outline_param = key_lkup(outlines_k, outlines_v, outline_name); + outline_points = outline_param[0]; + outline_paths = outline_param[1]; + offset = outline_param[2]; + engrave_points = outline_param[3]; + engrave_paths = outline_param[4]; + + warding_points = key_lkup(wardings_k, wardings_v, warding_name); + + cut_locations = [for(i=[0.244, 0.414, 0.584, 0.754, 0.924, 1.094]) i*25.4]; + depth_table = [for(i=[0.272+0.025:-0.025:0.146]) i*25.4]; + angles_k = ["K", "B", "Q", "M", "D", "S", "L", "C", "R"]; + angles_v = [[20, -.7874], [0, -.7874], [-20, -.7874], + [20, .7874], [0, .7874], [-20, .7874], + [20, 0], [0, 0], [-20, 0]]; + + bitting_depth = [for(i=[0:2:len(bitting)-1]) bitting[i]]; + bitting_angle = [for(i=[1:2:len(bitting)-1]) bitting[i]]; + heights = key_code_to_heights(bitting_depth, depth_table); + angles_and_offsets = [for(c=bitting_angle) key_lkup(angles_k, angles_v, c)]; + angles = [for(c=angles_and_offsets) c[0]]; + offsets = [for(c=angles_and_offsets) c[1]]; + + difference() { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + engrave_right_points=engrave_points, + engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations + offsets, + flat=.381, angle=86, // from CW-1012 cutter specs + angles=angles); + } +} + +// Defaults +bitting=""; +outline="1644"; +warding="1644"; +medeco_biaxial(bitting, outline, warding); \ No newline at end of file diff --git a/scad/medeco_classic.scad b/scad/medeco_classic.scad index 15328ca..19c1d3c 100644 --- a/scad/medeco_classic.scad +++ b/scad/medeco_classic.scad @@ -79,6 +79,6 @@ module medeco_classic(bitting="", // Defaults bitting=""; -outline="1515"; -warding="1515"; +outline="1542"; +warding="1542"; medeco_classic(bitting, outline, warding); diff --git a/scad/fm.scad b/scad/old/fm.scad similarity index 100% rename from scad/fm.scad rename to scad/old/fm.scad diff --git a/scad/schlage_classic.scad b/scad/schlage_classic.scad index 1f8ffb3..02c3f68 100644 --- a/scad/schlage_classic.scad +++ b/scad/schlage_classic.scad @@ -1,82 +1,82 @@ -use -include - -module schlage_classic(bitting="", - outline_name="5-pin", - warding_name="C") { - - name = "Schlage Classic"; - - /* - Bitting is specified from bow to tip, 0-9, with 0 being the shallowest cut and 9 being the deepest. - Example: 25363 - */ - - outlines_k = ["5-pin", - "6-pin"]; - outlines_v = [[outline_5pin_points, outline_5pin_paths, - [-outline_5pin_points[92][0], -outline_5pin_points[98][1]], - engrave_5pin_points, - engrave_5pin_paths], - [outline_6pin_points, outline_6pin_paths, - [-outline_6pin_points[92][0], -outline_6pin_points[98][1]], - engrave_6pin_points, - engrave_6pin_paths]]; - wardings_k = ["C", - "CE", - "E", - "EF", - "F", - "FG", - "H", - "J", - "K", - "L"]; - wardings_v = [warding_c_points, - warding_ce_points, - warding_e_points, - warding_ef_points, - warding_f_points, - warding_fg_points, - warding_h_points, - warding_j_points, - warding_k_points, - warding_l_points]; - - outline_param = key_lkup(outlines_k, outlines_v, outline_name); - outline_points = outline_param[0]; - outline_paths = outline_param[1]; - offset = outline_param[2]; - engrave_points = outline_param[3]; - engrave_paths = outline_param[4]; - - warding_points = key_lkup(wardings_k, wardings_v, warding_name); - - cut_locations = [for(i=[.231, .3872, .5434, .6996, .8558, 1.012]) i*25.4]; - depth_table = [for(i=[0.335:-0.015:0.199]) i*25.4]; - - heights = key_code_to_heights(bitting, depth_table); - - difference() { - if($children == 0) { - key_blank(outline_points, - warding_points, - outline_paths=outline_paths, - engrave_right_points=engrave_points, - engrave_right_paths=engrave_paths, - engrave_left_points=engrave_points, - engrave_left_paths=engrave_paths, - offset=offset, - plug_diameter=12.7); - } else { - children(0); - } - key_bitting(heights, cut_locations, .7874); - } -} - -// Defaults -bitting=""; -outline="5-pin"; -warding="C"; -schlage_classic(bitting, outline, warding); +use +include + +module schlage_classic(bitting="", + outline_name="5-pin", + warding_name="C") { + + name = "Schlage Classic"; + + /* + Bitting is specified from bow to tip, 0-9, with 0 being the shallowest cut and 9 being the deepest. + Example: 25363 + */ + + outlines_k = ["5-pin", + "6-pin"]; + outlines_v = [[outline_5pin_points, outline_5pin_paths, + [-outline_5pin_points[92][0], -outline_5pin_points[98][1]], + engrave_5pin_points, + engrave_5pin_paths], + [outline_6pin_points, outline_6pin_paths, + [-outline_6pin_points[92][0], -outline_6pin_points[98][1]], + engrave_6pin_points, + engrave_6pin_paths]]; + wardings_k = ["C", + "CE", + "E", + "EF", + "F", + "FG", + "H", + "J", + "K", + "L"]; + wardings_v = [warding_c_points, + warding_ce_points, + warding_e_points, + warding_ef_points, + warding_f_points, + warding_fg_points, + warding_h_points, + warding_j_points, + warding_k_points, + warding_l_points]; + + outline_param = key_lkup(outlines_k, outlines_v, outline_name); + outline_points = outline_param[0]; + outline_paths = outline_param[1]; + offset = outline_param[2]; + engrave_points = outline_param[3]; + engrave_paths = outline_param[4]; + + warding_points = key_lkup(wardings_k, wardings_v, warding_name); + + cut_locations = [for(i=[.231, .3872, .5434, .6996, .8558, 1.012]) i*25.4]; + depth_table = [for(i=[0.335:-0.015:0.199]) i*25.4]; + + heights = key_code_to_heights(bitting, depth_table); + + difference() { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + engrave_right_points=engrave_points, + engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations, .7874); + } +} + +// Defaults +bitting=""; +outline="5-pin"; +warding="C"; +schlage_classic(bitting, outline, warding); \ No newline at end of file diff --git a/scad/schlage_primus.scad b/scad/schlage_primus.scad index 67799ad..8d80df3 100644 --- a/scad/schlage_primus.scad +++ b/scad/schlage_primus.scad @@ -1,128 +1,128 @@ -use -include - -module side_bit_milling(cut_locations, bitting="") { - sbm_cut_locations = [for(i=[0:len(cut_locations)-2]) 0.5 * (cut_locations[i] + cut_locations[i+1])]; - - sbm_offsets_mil = [[], [-32, 48], [-32, 24], [0, 60], [0, 36], [32, 48], [32, 24]]; - sbm_offsets = [for(p=sbm_offsets_mil) [for(e=p) e * 0.0254]]; - sbm_angle = 120; - sbm_max_height = 140 * 0.0254; - sbm_cutter_radius= 29 * 0.0254; - sbm_dist = 5; - sbm_eps = 0.1; - sbm_on_ramp = 29; - - heights = key_code_to_heights(bitting, sbm_offsets); - - rotate(-90, [0, 1, 0]) rotate(-90, [0, 0, 1]) - linear_extrude(height=sbm_dist) - minkowski() { - union() { - for(i=key_enum(heights)) { - translate([sbm_cut_locations[i], 0]) - polygon([[heights[i][0], heights[i][1] + sbm_cutter_radius], - [tan(0.5 * sbm_angle) * (sbm_max_height-heights[i][1]-2*sbm_cutter_radius), sbm_max_height - sbm_cutter_radius], - [-tan(0.5 * sbm_angle) * (sbm_max_height-heights[i][1]-2*sbm_cutter_radius), sbm_max_height - sbm_cutter_radius]]); - } - translate([sbm_on_ramp + sbm_cutter_radius, 0]) - polygon([[0, 0], - [tan(0.5 * sbm_angle) * (sbm_max_height-2*sbm_cutter_radius), sbm_max_height - sbm_cutter_radius], - [-tan(0.5 * sbm_angle) * (sbm_max_height-2*sbm_cutter_radius), sbm_max_height - sbm_cutter_radius]]); - polygon([[sbm_cut_locations[0], sbm_max_height - sbm_cutter_radius], - [sbm_on_ramp, sbm_max_height - sbm_cutter_radius], - [sbm_on_ramp, sbm_max_height - sbm_cutter_radius - sbm_eps], - [sbm_cut_locations[0], sbm_max_height - sbm_cutter_radius - sbm_eps]]); - } - circle(r=sbm_cutter_radius, center=true, $fn=$fn ? 4*$fn : 48); - } -} - -module schlage_primus(bitting="", - outline_name="6-pin", - warding_name="CP") { - - name = "Schlage Primus Classic"; - - /* - Bitting is specified from bow to tip, 0-9, with 0 being the shallowest cut and 9 being the deepest. - - Then, side-bit milling is specified from bow to tip, 1-6. - - A dash separates the two. - - Example: 253636-24436 - */ - - // TODO is 5-pin primus a thing?? - - outlines_k = ["6-pin"]; - outlines_v = [[outline_6pin_points, outline_6pin_paths, - [-outline_6pin_points[92][0], -outline_6pin_points[98][1]], - engrave_6pin_points, - engrave_6pin_paths]]; - - // TODO add primus keyways - - wardings_k = ["CP", - "CEP", - "EP", - "EFP", - "FP", - "FGP", - "HP", - "JP", - "LP"]; - wardings_v = [warding_cp_points, - warding_cep_points, - warding_ep_points, - warding_efp_points, - warding_fp_points, - warding_fgp_points, - warding_hp_points, - warding_jp_points, - warding_lp_points]; - - outline_param = key_lkup(outlines_k, outlines_v, outline_name); - outline_points = outline_param[0]; - outline_paths = outline_param[1]; - offset = outline_param[2]; - engrave_points = outline_param[3]; - engrave_paths = outline_param[4]; - - warding_points = key_lkup(wardings_k, wardings_v, warding_name); - - cut_locations = [for(i=[.231, .3872, .5434, .6996, .8558, 1.012]) i*25.4]; - depth_table = [for(i=[0.335:-0.015:0.199]) i*25.4]; - - bitting_list = key_split_on_dash(bitting); - top_bitting = bitting_list[0]; - side_bitting = len(bitting_list) > 1 ? bitting_list[1] : ""; - - heights = key_code_to_heights(top_bitting, depth_table); - - - difference() { - if($children == 0) { - key_blank(outline_points, - warding_points, - outline_paths=outline_paths, - engrave_right_points=engrave_points, - engrave_right_paths=engrave_paths, - engrave_left_points=engrave_points, - engrave_left_paths=engrave_paths, - offset=offset, - plug_diameter=12.7); - } else { - children(0); - } - key_bitting(heights, cut_locations, .7874); - side_bit_milling(cut_locations, side_bitting); - } -} - -// Defaults -bitting=""; -outline="6-pin"; -warding="CP"; -schlage_primus(bitting, outline, warding); +use +include + +module side_bit_milling(cut_locations, bitting="") { + sbm_cut_locations = [for(i=[0:len(cut_locations)-2]) 0.5 * (cut_locations[i] + cut_locations[i+1])]; + + sbm_offsets_mil = [[], [-32, 48], [-32, 24], [0, 60], [0, 36], [32, 48], [32, 24]]; + sbm_offsets = [for(p=sbm_offsets_mil) [for(e=p) e * 0.0254]]; + sbm_angle = 120; + sbm_max_height = 140 * 0.0254; + sbm_cutter_radius= 29 * 0.0254; + sbm_dist = 5; + sbm_eps = 0.1; + sbm_on_ramp = 29; + + heights = key_code_to_heights(bitting, sbm_offsets); + + rotate(-90, [0, 1, 0]) rotate(-90, [0, 0, 1]) + linear_extrude(height=sbm_dist) + minkowski() { + union() { + for(i=key_enum(heights)) { + translate([sbm_cut_locations[i], 0]) + polygon([[heights[i][0], heights[i][1] + sbm_cutter_radius], + [tan(0.5 * sbm_angle) * (sbm_max_height-heights[i][1]-2*sbm_cutter_radius), sbm_max_height - sbm_cutter_radius], + [-tan(0.5 * sbm_angle) * (sbm_max_height-heights[i][1]-2*sbm_cutter_radius), sbm_max_height - sbm_cutter_radius]]); + } + translate([sbm_on_ramp + sbm_cutter_radius, 0]) + polygon([[0, 0], + [tan(0.5 * sbm_angle) * (sbm_max_height-2*sbm_cutter_radius), sbm_max_height - sbm_cutter_radius], + [-tan(0.5 * sbm_angle) * (sbm_max_height-2*sbm_cutter_radius), sbm_max_height - sbm_cutter_radius]]); + polygon([[sbm_cut_locations[0], sbm_max_height - sbm_cutter_radius], + [sbm_on_ramp, sbm_max_height - sbm_cutter_radius], + [sbm_on_ramp, sbm_max_height - sbm_cutter_radius - sbm_eps], + [sbm_cut_locations[0], sbm_max_height - sbm_cutter_radius - sbm_eps]]); + } + circle(r=sbm_cutter_radius, center=true, $fn=$fn ? 4*$fn : 48); + } +} + +module schlage_primus(bitting="", + outline_name="6-pin", + warding_name="CP") { + + name = "Schlage Primus Classic"; + + /* + Bitting is specified from bow to tip, 0-9, with 0 being the shallowest cut and 9 being the deepest. + + Then, side-bit milling is specified from bow to tip, 1-6. + + A dash separates the two. + + Example: 253636-24436 + */ + + // TODO is 5-pin primus a thing?? + + outlines_k = ["6-pin"]; + outlines_v = [[outline_6pin_points, outline_6pin_paths, + [-outline_6pin_points[92][0], -outline_6pin_points[98][1]], + engrave_6pin_points, + engrave_6pin_paths]]; + + // TODO add primus keyways + + wardings_k = ["CP", + "CEP", + "EP", + "EFP", + "FP", + "FGP", + "HP", + "JP", + "LP"]; + wardings_v = [warding_cp_points, + warding_cep_points, + warding_ep_points, + warding_efp_points, + warding_fp_points, + warding_fgp_points, + warding_hp_points, + warding_jp_points, + warding_lp_points]; + + outline_param = key_lkup(outlines_k, outlines_v, outline_name); + outline_points = outline_param[0]; + outline_paths = outline_param[1]; + offset = outline_param[2]; + engrave_points = outline_param[3]; + engrave_paths = outline_param[4]; + + warding_points = key_lkup(wardings_k, wardings_v, warding_name); + + cut_locations = [for(i=[.231, .3872, .5434, .6996, .8558, 1.012]) i*25.4]; + depth_table = [for(i=[0.335:-0.015:0.199]) i*25.4]; + + bitting_list = key_split_on_dash(bitting); + top_bitting = bitting_list[0]; + side_bitting = len(bitting_list) > 1 ? bitting_list[1] : ""; + + heights = key_code_to_heights(top_bitting, depth_table); + + + difference() { + if($children == 0) { + key_blank(outline_points, + warding_points, + outline_paths=outline_paths, + engrave_right_points=engrave_points, + engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, + offset=offset, + plug_diameter=12.7); + } else { + children(0); + } + key_bitting(heights, cut_locations, .7874); + side_bit_milling(cut_locations, side_bitting); + } +} + +// Defaults +bitting=""; +outline="6-pin"; +warding="CP"; +schlage_primus(bitting, outline, warding); \ No newline at end of file diff --git a/web/index.html b/web/index.html index 9fa2cc9..1314ce9 100644 --- a/web/index.html +++ b/web/index.html @@ -8,6 +8,39 @@ +
@@ -24,6 +57,19 @@

keygen

Warding
Bitting
+ + + +
@@ -40,6 +86,10 @@

keygen

Download STL +
+
Keyway
+
No preview
+