diff --git a/fm.gen.scad b/fm.gen.scad new file mode 100644 index 0000000..681481d --- /dev/null +++ b/fm.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 = [[-26.491901, 12.666803], [-27.455835, 12.642298], [-28.393640, 12.565120], [-29.281167, 12.434385], [-30.094268, 12.249212], [-30.808797, 12.008719], [-31.400604, 11.712023], [-31.642941, 11.542324], [-31.845543, 11.358243], [-32.005390, 11.159670], [-32.119464, 10.946496], [-32.357897, 10.154615], [-32.644061, 8.949666], [-33.130257, 6.589655], [-33.217722, 6.206573], [-33.323411, 5.892542], [-33.447846, 5.638731], [-33.591549, 5.436311], [-33.755040, 5.276450], [-33.938841, 5.150317], [-34.369457, 4.963915], [-34.824548, 4.822846], [-35.254542, 4.651464], [-35.659012, 4.451709], [-36.037532, 4.225522], [-36.389675, 3.974841], [-36.715015, 3.701607], [-37.013126, 3.407759], [-37.283582, 3.095238], [-37.525956, 2.765983], [-37.739821, 2.421934], [-37.924753, 2.065032], [-38.080323, 1.697215], [-38.206107, 1.320424], [-38.301677, 0.936599], [-38.366607, 0.547680], [-38.400472, 0.155606], [-38.402844, -0.237682], [-38.373297, -0.630245], [-38.311406, -1.020144], [-38.216743, -1.405437], [-38.088883, -1.784185], [-37.927399, -2.154448], [-37.731865, -2.514287], [-37.501854, -2.861761], [-37.236941, -3.194931], [-36.936698, -3.511856], [-36.600700, -3.810598], [-36.228520, -4.089215], [-35.819732, -4.345768], [-35.373910, -4.578318], [-34.890627, -4.784924], [-34.369457, -4.963646], [-33.938841, -5.150129], [-33.755040, -5.276344], [-33.591549, -5.436300], [-33.447846, -5.638815], [-33.323411, -5.892708], [-33.217722, -6.206798], [-33.130257, -6.589902], [-32.644061, -8.949913], [-32.357897, -10.154862], [-32.119464, -10.946743], [-32.005391, -11.159915], [-31.845549, -11.358480], [-31.642955, -11.542550], [-31.400627, -11.712235], [-30.808841, -12.008895], [-30.094335, -12.249346], [-29.281252, -12.434475], [-28.393735, -12.565170], [-27.455927, -12.642317], [-26.491971, -12.666803], [-25.526010, -12.639516], [-24.582188, -12.561342], [-23.684648, -12.433169], [-22.857533, -12.255882], [-22.124985, -12.030370], [-21.511149, -11.757519], [-21.256292, -11.603619], [-21.040166, -11.438216], [-20.865791, -11.261423], [-20.736182, -11.073349], [-20.601208, -10.718538], [-20.454588, -10.158724], [-20.157883, -8.683267], [-19.908997, -7.165329], [-19.770865, -6.123264], [-19.710034, -5.801322], [-19.590796, -5.476294], [-19.415369, -5.162365], [-19.185972, -4.873718], [-18.904824, -4.624537], [-18.574142, -4.429008], [-18.196146, -4.301313], [-17.773055, -4.255637], [16.640349, -4.260346], [16.795783, -4.244327], [16.949867, -4.198666], [17.230100, -4.033042], [17.433273, -3.792727], [17.491034, -3.653701], [17.511614, -3.506972], [17.511614, -1.017711], [18.258855, -1.017711], [18.426094, -0.991218], [18.559303, -0.919522], [18.662098, -0.814300], [18.738094, -0.687229], [18.824156, -0.414247], [18.846416, -0.193989], [18.846416, 1.025573], [15.733945, 4.121698], [-17.678488, 4.121698], [-17.954149, 4.138658], [-18.240451, 4.197719], [-18.530058, 4.311154], [-18.815631, 4.491233], [-19.089836, 4.750231], [-19.345334, 5.100419], [-19.574789, 5.554069], [-19.770865, 6.123454], [-19.933997, 6.794268], [-20.073386, 7.520568], [-20.304193, 8.998869], [-20.509793, 10.276855], [-20.617676, 10.752760], [-20.736698, 11.073022], [-20.866301, 11.261099], [-21.040661, 11.437902], [-21.256761, 11.603317], [-21.511586, 11.757234], [-22.125339, 12.030127], [-22.857789, 12.255686], [-23.684803, 12.433019], [-24.582248, 12.561232], [-25.525991, 12.639431], [-26.491901, 12.666724], [-33.351430, 2.756298], [-32.794463, 2.700140], [-32.275702, 2.539099], [-31.806260, 2.284290], [-31.397250, 1.946823], [-31.059783, 1.537813], [-30.804974, 1.068371], [-30.643934, 0.549610], [-30.587775, -0.007357], [-30.643933, -0.564325], [-30.804973, -1.083087], [-31.059783, -1.552529], [-31.397249, -1.961540], [-31.806259, -2.299007], [-32.275701, -2.553816], [-32.794462, -2.714857], [-33.351430, -2.771015], [-33.908398, -2.714857], [-34.427160, -2.553816], [-34.896603, -2.299007], [-35.305613, -1.961540], [-35.643080, -1.552529], [-35.897890, -1.083087], [-36.058930, -0.564325], [-36.115088, -0.007357], [-36.058930, 0.549611], [-35.897890, 1.068372], [-35.643080, 1.537814], [-35.305613, 1.946824], [-34.896603, 2.284291], [-34.427160, 2.539100], [-33.908398, 2.700140], [-33.351430, 2.756298]]; +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, 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], [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]]; + +engrave_points = [[-26.493452, 11.587801], [-27.399075, 11.563925], [-28.273193, 11.490936], [-29.085556, 11.371552], [-29.805911, 11.208494], [-30.384013, 11.002980], [-30.792930, 10.788463], [-31.037387, 10.616013], [-31.122109, 10.536701], [-31.298147, 9.913920], [-31.590816, 8.714590], [-32.069339, 6.392252], [-32.179154, 5.914089], [-32.327563, 5.478407], [-32.522689, 5.085590], [-32.772654, 4.736021], [-33.070766, 4.446061], [-33.391868, 4.224386], [-33.716394, 4.059832], [-34.024776, 3.941237], [-34.090922, 3.921605], [-34.466289, 3.805635], [-34.818884, 3.666020], [-35.455470, 3.322111], [-36.000093, 2.902405], [-36.452169, 2.419427], [-36.811111, 1.885701], [-37.076335, 1.313755], [-37.247253, 0.716112], [-37.323281, 0.105300], [-37.306941, -0.506578], [-37.195501, -1.108770], [-36.980499, -1.690798], [-36.831516, -1.970975], [-36.653469, -2.242181], [-36.445298, -2.503106], [-36.205946, -2.752439], [-35.934355, -2.988872], [-35.629467, -3.211093], [-35.290223, -3.417793], [-34.915566, -3.607661], [-34.504438, -3.779389], [-34.055780, -3.931665], [-34.024776, -3.942010], [-33.716392, -4.060605], [-33.391865, -4.225158], [-33.070764, -4.446832], [-32.772654, -4.736792], [-32.522690, -5.086367], [-32.327564, -5.479184], [-32.179155, -5.914862], [-32.069339, -6.393023], [-31.590816, -8.715361], [-31.298088, -9.916039], [-31.122109, -10.539539], [-31.037617, -10.618965], [-30.793815, -10.791430], [-30.385627, -11.005898], [-29.807980, -11.211334], [-29.087454, -11.374234], [-28.274437, -11.493394], [-27.399560, -11.566220], [-26.493452, -11.590122], [-25.584589, -11.563783], [-24.700729, -11.490079], [-23.871421, -11.372216], [-23.126216, -11.213401], [-22.529678, -11.016339], [-22.084878, -10.805646], [-21.693746, -10.563311], [-21.505127, -9.914773], [-21.219872, -8.494704], [-20.975425, -6.995169], [-20.844701, -6.017852], [-20.751783, -5.510627], [-20.574346, -5.022735], [-20.313366, -4.561759], [-19.969819, -4.135281], [-20.160649, -3.673034], [-20.322976, -3.190040], [-20.456475, -2.690014], [-20.560821, -2.176673], [-20.635691, -1.653731], [-20.680760, -1.124906], [-20.695703, -0.593914], [-20.680196, -0.064470], [-20.633914, 0.459710], [-20.556534, 0.974909], [-20.447731, 1.477411], [-20.307181, 1.963501], [-20.134558, 2.429462], [-19.929539, 2.871578], [-19.691800, 3.286133], [-19.421015, 3.669412], [-19.648771, 3.843071], [-19.862334, 4.045145], [-20.244301, 4.532916], [-20.561762, 5.129470], [-20.809561, 5.831555], [-20.990494, 6.570479], [-21.138552, 7.337682], [-21.372317, 8.839640], [-21.569204, 10.071606], [-21.695812, 10.560982], [-22.086697, 10.803477], [-22.530648, 11.013757], [-23.126216, 11.210553], [-23.871178, 11.369419], [-24.700586, 11.487320], [-25.584618, 11.561019], [-26.493452, 11.587274], [-33.376703, 3.627563], [-33.023204, 3.610072], [-32.675691, 3.558225], [-32.336511, 3.472993], [-32.008008, 3.355347], [-31.692528, 3.206259], [-31.392417, 3.026700], [-31.110021, 2.817642], [-30.847683, 2.580056], [-30.610098, 2.317719], [-30.401040, 2.035322], [-30.221481, 1.735211], [-30.072393, 1.419732], [-29.954747, 1.091229], [-29.869515, 0.752049], [-29.817668, 0.404536], [-29.800177, 0.051036], [-29.818680, -0.314609], [-29.872910, -0.669689], [-29.961068, -1.012406], [-30.081356, -1.340964], [-30.231977, -1.653564], [-30.411135, -1.948410], [-30.617030, -2.223705], [-30.847866, -2.477650], [-31.101844, -2.708449], [-31.377169, -2.914305], [-31.672040, -3.093420], [-31.984663, -3.243996], [-32.313238, -3.364237], [-32.655968, -3.452345], [-33.011056, -3.506523], [-33.376703, -3.524974], [-33.742312, -3.506474], [-34.097358, -3.452255], [-34.440046, -3.364113], [-34.768577, -3.243847], [-35.081156, -3.093252], [-35.375985, -2.914126], [-35.651267, -2.708265], [-35.905206, -2.477467], [-36.136004, -2.223528], [-36.341864, -1.948246], [-36.520990, -1.653417], [-36.671585, -1.340838], [-36.791851, -1.012306], [-36.879992, -0.669619], [-36.934211, -0.314572], [-36.952711, 0.051036], [-36.934260, 0.416684], [-36.880082, 0.771771], [-36.791974, 1.114501], [-36.671733, 1.443076], [-36.521157, 1.755698], [-36.342042, 2.050570], [-36.136187, 2.325894], [-35.905388, 2.579873], [-35.651443, 2.810709], [-35.376149, 3.016604], [-35.081303, 3.195761], [-34.768703, 3.346383], [-34.440145, 3.466671], [-34.097428, 3.554829], [-33.742348, 3.609059], [-33.376703, 3.627563], [-33.376703, 3.627563], [-21.695812, 10.560990], [-21.682901, 10.552206], [-21.695812, 10.560990], [-21.693696, -10.563303], [-21.680784, -10.555048], [-21.693696, -10.563303]]; +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, 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], [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, 118, 117, 116, 115, 114, 113, 112, 111], [177, 178, 179], [180, 181, 182]]; + +warding_points = [[37.339859, 4.245611], [37.472727, 2.251504], [37.512067, 1.168717], [37.505733, 0.794797], [37.474736, 0.604492], [37.061276, 0.121178], [36.421570, -0.531875], [36.421570, -1.397454], [37.085114, -2.176883], [37.333169, -2.508262], [37.429259, -2.704869], [37.407885, -3.017869], [37.382578, -3.141792], [37.340894, -3.220600], [37.109709, -3.312192], [36.930067, -3.353408], [36.806041, -4.260328], [38.402844, -4.260328], [38.402844, -2.916742], [37.682765, -2.015049], [37.412102, -1.633852], [37.277333, -1.379367], [37.221271, -1.090402], [37.214576, -0.808632], [37.255020, -0.535762], [37.340378, -0.273491], [37.475470, -0.043768], [37.726839, 0.312924], [38.402844, 1.203421], [38.402844, 4.245611]]; +warding_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]]; + +//polygon(points=outline_points, paths=outline_paths); +//polygon(points=engrave_points, paths=engrave_paths); +//polygon(points=warding_points, paths=warding_paths); diff --git a/fm.scad b/fm.scad new file mode 100644 index 0000000..ff4a2b7 --- /dev/null +++ b/fm.scad @@ -0,0 +1,27 @@ +use +include + +bitting_code = "1526985"; + +// The FM keyblank can be used in many key systems +// This is the depth table for Best A2 system + +cut_locations = [for(i=[.080, .230, .380, .530, .680, .830, .980]) -i*25.4]; + +depth_table = [for(i=[0.318:-0.0125:0.205]) i*25.4]; + +heights = key_code_to_heights(bitting_code, depth_table); + +difference() { + 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=[-outline_points[103][0], -outline_points[96][1]], + milling_offset=30, + plug_diameter=10.8712); + key_bitting(heights, cut_locations, .7874); +} \ No newline at end of file diff --git a/fm.svg b/fm.svg new file mode 100644 index 0000000..20ff9e6 --- /dev/null +++ b/fm.svg @@ -0,0 +1,95 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/keygen.scad b/keygen.scad index 5b11fe5..514c9d5 100644 --- a/keygen.scad +++ b/keygen.scad @@ -13,7 +13,7 @@ module key_outline(outline_points, thickness, outline_paths=undef) { } module key_blade(warding, plug_diameter=0) { - // Draw the blade to infinity in -Y + // Draw the blade to infinity in Y // optionally intersected with the plug cylinder // to round the bottom intersection() { @@ -25,7 +25,7 @@ module key_blade(warding, plug_diameter=0) { if(plug_diameter > 0) { // Draw infinite cylinder in -Y translate([0, 0, 0.5*plug_diameter]) rotate(90, [1, 0, 0]) - cylinder(r=0.5*plug_diameter, h=$inf, $fn=$fn ? 4*$fn : 48); + cylinder(r=0.5*plug_diameter, h=$inf, center=true, $fn=$fn ? 4*$fn : 48); } } } @@ -57,34 +57,35 @@ module key_warding_cutter(warding, blade_height, cutter_radius, left) { } } -module key_emboss(emboss_points, emboss_depth, left, thickness, emboss_paths=undef) { +module key_engrave(engrave_points, engrave_depth, left, thickness, engrave_paths=undef) { translate([(left ? -1 : 1) * 0.5*thickness, 0, 0]) rotate(-90, [0, 1, 0]) rotate(-90, [0, 0, 1]) // Translate and rotate into the correct soot - linear_extrude(height=2*emboss_depth, center=true) // Extrude the key outline - polygon(points=emboss_points, paths=emboss_paths); // Draw the outline + linear_extrude(height=2*engrave_depth, center=true) // Extrude the key outline + polygon(points=engrave_points, paths=engrave_paths); // Draw the outline } module key_blank(outline_points, warding, outline_paths=undef, - emboss_right_points=[], - emboss_right_paths=undef, - emboss_left_points=[], - emboss_left_paths=undef, + engrave_right_points=[], + engrave_right_paths=undef, + engrave_left_points=[], + engrave_left_paths=undef, bow_thickness=0, - emboss_depth=.1, + engrave_depth=.1, plug_diameter=0, offset=[0, 0], - cutter_radius=18) { + cutter_radius=18, + milling_offset=0) { // Find the bounding box of the warding warding_min = [min([for(e=warding) e[0]]), min([for(e=warding) e[1]])]; warding_max = [max([for(e=warding) e[0]]), max([for(e=warding) e[1]])]; // Apply the given offset to the outline, - // holes, and emboss + // holes, and engrave outline_adj = key_move(outline_points, offset); - emboss_left_adj = key_move(emboss_left_points, offset); - emboss_right_adj = key_move(emboss_right_points, offset); + engrave_left_adj = key_move(engrave_left_points, offset); + engrave_right_adj = key_move(engrave_right_points, offset); // Move the warding profile // so that it is centered in X @@ -113,7 +114,7 @@ module key_blank(outline_points, // when the intersection happens union() { // Fill +Y half-space - translate([0, $inf/2, 0]) + translate([0, $inf/2+milling_offset, 0]) cube([$inf, $inf, $inf], center=true); key_blade(warding_adj, plug_diameter); @@ -121,13 +122,16 @@ module key_blank(outline_points, } // Draw the milling wheels that cut the warding if(cutter_radius != 0) { - key_warding_cutter(warding_adj, blade_height, cutter_radius, false); - key_warding_cutter(warding_adj, blade_height, cutter_radius, true); + translate([0, milling_offset, 0]) + union() { + key_warding_cutter(warding_adj, blade_height, cutter_radius, false); + key_warding_cutter(warding_adj, blade_height, cutter_radius, true); + } } - // Draw the embossing - key_emboss(emboss_right_adj, emboss_depth, false, thickness, emboss_right_paths); - key_emboss(emboss_left_adj, emboss_depth, true, thickness, emboss_left_paths); + // Draw the engraveing + key_engrave(engrave_right_adj, engrave_depth, false, thickness, engrave_right_paths); + key_engrave(engrave_left_adj, engrave_depth, true, thickness, engrave_left_paths); } } @@ -158,4 +162,4 @@ module key_bitting(heights, key_bitting_cutter(flat, angle, cutter_height); } } -} \ No newline at end of file +} diff --git a/sc4.gen.scad b/sc4.gen.scad index bf1903c..c68b9ed 100644 --- a/sc4.gen.scad +++ b/sc4.gen.scad @@ -7,12 +7,12 @@ outline_points = [[-12.048077, -5.717807], [-12.088247, -5.881416], [-12.195456, -6.018707], [-12.349756, -6.113179], [-12.531197, -6.148337], [-16.188977, -6.238937], [-16.358242, -6.271735], [-16.558561, -6.367007], [-16.728233, -6.520066], [-16.782295, -6.616801], [-16.805557, -6.726227], [-16.830970, -6.873712], [-16.887297, -7.003340], [-17.059163, -7.206795], [-17.254102, -7.332136], [-17.405057, -7.374907], [-19.734005, -7.386507], [-19.852107, -7.407706], [-19.978884, -7.462960], [-20.190575, -7.629437], [-20.639656, -8.095852], [-21.005688, -8.358263], [-21.312745, -8.515173], [-21.584899, -8.665087], [-21.748442, -8.825258], [-21.852912, -9.026556], [-21.914786, -9.256604], [-21.950541, -9.503027], [-22.009604, -9.995495], [-22.065866, -10.216789], [-22.161920, -10.404957], [-22.284901, -10.538816], [-22.410320, -10.616126], [-22.664611, -10.665268], [-22.917078, -10.680729], [-23.040218, -10.715938], [-23.160009, -10.790857], [-23.261967, -10.932990], [-23.343531, -11.141588], [-23.513154, -11.652872], [-23.635053, -11.902903], [-23.804236, -12.114093], [-24.037623, -12.260113], [-24.183681, -12.300457], [-24.352135, -12.314637], [-26.715326, -12.314637], [-27.062806, -12.267809], [-27.185912, -12.213166], [-27.280510, -12.141164], [-27.399922, -11.955464], [-27.452528, -11.731468], [-27.483260, -11.251625], [-27.524357, -11.037299], [-27.624588, -10.867717], [-27.759582, -10.761486], [-27.901957, -10.694943], [-28.199008, -10.628007], [-28.496059, -10.561070], [-28.638434, -10.494527], [-28.773427, -10.388297], [-28.923218, -10.180245], [-28.993477, -9.956389], [-29.010715, -9.721997], [-29.001442, -9.482337], [-28.992169, -9.242676], [-29.009407, -9.008284], [-29.079665, -8.784428], [-29.229456, -8.576377], [-29.365388, -8.469483], [-29.496659, -8.414771], [-29.751429, -8.392302], [-30.006199, -8.369787], [-30.137469, -8.315019], [-30.273401, -8.208047], [-30.416720, -8.000376], [-30.490156, -7.755972], [-30.514440, -7.487233], [-30.510304, -7.206558], [-30.499698, -6.658990], [-30.534692, -6.416895], [-30.624192, -6.212457], [-30.731620, -6.095522], [-30.863549, -6.010702], [-31.166270, -5.908069], [-31.463071, -5.845895], [-31.684671, -5.765517], [-35.921242, -3.300826], [-36.244445, -3.051116], [-36.420288, -2.790954], [-36.493206, -2.517078], [-36.507637, -2.226226], [-36.507626, 2.325254], [-36.493194, 2.616105], [-36.420275, 2.889981], [-36.244433, 3.150143], [-35.921231, 3.399854], [-31.684660, 5.864544], [-31.463060, 5.944925], [-31.166259, 6.007104], [-30.863538, 6.109737], [-30.731609, 6.194555], [-30.624181, 6.311484], [-30.534681, 6.515922], [-30.499687, 6.758017], [-30.510293, 7.305585], [-30.514429, 7.586260], [-30.490145, 7.854999], [-30.416709, 8.099403], [-30.273390, 8.307074], [-30.137458, 8.414036], [-30.006188, 8.468780], [-29.751418, 8.491239], [-29.496648, 8.513697], [-29.365377, 8.568441], [-29.229445, 8.675404], [-29.079654, 8.883455], [-29.009395, 9.107311], [-28.992158, 9.341703], [-29.001431, 9.581364], [-29.010703, 9.821024], [-28.993466, 10.055416], [-28.923207, 10.279272], [-28.773416, 10.487324], [-28.638423, 10.593554], [-28.496048, 10.660097], [-28.198997, 10.727034], [-27.901946, 10.793970], [-27.759571, 10.860513], [-27.624577, 10.966744], [-27.524346, 11.136326], [-27.483249, 11.350652], [-27.452517, 11.830495], [-27.399911, 12.054491], [-27.280499, 12.240191], [-27.185901, 12.312193], [-27.062795, 12.366836], [-26.715315, 12.413664], [-24.352124, 12.413664], [-24.183670, 12.399484], [-24.037612, 12.359140], [-23.804225, 12.213120], [-23.635042, 12.001930], [-23.513143, 11.751899], [-23.343520, 11.240615], [-23.261956, 11.032017], [-23.159998, 10.889884], [-23.040207, 10.814964], [-22.917067, 10.779753], [-22.664600, 10.764287], [-22.410309, 10.715144], [-22.284890, 10.637837], [-22.161909, 10.503984], [-22.065856, 10.315816], [-22.009593, 10.094522], [-21.950531, 9.602053], [-21.914777, 9.355631], [-21.852903, 9.125583], [-21.748433, 8.924285], [-21.584888, 8.764114], [-21.312734, 8.614200], [-21.005677, 8.457290], [-20.639645, 8.194879], [-20.190564, 7.728464], [-19.978874, 7.561987], [-19.852097, 7.506733], [-19.733994, 7.485534], [-17.405047, 7.473934], [-17.254092, 7.431163], [-17.059153, 7.305822], [-16.887287, 7.102367], [-16.830960, 6.972739], [-16.805547, 6.825254], [-16.782288, 6.715828], [-16.728227, 6.619093], [-16.558555, 6.466033], [-16.358233, 6.370762], [-16.188967, 6.337964], [-12.531187, 6.247364], [-12.349746, 6.212206], [-12.195446, 6.117733], [-12.088237, 5.980443], [-12.048067, 5.816834], [-12.026867, 4.535244], [13.592243, 4.535644], [18.673063, -0.565658], [18.673063, -1.863596], [16.250473, -4.181356], [-12.047637, -4.177356], [-28.090168, -3.642437], [-28.098526, -3.881257], [-28.136605, -4.035677], [-28.209060, -4.143618], [-28.320547, -4.243007], [-28.526194, -4.324325], [-28.829918, -4.349512], [-29.159551, -4.313671], [-29.442927, -4.211907], [-33.529647, -1.914227], [-33.793045, -1.743630], [-33.987570, -1.566928], [-34.108067, -1.373863], [-34.149378, -1.154179], [-34.149367, 1.253165], [-34.108056, 1.472850], [-33.987559, 1.665915], [-33.793034, 1.842617], [-33.529636, 2.013213], [-29.442916, 4.310893], [-29.159540, 4.412663], [-28.829907, 4.448506], [-28.526183, 4.423318], [-28.320536, 4.341993], [-28.209053, 4.242605], [-28.136602, 4.134663], [-28.098524, 3.980244], [-28.090157, 3.741423]]; 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, 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, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187], [215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188]]; -emboss_points = [[-17.046637, 12.700313], [-17.046637, -12.743046], [-16.781007, -12.743046], [-16.781007, 12.700313], [-20.750369, 12.718243], [-20.750369, -12.725116], [-20.484744, -12.725116], [-20.484744, 12.718242], [-22.189041, 12.701703], [-22.189041, -12.741646], [-21.923416, -12.741646], [-21.923416, 12.701705], [-23.627712, 12.743043], [-23.627712, -12.700316], [-23.362087, -12.700316], [-23.362087, 12.743047], [-27.819705, 12.734743], [-27.819705, -12.708576], [-27.554080, -12.708576], [-27.554080, 12.734779], [-29.369184, 12.723873], [-29.369184, -12.719486], [-29.103559, -12.719486], [-29.103559, 12.723905]]; -emboss_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]]; +engrave_points = [[-17.046637, 12.700313], [-17.046637, -12.743046], [-16.781007, -12.743046], [-16.781007, 12.700313], [-20.750369, 12.718243], [-20.750369, -12.725116], [-20.484744, -12.725116], [-20.484744, 12.718242], [-22.189041, 12.701703], [-22.189041, -12.741646], [-21.923416, -12.741646], [-21.923416, 12.701705], [-23.627712, 12.743043], [-23.627712, -12.700316], [-23.362087, -12.700316], [-23.362087, 12.743047], [-27.819705, 12.734743], [-27.819705, -12.708576], [-27.554080, -12.708576], [-27.554080, 12.734779], [-29.369184, 12.723873], [-29.369184, -12.719486], [-29.103559, -12.719486], [-29.103559, 12.723905]]; +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]]; warding_points = [[34.597676, 4.535861], [34.597676, 0.151633], [35.469973, -0.230774], [35.667138, -0.352517], [35.751594, -0.489447], [35.732447, -0.660339], [35.618801, -0.883964], [34.597676, -2.570165], [34.597676, -4.181437], [36.507637, -4.181437], [36.507637, -3.346346], [35.935063, -3.064708], [35.779957, -2.936419], [35.700383, -2.775179], [35.691122, -2.602124], [35.746960, -2.438392], [36.507637, -1.124259], [36.507637, 0.619821], [35.618801, 0.897840], [35.618801, 4.535861]]; warding_paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]]; //polygon(points=outline_points, paths=outline_paths); -//polygon(points=emboss_points, paths=emboss_paths); +//polygon(points=engrave_points, paths=engrave_paths); //polygon(points=warding_points, paths=warding_paths); diff --git a/sc4.scad b/sc4.scad index 2b190e5..b57c266 100644 --- a/sc4.scad +++ b/sc4.scad @@ -12,11 +12,11 @@ difference() { key_blank(outline_points, warding_points, outline_paths=outline_paths, - emboss_right_points=emboss_points, - emboss_right_paths=emboss_paths, - emboss_left_points=emboss_points, - emboss_left_paths=emboss_paths, + engrave_right_points=engrave_points, + engrave_right_paths=engrave_paths, + engrave_left_points=engrave_points, + engrave_left_paths=engrave_paths, offset=-outline_points[187], plug_diameter=12.7); key_bitting(heights, cut_locations, .7874); -} \ No newline at end of file +} diff --git a/sc4.svg b/sc4.svg index 08252e8..204e29a 100644 --- a/sc4.svg +++ b/sc4.svg @@ -112,7 +112,7 @@ id="warding" inkscape:connector-curvature="0" />