├── .gitignore ├── README.md ├── case ├── case-bottom-ponoko-p1.svg ├── case-bottom.svg ├── case-top.svg ├── half-deck-case-bottom-and-switch-plate-no-touch-pad-ponoko-p2.svg ├── half-deck-case-bottom-ponoko-p1.svg ├── half-deck-case-bottom-ponoko.svg ├── left-case-sliced_case_bottom_left.scad ├── left-case-sliced_case_bottom_left.stl ├── left-case-sliced_case_bottom_right.scad ├── left-case-sliced_case_bottom_right.stl ├── left-case-sliced_case_top.scad ├── left-case-sliced_case_top.stl ├── left-case-sliced_case_top_left.scad ├── left-case-sliced_case_top_left.stl ├── left-case-sliced_case_top_right.scad ├── left-case-sliced_case_top_right.stl ├── left-case.scad ├── left-case.stl ├── right-case-sliced_case_bottom_left.scad ├── right-case-sliced_case_bottom_left.stl ├── right-case-sliced_case_bottom_right.scad ├── right-case-sliced_case_bottom_right.stl ├── right-case-sliced_case_top.scad ├── right-case-sliced_case_top.stl ├── right-case-sliced_case_top_left.scad ├── right-case-sliced_case_top_left.stl ├── right-case-sliced_case_top_right.scad ├── right-case-sliced_case_top_right.stl ├── right-case.scad ├── right-case.stl ├── switch-plate-full.svg ├── switch-plate-minimal.svg ├── switch-plate.scad ├── touchpad_stand.scad └── touchpad_stand.stl ├── gerbers ├── halfdeck-B.Cu.gbl ├── halfdeck-B.Mask.gbs ├── halfdeck-B.SilkS.gbo ├── halfdeck-Edge.Cuts.gm1 ├── halfdeck-F.Cu.gtl ├── halfdeck-F.Mask.gts ├── halfdeck-F.SilkS.gto └── halfdeck.drl ├── images ├── azoteq-pcb-wiring.jpg ├── azoteq-wiring-reverse.jpg ├── case-with-naked-mcu.jpg ├── diode-placement.jpg ├── diode-snip.jpg ├── diodes-backside.jpg ├── jumper-fix-lhs.jpg ├── jumper-fix-rhs.jpg ├── jumper-header-lhs.jpg ├── jumper-header-rhs.jpg ├── left-hand-populated.jpg ├── matrix.svg ├── pcb-render-bottom.png ├── pcb-render-top.png ├── right-hand-populated.jpg └── switches-placed.jpg ├── kicad └── halfdeck.kicad_pcb └── trackpad ├── cirque-cylinder-riser.scad └── cirque-cylinder-riser.stl /.gitignore: -------------------------------------------------------------------------------- 1 | *.kicad_pcb-bak 2 | _autosave*.kicad_pcb 3 | *.pro 4 | .*sw* 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Half Deck - Mk 5 2 | 3 | This is my fifth keyboard design. This repo will be updated as I get around to 4 | expanding the data here. 5 | 6 | This is a split keyboard in two halves. One half has a microcontroller that 7 | implements USB and communicates with the other half using a two-wire bus 8 | protocol known as I2C. 9 | 10 | The other half has an IO expander component that is connected to the keyboard 11 | matrix and that can be queried over I2C. 12 | 13 | A TRRS (Tip-Ring-Ring-Sleeve) cable is used to connect the two halves; this is 14 | a 4-wire cable that carries the power and I2C signals to the IO expander. 15 | 16 | ![naked mcu right hand](images/case-with-naked-mcu.jpg) 17 | ![left hand](images/left-hand-populated.jpg) 18 | ![right hand](images/right-hand-populated.jpg) 19 | 20 | ## Firmware 21 | 22 | You can find example firmware for an atmega32u4 based Feather board here: 23 | https://github.com/wez/qmk_firmware/tree/flutterby-rebased/keyboards/halfdeck 24 | 25 | ## Before you begin 26 | 27 | The PCBs are double sided so that the same design can be used to build either 28 | the RHS or the LHS of the keyboard. Make sure you read through this doc and 29 | understand where you're going to place the components before you cut or solder 30 | anything, as it can be difficult to undo those actions. 31 | 32 | If you are using a plate with your keyboard (eg: the top acrylic plate with the key 33 | switch holes), keep in mind that you can't solder in any of the switches until 34 | you have the plate as the switches effectively bolt the plate to the PCB. 35 | If your plate material is thicker than ~1.6mm then it won't clip into the small 36 | lugs on the switches and you may need to add some M3 spacers to raise the plate 37 | up to the appropriate height; depending on how you flush you solder your diodes 38 | that may not be required. 39 | 40 | The labels for the controller and IO multiplexer are biased towards right 41 | handed users, or rather, assume that the touchpad be located on the RHS. If 42 | you want to place it on the LHS you will need to swap the multiplexer and the 43 | controller. This should be straightforward, but will require attaching those 44 | components upside-down. Pay careful attention to the labels on the pins to 45 | ensure that you have things placed correctly! 46 | 47 | ## Assembly - Left Hand 48 | 49 | The top of the PCB faces up for the Left Hand. You'll know you've got it facing the 50 | correct direction because it has a graphic showing a left hand in the bottom left 51 | corner, as well as some version information down there. 52 | 53 | You will place the key switches on this side of the board for the left hand but 54 | solder them in on the other side. 55 | 56 | If you are right handed and also want to connect a touch pad, you will connect 57 | the SX1509 on this half. 58 | 59 | If you are left handed and also want to connect a touch pad, you will connect 60 | the controller and the touch pad on this half. 61 | 62 | ### I2C Jumper configuration 63 | 64 | On the top edge of the PCB there is a little notch where the TRRS connector 65 | will be fitted. To the right of that area is a pair of solder jumpers labelled 66 | `JP1` and `JP2`. These are present to allow setting up the same PCB for either 67 | left or right handed usage and control which pins of the TRRS connector are 68 | connected to the power and ground lines. 69 | 70 | Each jumper consists of three rectangles. The middle of the three needs to 71 | be bridged to *either* the left or the right pad using either excess solder 72 | or a short section snipped off of one of the diode legs. Controlling excess 73 | solder can be difficult, so I would suggest using a diode leg trimmed to size 74 | if you're not confident, or you don't have a solder sucker on hand to undo. 75 | 76 | * `JP1` must be bridged to `3V3` 77 | * `JP2` must be bridged to `GND` 78 | 79 | It's not the end of the world if you mix this up, so long as each jumper either 80 | goes to `GND` or `3V3`. They must not both be set to the same thing or you 81 | risk damaging your electronics. 82 | 83 | This image shows the jumpers for the LHS: 84 | ![LHS I2C jumper](images/jumper-header-lhs.jpg) 85 | 86 | ## Assembly - Right Hand 87 | 88 | The bottom of the PCB faces up for the Right Hand. You'll see a graphic 89 | showing a right hand in the bottom right corner of the PCB. 90 | 91 | You will place the key switches on this side of the board for the right hand 92 | but solder them in on the other side. 93 | 94 | If you are right handed and also want to connect a touch pad, you will connect 95 | the controller and the touch pad on this half. 96 | 97 | If you are left handed and also want to connect a touch pad, you will connect 98 | the SX1509 on this half. 99 | 100 | ### I2C Jumper configuration 101 | 102 | Similar to the note on the Left Hand, but the Right Hand absolutely must have 103 | the opposite settings to the Left Hand! 104 | 105 | * `JP1` must be bridged to `GND` 106 | * `JP2` must be bridged to `3V3` 107 | 108 | While the PCB is mostly reversible, the jumper blocks are only present on 109 | one side of the board, so you need to flip it over to configure them. 110 | 111 | This image shows the jumpers for the HHS: 112 | ![LHS I2C jumper](images/jumper-header-rhs.jpg) 113 | 114 | ## Errata 115 | 116 | The first batch of these boards have a minor issue with the `SCL` line; due to 117 | a typo it isn't actually connected to the TRRS jack. You will need to bridge 118 | the misnamed `SDL` pads to the `SCL` pads on each side. 119 | 120 | ### Patching the RHS 121 | 122 | ![RHS jumper fix](images/jumper-fix-rhs.jpg) 123 | 124 | ### Patching the LHS 125 | 126 | ![RHS jumper fix](images/jumper-fix-lhs.jpg) 127 | 128 | ## Recommended Order of Assembly 129 | 130 | 1. Diodes 131 | 2. The TRRS connectors 132 | 3. Jumpers (I2C and the Errata section above) 133 | 4. Header strip for the controller/expander 134 | 5. Key switches 135 | 6. Touchpad 136 | 137 | ## Diodes 138 | 139 | The diodes are directional; they allow current to flow in a single direction. 140 | Their purpose in the circuit is to prevent ghosting. If you attach one in 141 | the wrong direction it can be hard to debug and isolate if you don't have 142 | a multimeter, so take care to make sure you've placed them correctly. 143 | 144 | The diodes have a black line at one end. The black line must be aligned with 145 | the thick white line in the diode outline on the PCB. The solder pad on that 146 | side is square, which is another visual cue; think *black, thick, square*. 147 | 148 | Bend the legs of the diode so that you form a slender `n` shape, with the diode 149 | body at the top of the `n`. The goal is to have the diode body lay flush against 150 | the PCB within the outline on the pcb, so you want the legs to bend and fit the 151 | holes at either end of the outline. 152 | 153 | ![diode placement](images/diode-placement.jpg) 154 | 155 | I'd suggest taking your time with the first one and perhaps solder that one 156 | before placing the rest to make sure you understand how it will fit. Make 157 | sure that you have it oriented correctly before soldering! 158 | 159 | To solder the diodes, the technique is important. You're placing the diodes 160 | on the side of the board facing up but you need to solder them on the back side 161 | of the board. I bend the legs to form a `V` shape to keep the diodes in place 162 | when you flip the board over: 163 | 164 | ![diode back side](images/diodes-backside.jpg) 165 | 166 | Once you've placed the diodes, check again to make sure that you have them 167 | facing the right direction (*black, thick, square*) and solder them in. You 168 | want enough solder that you fill the hole with a nice shiny blob, and you want 169 | it to be very slightly convex. 170 | 171 | Be careful with the diode legs: you can easily prick yourself on the legs and 172 | the human reflex to suddenly move away from the prick can be dangerous if one 173 | of your hands is holding a hot soldering iron! 174 | 175 | After soldering, double check the orientation of the diodes again: it's not 176 | super easy to correct at this point, but it will get much harder if you 177 | discover a problem later because the next step is to snip off the diode legs. 178 | 179 | Use your angle/flush cutters for this; lay the edge of the cutters flush with 180 | the board and snip off the leg where it comes through the hole. Ideally you 181 | want to trim it such that you're just left with a small convex mound of solder 182 | around the hole. I recommend holding the leg with one hand while you snip; the 183 | picture below doesn't show this because I was holding the camera to take the 184 | picture. The reason for holding the leg while snipping is that it can jump off 185 | your work surface and land on the floor. If you're not diligent at tracking 186 | and picking up the legs from the floor, it is easy for someone to stub/stab a 187 | toe with a diode leg. While they're not super sharp, they're small enough that 188 | they can jab in a few millimeters and draw blood. 189 | 190 | ![diode leg snip](images/diode-snip.jpg) 191 | 192 | ## TRRS Connectors 193 | 194 | Attaching these is pretty straightforward; look for the little notch in the PCB 195 | near the I2C jumpers. The notch makes room for the circular opening in the 196 | connector. Place the legs of the component through the holes and solder on the 197 | other side. 198 | 199 | If you are using a plate with your keyboard, check to see whether you have enough 200 | clearance to mount the connector on the switch side of the plate. If you 201 | have an acrylic plate than I suspect that there won't be enough clearance. 202 | If you're using a 1.6mm plate then it looks like it might just fit. 203 | 204 | In the pictures in this guide, I built without a plate and placed the connectors 205 | on the top side of the PCB. 206 | 207 | ## Header Strip for Controller and Expander 208 | 209 | I recommend using some header strip to mount these components. The controller 210 | comes with appropriately sized strip but you'll need to obtain some more header 211 | to mount the IO expander. 212 | 213 | Similar consideration as the TRRS connector: make sure that you have enough 214 | clearance to place the components and your plate if you're using a plate. You 215 | may need to mount the components on the opposite side of the board to 216 | accomodate your plate. Note that you can also [buy short header 217 | strip](https://www.adafruit.com/product/3002) for lower profile builds. 218 | 219 | This image shows the header strip placement for the IO Expander: 220 | ![LHS I2C jumper](images/jumper-header-lhs.jpg) 221 | 222 | When soldering the header be prepared: `GND` is attached to a larger ground 223 | plane fill in that area of the board; there's large region of copper under the 224 | surface coating and that means that it will soak up the heat from your iron and 225 | be more difficult/take longer to solder than the surrounding pins. You may 226 | notice that the PCB in that region is noticeably much hotter. This is fine. 227 | 228 | ## Key Switches 229 | 230 | These should also be pretty simple to place, especially if you ordered PCB 231 | mounted switches. The PCB mounted switches have a couple of extra legs to 232 | ensure that the switch is correctly aligned in the PCB. If you have plate 233 | mounted switches, those lugs are not present because the plate is supposed to 234 | orient and align the switches. 235 | 236 | If you're using plate mounted switches on the PCB and are not using a plate 237 | you will need to take extra care to ensure that the switches mount square 238 | and consistently, otherwise your keycaps will be misaligned. 239 | 240 | Press the key switches into the mounting holes; make sure that the metal legs 241 | of the switch poke through the other side. If you don't see a leg poking 242 | through it means that the leg is most likely folded flat; remove the switch and 243 | straighten the leg and try again. 244 | 245 | Make sure that the switches are pushed in snugly and that the switches are 246 | flush with the PCB, otherwise your keycaps will be misaligned. You may hear or 247 | feel a click when the switch is well placed. 248 | 249 | I tend to place all of the switches at once, then flip the board over and 250 | solder them in. Before you solder, make sure that none of the switches shifted 251 | during the flip. In my test build the tolerance on the hole was good and the 252 | switches were held in just fine, but depending on your switches you may find 253 | that one or two of them are a little loose and need to be re-seated. 254 | 255 | ![switches placed](images/switches-placed.jpg) 256 | 257 | ## Touchpad 258 | 259 | I tried two different touchpad models. The one I'm most happy with is the 260 | Azoteq TPS43-201A-S, which is a 43mm approximately-square touchpad which 261 | connects to the I2C bus on this keyboard. When I designed the board I 262 | though I was going to use a different touchpad that was connected via SPI, 263 | so the mounting area on the board breaks out the SPI pins but not the I2C 264 | pins. That means that connecting the touchpad requires a couple of bridging 265 | wires to connect across the backside of the pcb. 266 | 267 | The touchpad is shipped with a removable 3M adhesive pad on the touch surface; 268 | **keep this attached to the touchpad** (well, you can peel back a corner and 269 | take a peek at the sensor grid if you like). The purpose of this is to ensure 270 | that you have no air gap between the capacitive touch grid on the touchpad 271 | surface and the touch surface. The 3M label makes a reasonable touch surface, 272 | but you may want to consider placing your own more permanent and aestheticly 273 | pleasing surface in its place. The datasheet recommends a surface that is no 274 | more than 3mm thick, and it should be something that doesn't interfere with the 275 | capacitive field. 276 | 277 | ### Touchpad Wiring 278 | 279 | Prepare your bridging wires; you'll need 3 that are long and two that are relatively 280 | short. You'll want to give yourself a little slack but not so much that 281 | the wires crowd out the underside of your board. 282 | 283 | Here's a picture of the wiring on the reverse of the PCB so that you can 284 | visualize this a little better; the slack allows popping off the case in 285 | the event that you need to get inside the board and clean it. 286 | 287 | ![pcb touchpad wiring](images/azoteq-pcb-wiring.jpg) 288 | 289 | The touchpad itself provides solderable pads that are just perfect for 290 | our needs: 291 | 292 | ![touchpad reverse](images/azoteq-wiring-reverse.jpg) 293 | 294 | The pads are connected to the PCB via the briding wires: 295 | 296 | | Touchpad | PCB | 297 | | -------- | --- | 298 | | SDA | SDA - on the header block at the top of the board | 299 | | SCL | SCL - on the first rev of the PCB this is mislabeled as SDL on the header block at the top of the board | 300 | | 3V3 | 3V3 - in the header block in the circle at the bottom of the board | 301 | | GND | GND - in the header block in the circle at the bottom of the board | 302 | | RST | Not connected | 303 | | RDY | ~INT - the interrupt pin behind the microcontroller | 304 | 305 | ### Orientation of the touchpad 306 | 307 | The top edge of the touchpad has a small notch. When the touchpad is placed 308 | on the board, the solder pads for the connections listed in the table above 309 | will be in the bottom right of the touchpad if you look down from the top 310 | surface of the touch pad. 311 | 312 | While you're soldering you'll have it facing up the other way and so those pads 313 | will be in the bottom left of the underside of the touchpad. 314 | 315 | ### Mounting the touchpad 316 | 317 | I've only made this work when integrating with the 3D printed flavor of the case. 318 | You'll need the [touchpad_stand](case/touchpad_stand.stl) to raise the pad up to 319 | the level of the case. There is an open side in the touchpad stand that is intended 320 | to allow your wiring to pass through; the idea is that you don't want to solder your 321 | wires into the stand as you won't be able to remove it without de-soldering. 322 | 323 | ## Case 324 | 325 | In the [case](case) directory you'll find a number of files to use for the case. You 326 | have a couple of options: 327 | 328 | ### 2D laser cut sandwich style case 329 | 330 | This is the simplest case design, but because it is 2D doesn't have a story for (literally) 331 | supporting the touchpad. There are no sides to the case and the idea is that 332 | you assemble it using some M3 standoffs/spacers and nuts and bolts. There are a number 333 | of SVG files in the repo that can be used to assemble a case. For example, you can 334 | take [this one](case/half-deck-case-bottom-and-switch-plate-no-touch-pad-ponoko-p2.svg) 335 | to [Ponoko](https://www.ponoko.com/) and select you preferred color of acrylic P2 material. 336 | 337 | ### 3D printed case (work in progress) 338 | 339 | ![naked mcu right hand](images/case-with-naked-mcu.jpg) 340 | 341 | > Pictured above: a debug version of the case with partially exposed controller. 342 | > The case files below are fully enclosed but I don't have a real print of that 343 | > to show at this time. 344 | 345 | This one is your best option when using a touchpad. There are a couple of parts to print in 346 | the current iteration. These are for a right handed build including a touchpad. You can 347 | mirror the parts if you want a left handed build with a touchpad, or just mirror the left 348 | half if you want a right half with no touchpad: 349 | 350 | * [left half](case/left-case.stl) 351 | * [right_half](case/right-case.stl) 352 | * [touchpad_stand](case/touchpad_stand.stl) 353 | * Currently missing: bottom cover. It's not strictly needed as the case has a lip 354 | with sufficient clearance, but you can extrude [case-bottom.svg](case/case-bottom.svg) 355 | and print that or just laser cut it from some other material if you really need 356 | something. 357 | 358 | You'll need some M3 bolts to attach the PCB to the case and something like these 359 | [heat-set embedment nuts](https://www.amazon.com/gp/product/B01IYWTCWW) 360 | to provide threads that you can screw the bolts into. Check out 361 | [this page](https://www.3dhubs.com/knowledge-base/how-assemble-3d-printed-parts-threaded-fasteners) 362 | for more information. 363 | 364 | If you don't have a 3D printer you can upload these files to somewhere like 365 | [3D Hubs](https://www.3dhubs.com/) and have them printed for you at a cost of 366 | around $50 for one set, plus shipping. 367 | 368 | If you do have a 3D printer but it isn't large enough to print these models, you'll 369 | find a set of `sliced_case` files in this repo that are divided into quarters that 370 | are printable in a printer with a 140 cubic mm volume. These are cut in such a way 371 | that the pieces lock together when mounted on the PCB. 372 | 373 | -------------------------------------------------------------------------------- /case/case-bottom.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /case/case-top.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /case/left-case-sliced_case_bottom_left.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | mirror(v=[1, 0, 0]) { 178 | translate(v=[-79.00000000000001, -62.971638365903445]) { 179 | sliced_case_bottom_left() { 180 | } 181 | } 182 | } 183 | } 184 | -------------------------------------------------------------------------------- /case/left-case-sliced_case_bottom_right.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | mirror(v=[1, 0, 0]) { 178 | translate(v=[-79.00000000000001, -62.971638365903445]) { 179 | sliced_case_bottom_right() { 180 | } 181 | } 182 | } 183 | } 184 | -------------------------------------------------------------------------------- /case/left-case-sliced_case_top.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | mirror(v=[1, 0, 0]) { 178 | translate(v=[-79.00000000000001, -62.971638365903445]) { 179 | sliced_case_top() { 180 | } 181 | } 182 | } 183 | } 184 | -------------------------------------------------------------------------------- /case/left-case-sliced_case_top_left.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | mirror(v=[1, 0, 0]) { 178 | translate(v=[-79.00000000000001, -62.971638365903445]) { 179 | sliced_case_top_left() { 180 | } 181 | } 182 | } 183 | } 184 | -------------------------------------------------------------------------------- /case/left-case-sliced_case_top_right.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | mirror(v=[1, 0, 0]) { 178 | translate(v=[-79.00000000000001, -62.971638365903445]) { 179 | sliced_case_top_right() { 180 | } 181 | } 182 | } 183 | } 184 | -------------------------------------------------------------------------------- /case/right-case-sliced_case_bottom_left.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | translate(v=[-79.00000000000001, -62.971638365903445]) { 178 | sliced_case_bottom_left() { 179 | } 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /case/right-case-sliced_case_bottom_right.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | translate(v=[-79.00000000000001, -62.971638365903445]) { 178 | sliced_case_bottom_right() { 179 | } 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /case/right-case-sliced_case_top.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | translate(v=[-79.00000000000001, -62.971638365903445]) { 178 | sliced_case_top() { 179 | } 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /case/right-case-sliced_case_top_left.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | translate(v=[-79.00000000000001, -62.971638365903445]) { 178 | sliced_case_top_left() { 179 | } 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /case/right-case-sliced_case_top_right.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | translate(v=[-79.00000000000001, -62.971638365903445]) { 178 | sliced_case_top_right() { 179 | } 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /case/switch-plate-minimal.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /case/switch-plate.scad: -------------------------------------------------------------------------------- 1 | mirror([0, 1, 0]) color("grey") { 2 | union() { 3 | linear_extrude(height=2) { 4 | polygon([[119.9620436791635, -10.0], [119.88614853201763, -9.998847719777999], [53.880686985647216, -7.994126032720432], [53.646495296320076, -7.975973004726603], [-5.810086836473021, -0.5439002381274649], [-6.047487665291121, -0.5025204617148387], [-6.279801550623147, -0.4384759607689326], [-6.504869964194179, -0.3523618003068363], [-6.720601698525187, -0.2449781040489396], [-6.9249922972416, -0.11732262012514494], [-7.116142679340018, 0.029418549432351115], [-7.292276784366992, 0.19388196927341883], [-7.451758074560958, 0.3745395389945354], [-7.593104740628792, 0.569712691377185], [-7.71500346987358, 0.7775879886781831], [-7.816321648748018, 0.9962339720600868], [-7.896117886454252, 1.2236191076063734], [-7.953650761810862, 1.45763066217724], [-7.988385712116106, 1.69609433372233], [-8.0, 1.9367944536567043], [-8.000000000000002, 99.39375], [-7.999999999999999, 126.83538329329558], [-7.988630737664156, 127.07353671349598], [-7.954626358757477, 127.30952403072804], [-7.898296147043448, 127.54119884361772], [-7.820152448885596, 127.76645397478553], [-7.720906013247321, 127.98324063648849], [-7.601459527138758, 128.18958706518433], [-7.462899405308439, 128.38361645552916], [-7.306485908855863, 128.56356403069117], [-7.133641682640258, 128.72779309371944], [-6.945938815742489, 128.87480991397337], [-6.745084542670518, 129.00327731321514], [-6.532905715361807, 129.11202682779387], [-6.311332187216184, 129.2000693363015], [-6.082379260288182, 129.26660405603724], [-5.848129355288844, 129.31102582645462], [-5.610713071115836, 129.33293061334462], [143.51094867944454, 135.94330272112006], [143.7578335033689, 135.94204409706296], [144.00339029973705, 135.9164401876724], [144.2452242532848, 135.86674069743202], [144.48097685611515, 135.79343032519606], [144.70834890926406, 135.69722403711918], [144.9251229458497, 135.57906009388333], [145.1291848571225, 135.44009090022388], [145.3185445105055, 135.2816717659965], [145.49135515854522, 135.10534768839287], [145.6459314494865, 134.91283828421348], [145.78076586382062, 134.70602101914633], [145.89454341650796, 134.48691289761004], [145.98615448149076, 134.25765079173254], [146.05470561342344, 134.02047060130883], [165.9330438628631, 49.86597310114771], [165.98320454827606, 49.58055907861434], [166.00000000000003, 49.291257900909926], [166.0, -6.398002531138397], [165.98859115294965, -6.63656923766047], [165.95446874123138, -6.872958527329727], [165.89794420274623, -7.105012856746026], [165.81953344134553, -7.3306142480280165], [165.7199521181364, -7.5477036197617124], [165.60010911958736, -7.754299580396419], [165.46109826205074, -7.9485165125592525], [165.30418830841614, -8.128581783231304], [165.13081138801294, -8.29285192270683], [164.9425499254547, -8.439827624668856], [164.7411221977268, -8.56816743047434], [164.52836665133918, -8.676699972751353], [164.3062251226821, -8.764434666560037], [164.07672511473476, -8.830570750538252], [163.8419612918881, -8.874504595512704], [163.60407636178044, -8.895835213869276], [137.156137109102, -9.99783268273088], [137.05206074732155, -10.0], [119.9620436791635, -10.0], [146.22988117819344, 73.14758746355804], [143.7988066908564, 86.93489600572894], [130.0114981486855, 84.50382151839193], [132.4425726360225, 70.71651297622101], [146.22988117819344, 73.14758746355804], [142.92188339363838, 91.90817515844061], [140.49080890630137, 105.69548370061152], [126.70350036413045, 103.2644092132745], [129.13457485146748, 89.4771006711036], [142.92188339363838, 91.90817515844061], [139.61388560908333, 110.66876285332319], [137.1828111217463, 124.45607139549409], [123.3955025795754, 122.02499690815708], [125.82657706691242, 108.23768836598617], [139.61388560908333, 110.66876285332319], [130.82500000000005, 47.768750000000004], [130.82500000000005, 61.768750000000004], [116.82500000000003, 61.768750000000004], [116.82500000000003, 47.768750000000004], [130.82500000000005, 47.768750000000004], [130.82500000000005, 28.718750000000007], [130.82500000000005, 42.71875000000001], [116.82500000000003, 42.71875000000001], [116.82500000000003, 28.718750000000007], [130.82500000000005, 28.718750000000007], [130.82500000000005, 9.668750000000003], [130.82500000000005, 23.668750000000003], [116.82500000000003, 23.668750000000003], [116.82500000000003, 9.668750000000003], [130.82500000000005, 9.668750000000003], [124.16129569875584, 88.60017737388559], [121.73022121141881, 102.3874859160565], [107.94291266924789, 99.95641142871948], [110.37398715658492, 86.16910288654856], [124.16129569875584, 88.60017737388559], [120.85329791420082, 107.36076506876817], [118.4222234268638, 121.14807361093908], [104.63491488469289, 118.71699912360204], [107.0659893720299, 104.92969058143115], [120.85329791420082, 107.36076506876817], [111.77500000000002, 7.287500000000003], [111.77500000000002, 21.2875], [97.77500000000002, 21.2875], [97.77500000000002, 7.287500000000003], [111.77500000000002, 7.287500000000003], [111.775, 64.4375], [111.775, 78.4375], [97.775, 78.4375], [97.775, 64.4375], [111.775, 64.4375], [111.775, 45.3875], [111.775, 59.3875], [97.775, 59.3875], [97.775, 45.3875], [111.775, 45.3875], [111.775, 26.3375], [111.775, 40.3375], [97.775, 40.3375], [97.775, 26.3375], [111.775, 26.3375], [92.725, 62.056250000000006], [92.725, 76.05625], [78.725, 76.05625], [78.725, 62.056250000000006], [92.725, 62.056250000000006], [92.725, 43.006249999999994], [92.725, 57.006249999999994], [78.725, 57.006249999999994], [78.725, 43.006249999999994], [92.725, 43.006249999999994], [92.725, 23.956250000000004], [92.725, 37.956250000000004], [78.725, 37.956250000000004], [78.725, 23.956250000000004], [92.725, 23.956250000000004], [92.725, 4.906250000000002], [92.725, 18.90625], [78.725, 18.90625], [78.725, 4.906250000000002], [92.725, 4.906250000000002], [73.67500000000001, 21.575], [73.67500000000001, 35.575], [59.67500000000001, 35.575], [59.67500000000001, 21.575], [73.67500000000001, 21.575], [73.67500000000001, 40.625], [73.67500000000001, 54.625], [59.67500000000001, 54.625], [59.67500000000001, 40.625], [73.67500000000001, 40.625], [73.67500000000001, 2.5249999999999986], [73.67500000000001, 16.525], [59.67500000000001, 16.525], [59.67500000000001, 2.5249999999999986], [73.67500000000001, 2.5249999999999986], [73.675, 59.675], [73.675, 73.675], [59.675, 73.675], [59.675, 59.675], [73.675, 59.675], [54.625, 104.91875], [54.625, 118.91875], [40.625, 118.91875], [40.625, 104.91875], [54.625, 104.91875], [54.625, 62.056250000000006], [54.625, 76.05625], [40.625, 76.05625], [40.625, 62.056250000000006], [54.625, 62.056250000000006], [54.625, 43.00625], [54.625, 57.00625], [40.625, 57.00625], [40.625, 43.00625], [54.625, 43.00625], [54.625, 23.95625], [54.625, 37.95625], [40.625, 37.95625], [40.625, 23.95625], [54.625, 23.95625], [54.625, 4.90625], [54.625, 18.90625], [40.625, 18.90625], [40.625, 4.90625], [54.625, 4.90625], [35.575, 85.86875], [35.575, 99.86875], [21.575, 99.86875], [21.575, 85.86875], [35.575, 85.86875], [35.575, 9.668750000000003], [35.575, 23.668750000000003], [21.575, 23.668750000000003], [21.575, 9.668750000000003], [35.575, 9.668750000000003], [35.575, 28.71875], [35.575, 42.71875], [21.575, 42.71875], [21.575, 28.71875], [35.575, 28.71875], [35.575, 47.768750000000004], [35.575, 61.768750000000004], [21.575, 61.768750000000004], [21.575, 47.768750000000004], [35.575, 47.768750000000004], [35.575, 66.81875], [35.575, 80.81875], [21.575, 80.81875], [21.575, 66.81875], [35.575, 66.81875], [35.575, 104.91875], [35.575, 118.91875], [21.575, 118.91875], [21.575, 104.91875], [35.575, 104.91875], [16.525, 9.668750000000003], [16.525, 23.668750000000003], [2.5250000000000004, 23.668750000000003], [2.5250000000000004, 9.668750000000003], [16.525, 9.668750000000003], [16.525, 104.91875], [16.525, 118.91875], [2.5249999999999986, 118.91875], [2.5249999999999986, 104.91875], [16.525, 104.91875], [16.525, 66.81875], [16.525, 80.81875], [2.5249999999999986, 80.81875], [2.5249999999999986, 66.81875], [16.525, 66.81875], [16.525, 47.768750000000004], [16.525, 61.768750000000004], [2.5250000000000004, 61.768750000000004], [2.5250000000000004, 47.768750000000004], [16.525, 47.768750000000004], [16.525, 28.71875], [16.525, 42.71875], [2.5250000000000004, 42.71875], [2.5250000000000004, 28.71875], [16.525, 28.71875]], [[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, 188, 189, 190], [191, 192, 193, 194, 195], [196, 197, 198, 199, 200], [201, 202, 203, 204, 205], [206, 207, 208, 209, 210], [211, 212, 213, 214, 215], [216, 217, 218, 219, 220], [221, 222, 223, 224, 225], [226, 227, 228, 229, 230], [231, 232, 233, 234, 235], [236, 237, 238, 239, 240], [241, 242, 243, 244, 245], [246, 247, 248, 249, 250], [251, 252, 253, 254, 255]]); 5 | 6 | } 7 | translate(v=[0, 0, 2]) { 8 | linear_extrude(height=5) { 9 | union() { 10 | polygon([[119.9620436791635, -10.0], [119.88614853201763, -9.998847719777999], [53.880686985647216, -7.994126032720432], [53.646495296320076, -7.975973004726603], [-5.810086836473021, -0.5439002381274649], [-6.047487665291121, -0.5025204617148387], [-6.279801550623147, -0.4384759607689326], [-6.504869964194179, -0.3523618003068363], [-6.720601698525187, -0.2449781040489396], [-6.9249922972416, -0.11732262012514494], [-7.116142679340018, 0.029418549432351115], [-7.292276784366992, 0.19388196927341883], [-7.451758074560958, 0.3745395389945354], [-7.593104740628792, 0.569712691377185], [-7.71500346987358, 0.7775879886781831], [-7.816321648748018, 0.9962339720600868], [-7.896117886454252, 1.2236191076063734], [-7.953650761810862, 1.45763066217724], [-7.988385712116106, 1.69609433372233], [-8.0, 1.9367944536567043], [-8.000000000000002, 99.39375], [-7.999999999999999, 126.83538329329558], [-7.988630737664156, 127.07353671349598], [-7.954626358757477, 127.30952403072804], [-7.898296147043448, 127.54119884361772], [-7.820152448885596, 127.76645397478553], [-7.720906013247321, 127.98324063648849], [-7.601459527138758, 128.18958706518433], [-7.462899405308439, 128.38361645552916], [-7.306485908855863, 128.56356403069117], [-7.133641682640258, 128.72779309371944], [-6.945938815742489, 128.87480991397337], [-6.745084542670518, 129.00327731321514], [-6.532905715361807, 129.11202682779387], [-6.311332187216184, 129.2000693363015], [-6.082379260288182, 129.26660405603724], [-5.848129355288844, 129.31102582645462], [-5.610713071115836, 129.33293061334462], [143.51094867944454, 135.94330272112006], [143.7578335033689, 135.94204409706296], [144.00339029973705, 135.9164401876724], [144.2452242532848, 135.86674069743202], [144.48097685611515, 135.79343032519606], [144.70834890926406, 135.69722403711918], [144.9251229458497, 135.57906009388333], [145.1291848571225, 135.44009090022388], [145.3185445105055, 135.2816717659965], [145.49135515854522, 135.10534768839287], [145.6459314494865, 134.91283828421348], [145.78076586382062, 134.70602101914633], [145.89454341650796, 134.48691289761004], [145.98615448149076, 134.25765079173254], [146.05470561342344, 134.02047060130883], [165.9330438628631, 49.86597310114771], [165.98320454827606, 49.58055907861434], [166.00000000000003, 49.291257900909926], [166.0, -6.398002531138397], [165.98859115294965, -6.63656923766047], [165.95446874123138, -6.872958527329727], [165.89794420274623, -7.105012856746026], [165.81953344134553, -7.3306142480280165], [165.7199521181364, -7.5477036197617124], [165.60010911958736, -7.754299580396419], [165.46109826205074, -7.9485165125592525], [165.30418830841614, -8.128581783231304], [165.13081138801294, -8.29285192270683], [164.9425499254547, -8.439827624668856], [164.7411221977268, -8.56816743047434], [164.52836665133918, -8.676699972751353], [164.3062251226821, -8.764434666560037], [164.07672511473476, -8.830570750538252], [163.8419612918881, -8.874504595512704], [163.60407636178044, -8.895835213869276], [137.156137109102, -9.99783268273088], [137.05206074732155, -10.0], [119.9620436791635, -10.0], [34.87156720064472, 125.08274924334616], [34.96062665966282, 124.44374999999998], [-3.000000000000001, 124.44374999999998], [-3.0000000000000013, 99.39375], [16.050000000000004, 99.39375], [16.04999999999999, 86.34375], [-3.0, 86.34375], [-3.0000000000000004, 4.143750000000001], [35.10000000000001, 4.143750000000001], [35.100000000000016, -0.6187499999999999], [54.15, -0.6187499999999999], [54.15000000000001, -3.0000000000000013], [79.2, -3.0000000000000013], [79.2, -0.6187499999999999], [98.25000000000001, -0.6187499999999998], [98.25, 1.762500000000001], [117.3, 1.7625000000000017], [117.29999999999998, 4.143749999999999], [136.35000000000002, 4.143750000000002], [136.35000000000005, 24.19375], [136.35000000000005, 65.79526581498008], [152.6303501951956, 68.66593080977538], [149.14870423297376, 88.41132625767018], [145.84070644841873, 107.17191395255269], [141.664467775529, 130.85654041249649], [116.66854633478026, 127.10921194740828], [116.86608588567066, 126.48391660740211], [98.23444586769057, 123.19865577738476], [101.71609182991254, 103.45326032948991], [105.1528387505238, 83.96250000000003], [92.24999999999987, 83.96250000000003], [92.25, 81.58124999999998], [73.19999999999963, 81.58125000000001], [73.20000000000002, 79.19999999999996], [60.149999999999984, 79.19999999999996], [60.149999999999764, 81.58125000000003], [41.100000000000016, 81.58125000000001], [41.100000000000016, 99.39375000000001], [60.149999999999984, 99.39375], [60.14999999999999, 124.44375], [34.87156720064472, 125.08274924334616]], [[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]]); 11 | 12 | polygon([[117.29999999999997, 80.0455395898675], [123.91558021508602, 80.20612383586537], [124.8785755520589, 81.7968652027765], [125.15376661456881, 80.23617913304282], [130.55645011989614, 80.36732195481524], [125.36267357887374, 79.05140886438873], [127.43586606663155, 67.29374999999999], [117.30000000000004, 67.29374999999997], [117.29999999999997, 80.0455395898675]], [[0, 1, 2, 3, 4, 5, 6, 7, 8]]); 13 | 14 | } 15 | } 16 | } 17 | }} 18 | -------------------------------------------------------------------------------- /case/touchpad_stand.scad: -------------------------------------------------------------------------------- 1 | use 2 | 3 | 4 | module quarter(x, y, z, y_cut_delta=0, x_cut_delta=0, offset=[0,0,0], piece) { 5 | tongue_size = 2.8; 6 | displacement = 12; 7 | // tolerance on the groove side 8 | kerf = 0.25; 9 | 10 | y_cut = (y / 2) + y_cut_delta; 11 | x_cut = (x / 2) + x_cut_delta; 12 | total_z = z * 2; 13 | 14 | module cutout(kerf=0) { 15 | rotate([90, 0, 0]) 16 | cylinder(h=kerf + max(y + abs(y_cut_delta), 17 | x + abs(x_cut_delta))/2, 18 | r=tongue_size, $fn=4); 19 | } 20 | 21 | module tongue() { 22 | cutout(); 23 | } 24 | 25 | module groove() { 26 | cutout(kerf); 27 | } 28 | 29 | module top_left_quadrant() { 30 | cube([x_cut, y_cut, total_z]); 31 | } 32 | 33 | module offset_top_right() { 34 | translate([x_cut, 0, 0]) children(); 35 | } 36 | 37 | module top_right_quadrant() { 38 | offset_top_right() 39 | cube([x - x_cut, y_cut, total_z]); 40 | } 41 | 42 | module offset_bottom_left() { 43 | translate([0, y_cut, 0]) children(); 44 | } 45 | 46 | module bottom_left_quadrant() { 47 | offset_bottom_left() 48 | cube([x_cut, y - y_cut, total_z]); 49 | } 50 | 51 | module offset_bottom_right() { 52 | translate([x_cut, y_cut, 0]) children(); 53 | } 54 | 55 | module bottom_right_quadrant() { 56 | offset_bottom_right() 57 | cube([x - x_cut, y - y_cut, total_z]); 58 | } 59 | 60 | module offset_top_left_lr() { 61 | offset_top_right() 62 | translate([0, y_cut, z/2]) 63 | children(); 64 | } 65 | 66 | module offset_bottom_left_lr() { 67 | offset_bottom_left() 68 | translate([x - x_cut, y - y_cut, z/2]) 69 | children(); 70 | } 71 | 72 | module offset_top_left_ud() { 73 | translate([0, y_cut, z/2]) 74 | rotate([0, 0, 90]) 75 | children(); 76 | } 77 | 78 | module offset_top_right_ud() { 79 | offset_bottom_right() 80 | translate([0, 0, z/2]) 81 | rotate([0, 0, 90]) 82 | children(); 83 | } 84 | 85 | // top left quadrant 86 | if (piece == undef || piece == 0) 87 | translate([-displacement, -displacement, 0]) { 88 | intersection() { 89 | translate(offset) { 90 | difference() { 91 | union() { 92 | top_left_quadrant(); 93 | // RHS tongue 94 | intersection() { 95 | top_right_quadrant(); 96 | offset_top_left_lr() tongue(); 97 | } 98 | } 99 | // bottom groove 100 | offset_top_left_ud() groove(); 101 | } 102 | } 103 | children(0); 104 | } 105 | } 106 | 107 | // top right quadrant 108 | if (piece == undef || piece == 1) 109 | translate([displacement, -displacement, 0]) { 110 | intersection() { 111 | translate(offset) { 112 | difference() { 113 | union() { 114 | top_right_quadrant(); 115 | // bottom tongue 116 | intersection() { 117 | bottom_right_quadrant(); 118 | offset_top_right_ud() tongue(); 119 | } 120 | } 121 | // LHS groove 122 | offset_top_left_lr() groove(); 123 | } 124 | } 125 | children(0); 126 | } 127 | } 128 | 129 | // bottom right quadrant 130 | if (piece == undef || piece == 2) 131 | translate([displacement, displacement, 0]) { 132 | intersection() { 133 | translate(offset) { 134 | difference() { 135 | union() { 136 | bottom_right_quadrant(); 137 | // LHS tongue 138 | intersection() { 139 | bottom_left_quadrant(); 140 | offset_bottom_left_lr() tongue(); 141 | } 142 | } 143 | // top groove 144 | offset_top_right_ud() groove(); 145 | } 146 | } 147 | children(0); 148 | } 149 | } 150 | 151 | // bottom left quadrant 152 | if (piece == undef || piece == 3) 153 | translate([-displacement, displacement, 0]) { 154 | intersection() { 155 | translate(offset) { 156 | difference() { 157 | union() { 158 | bottom_left_quadrant(); 159 | // top tongue 160 | intersection() { 161 | top_left_quadrant(); 162 | offset_top_left_ud() tongue(); 163 | } 164 | } 165 | // RHS groove 166 | offset_bottom_left_lr() groove(); 167 | } 168 | } 169 | children(0); 170 | } 171 | } 172 | } 173 | 174 | 175 | mirror([0, 1, 0]) { 176 | 177 | translate(v=[0, -74.97163836590344, 0]) { 178 | translate(v=[89.00000000000001, 0, 0]) { 179 | difference() { 180 | difference() { 181 | linear_extrude(height=10.4) { 182 | polygon([ 183 | [101.5, 81.75], 184 | [58.0, 81.75], 185 | [58.0, 122.25], 186 | [101.5, 122.25], 187 | [101.5, 81.75], 188 | [97.75, 85.5], 189 | [97.75, 118.5], 190 | [79.75, 118.5], 191 | [79.75, 85.5], 192 | [97.75, 85.5], 193 | [77.75, 118.5], 194 | [61.75, 118.5], 195 | [61.75, 85.5], 196 | [77.75, 85.5], 197 | [77.75, 118.5] 198 | ], [ 199 | [ 200 | 0, 201 | 1, 202 | 2, 203 | 3, 204 | 4 205 | ], 206 | [ 207 | 5, 208 | 6, 209 | 7, 210 | 8, 211 | 9 212 | ], 213 | [ 214 | 10, 215 | 11, 216 | 12, 217 | 13, 218 | 14 219 | ] 220 | ]); 221 | 222 | } 223 | translate(v=[0, 0, 5.2]) { 224 | linear_extrude(height=5.2) { 225 | polygon([ 226 | [101.75, 91.75], 227 | [101.75, 112.25], 228 | [57.75, 112.25], 229 | [57.75, 91.75], 230 | [101.75, 91.75] 231 | ], [ 232 | [ 233 | 0, 234 | 1, 235 | 2, 236 | 3, 237 | 4 238 | ] 239 | ]); 240 | 241 | } 242 | } 243 | } 244 | linear_extrude(height=5.2) { 245 | polygon([ 246 | [101.75, 91.75], 247 | [101.75, 112.25], 248 | [87.08333333333333, 112.25], 249 | [87.08333333333333, 91.75], 250 | [101.75, 91.75] 251 | ], [ 252 | [ 253 | 0, 254 | 1, 255 | 2, 256 | 3, 257 | 4 258 | ] 259 | ]); 260 | 261 | } 262 | } 263 | } 264 | } 265 | } 266 | -------------------------------------------------------------------------------- /case/touchpad_stand.stl: -------------------------------------------------------------------------------- 1 | solid OpenSCAD_Model 2 | facet normal 0 0 -1 3 | outer loop 4 | vertex 190.5 -47.2784 0 5 | vertex 186.75 -43.5284 0 6 | vertex 190.5 -37.2784 0 7 | endloop 8 | endfacet 9 | facet normal 0 0 -1 10 | outer loop 11 | vertex 190.5 -47.2784 0 12 | vertex 168.75 -43.5284 0 13 | vertex 186.75 -43.5284 0 14 | endloop 15 | endfacet 16 | facet normal 0 0 -1 17 | outer loop 18 | vertex 168.75 -43.5284 0 19 | vertex 166.75 -43.5284 0 20 | vertex 168.75 -10.5284 0 21 | endloop 22 | endfacet 23 | facet normal 0 0 -1 24 | outer loop 25 | vertex 147 -47.2784 0 26 | vertex 168.75 -43.5284 0 27 | vertex 190.5 -47.2784 0 28 | endloop 29 | endfacet 30 | facet normal -0 0 -1 31 | outer loop 32 | vertex 168.75 -43.5284 0 33 | vertex 147 -47.2784 0 34 | vertex 166.75 -43.5284 0 35 | endloop 36 | endfacet 37 | facet normal -0 0 -1 38 | outer loop 39 | vertex 150.75 -43.5284 0 40 | vertex 147 -47.2784 0 41 | vertex 150.75 -10.5284 0 42 | endloop 43 | endfacet 44 | facet normal -0 0 -1 45 | outer loop 46 | vertex 166.75 -43.5284 0 47 | vertex 147 -47.2784 0 48 | vertex 150.75 -43.5284 0 49 | endloop 50 | endfacet 51 | facet normal -0 0 -1 52 | outer loop 53 | vertex 190.5 -37.2784 0 54 | vertex 186.75 -43.5284 0 55 | vertex 186.75 -37.2784 0 56 | endloop 57 | endfacet 58 | facet normal 0 0 -1 59 | outer loop 60 | vertex 186.75 -10.5284 0 61 | vertex 190.5 -16.7784 0 62 | vertex 186.75 -16.7784 0 63 | endloop 64 | endfacet 65 | facet normal 0 0 -1 66 | outer loop 67 | vertex 190.5 -16.7784 0 68 | vertex 186.75 -10.5284 0 69 | vertex 190.5 -6.77836 0 70 | endloop 71 | endfacet 72 | facet normal 0 0 -1 73 | outer loop 74 | vertex 168.75 -10.5284 0 75 | vertex 190.5 -6.77836 0 76 | vertex 186.75 -10.5284 0 77 | endloop 78 | endfacet 79 | facet normal 0 0 -1 80 | outer loop 81 | vertex 166.75 -10.5284 0 82 | vertex 168.75 -10.5284 0 83 | vertex 166.75 -43.5284 0 84 | endloop 85 | endfacet 86 | facet normal 0 0 -1 87 | outer loop 88 | vertex 147 -6.77836 0 89 | vertex 168.75 -10.5284 0 90 | vertex 166.75 -10.5284 0 91 | endloop 92 | endfacet 93 | facet normal 0 0 -1 94 | outer loop 95 | vertex 147 -6.77836 0 96 | vertex 166.75 -10.5284 0 97 | vertex 150.75 -10.5284 0 98 | endloop 99 | endfacet 100 | facet normal 0 0 -1 101 | outer loop 102 | vertex 168.75 -10.5284 0 103 | vertex 147 -6.77836 0 104 | vertex 190.5 -6.77836 0 105 | endloop 106 | endfacet 107 | facet normal 0 0 -1 108 | outer loop 109 | vertex 147 -6.77836 0 110 | vertex 150.75 -10.5284 0 111 | vertex 147 -47.2784 0 112 | endloop 113 | endfacet 114 | facet normal 0 0 1 115 | outer loop 116 | vertex 150.75 -37.2784 10.4 117 | vertex 147 -37.2784 10.4 118 | vertex 150.75 -43.5284 10.4 119 | endloop 120 | endfacet 121 | facet normal 0 0 1 122 | outer loop 123 | vertex 168.75 -37.2784 10.4 124 | vertex 166.75 -37.2784 10.4 125 | vertex 168.75 -43.5284 10.4 126 | endloop 127 | endfacet 128 | facet normal 0 0 1 129 | outer loop 130 | vertex 186.75 -43.5284 10.4 131 | vertex 190.5 -37.2784 10.4 132 | vertex 186.75 -37.2784 10.4 133 | endloop 134 | endfacet 135 | facet normal 0 0 1 136 | outer loop 137 | vertex 190.5 -37.2784 10.4 138 | vertex 186.75 -43.5284 10.4 139 | vertex 190.5 -47.2784 10.4 140 | endloop 141 | endfacet 142 | facet normal -0 0 1 143 | outer loop 144 | vertex 168.75 -43.5284 10.4 145 | vertex 190.5 -47.2784 10.4 146 | vertex 186.75 -43.5284 10.4 147 | endloop 148 | endfacet 149 | facet normal 0 0 1 150 | outer loop 151 | vertex 166.75 -43.5284 10.4 152 | vertex 168.75 -43.5284 10.4 153 | vertex 166.75 -37.2784 10.4 154 | endloop 155 | endfacet 156 | facet normal 0 0 1 157 | outer loop 158 | vertex 147 -47.2784 10.4 159 | vertex 168.75 -43.5284 10.4 160 | vertex 166.75 -43.5284 10.4 161 | endloop 162 | endfacet 163 | facet normal 0 0 1 164 | outer loop 165 | vertex 147 -47.2784 10.4 166 | vertex 166.75 -43.5284 10.4 167 | vertex 150.75 -43.5284 10.4 168 | endloop 169 | endfacet 170 | facet normal 0 0 1 171 | outer loop 172 | vertex 168.75 -43.5284 10.4 173 | vertex 147 -47.2784 10.4 174 | vertex 190.5 -47.2784 10.4 175 | endloop 176 | endfacet 177 | facet normal 0 0 1 178 | outer loop 179 | vertex 147 -47.2784 10.4 180 | vertex 150.75 -43.5284 10.4 181 | vertex 147 -37.2784 10.4 182 | endloop 183 | endfacet 184 | facet normal 0 0 1 185 | outer loop 186 | vertex 190.5 -6.77836 10.4 187 | vertex 186.75 -10.5284 10.4 188 | vertex 190.5 -16.7784 10.4 189 | endloop 190 | endfacet 191 | facet normal 0 0 1 192 | outer loop 193 | vertex 190.5 -6.77836 10.4 194 | vertex 168.75 -10.5284 10.4 195 | vertex 186.75 -10.5284 10.4 196 | endloop 197 | endfacet 198 | facet normal 0 0 1 199 | outer loop 200 | vertex 168.75 -10.5284 10.4 201 | vertex 166.75 -10.5284 10.4 202 | vertex 168.75 -16.7784 10.4 203 | endloop 204 | endfacet 205 | facet normal -0 0 1 206 | outer loop 207 | vertex 147 -6.77836 10.4 208 | vertex 168.75 -10.5284 10.4 209 | vertex 190.5 -6.77836 10.4 210 | endloop 211 | endfacet 212 | facet normal 0 0 1 213 | outer loop 214 | vertex 168.75 -10.5284 10.4 215 | vertex 147 -6.77836 10.4 216 | vertex 166.75 -10.5284 10.4 217 | endloop 218 | endfacet 219 | facet normal 0 0 1 220 | outer loop 221 | vertex 166.75 -10.5284 10.4 222 | vertex 147 -6.77836 10.4 223 | vertex 150.75 -10.5284 10.4 224 | endloop 225 | endfacet 226 | facet normal 0 0 1 227 | outer loop 228 | vertex 147 -16.7784 10.4 229 | vertex 150.75 -10.5284 10.4 230 | vertex 147 -6.77836 10.4 231 | endloop 232 | endfacet 233 | facet normal 0 0 1 234 | outer loop 235 | vertex 150.75 -10.5284 10.4 236 | vertex 147 -16.7784 10.4 237 | vertex 150.75 -16.7784 10.4 238 | endloop 239 | endfacet 240 | facet normal 0 0 1 241 | outer loop 242 | vertex 190.5 -16.7784 10.4 243 | vertex 186.75 -10.5284 10.4 244 | vertex 186.75 -16.7784 10.4 245 | endloop 246 | endfacet 247 | facet normal 0 0 1 248 | outer loop 249 | vertex 168.75 -16.7784 10.4 250 | vertex 166.75 -10.5284 10.4 251 | vertex 166.75 -16.7784 10.4 252 | endloop 253 | endfacet 254 | facet normal 0 -1 0 255 | outer loop 256 | vertex 147 -47.2784 0 257 | vertex 190.5 -47.2784 10.4 258 | vertex 147 -47.2784 10.4 259 | endloop 260 | endfacet 261 | facet normal 0 -1 -0 262 | outer loop 263 | vertex 190.5 -47.2784 10.4 264 | vertex 147 -47.2784 0 265 | vertex 190.5 -47.2784 0 266 | endloop 267 | endfacet 268 | facet normal -1 0 0 269 | outer loop 270 | vertex 147 -6.77836 0 271 | vertex 147 -16.7784 5.2 272 | vertex 147 -6.77836 10.4 273 | endloop 274 | endfacet 275 | facet normal -1 0 0 276 | outer loop 277 | vertex 147 -6.77836 0 278 | vertex 147 -37.2784 5.2 279 | vertex 147 -16.7784 5.2 280 | endloop 281 | endfacet 282 | facet normal -1 0 0 283 | outer loop 284 | vertex 147 -47.2784 0 285 | vertex 147 -37.2784 5.2 286 | vertex 147 -6.77836 0 287 | endloop 288 | endfacet 289 | facet normal -1 0 0 290 | outer loop 291 | vertex 147 -47.2784 10.4 292 | vertex 147 -37.2784 5.2 293 | vertex 147 -47.2784 0 294 | endloop 295 | endfacet 296 | facet normal -1 0 0 297 | outer loop 298 | vertex 147 -37.2784 5.2 299 | vertex 147 -47.2784 10.4 300 | vertex 147 -37.2784 10.4 301 | endloop 302 | endfacet 303 | facet normal -1 -0 0 304 | outer loop 305 | vertex 147 -6.77836 10.4 306 | vertex 147 -16.7784 5.2 307 | vertex 147 -16.7784 10.4 308 | endloop 309 | endfacet 310 | facet normal 0 1 -0 311 | outer loop 312 | vertex 190.5 -6.77836 0 313 | vertex 147 -6.77836 10.4 314 | vertex 190.5 -6.77836 10.4 315 | endloop 316 | endfacet 317 | facet normal 0 1 0 318 | outer loop 319 | vertex 147 -6.77836 10.4 320 | vertex 190.5 -6.77836 0 321 | vertex 147 -6.77836 0 322 | endloop 323 | endfacet 324 | facet normal 1 -0 0 325 | outer loop 326 | vertex 190.5 -47.2784 10.4 327 | vertex 190.5 -37.2784 0 328 | vertex 190.5 -37.2784 10.4 329 | endloop 330 | endfacet 331 | facet normal 1 0 0 332 | outer loop 333 | vertex 190.5 -37.2784 0 334 | vertex 190.5 -47.2784 10.4 335 | vertex 190.5 -47.2784 0 336 | endloop 337 | endfacet 338 | facet normal 1 -0 0 339 | outer loop 340 | vertex 190.5 -16.7784 10.4 341 | vertex 190.5 -6.77836 0 342 | vertex 190.5 -6.77836 10.4 343 | endloop 344 | endfacet 345 | facet normal 1 0 0 346 | outer loop 347 | vertex 190.5 -6.77836 0 348 | vertex 190.5 -16.7784 10.4 349 | vertex 190.5 -16.7784 0 350 | endloop 351 | endfacet 352 | facet normal 1 0 0 353 | outer loop 354 | vertex 168.75 -37.2784 10.4 355 | vertex 168.75 -43.5284 10.4 356 | vertex 168.75 -37.2784 5.2 357 | endloop 358 | endfacet 359 | facet normal 1 0 0 360 | outer loop 361 | vertex 168.75 -16.7784 5.2 362 | vertex 168.75 -10.5284 10.4 363 | vertex 168.75 -16.7784 10.4 364 | endloop 365 | endfacet 366 | facet normal 1 0 0 367 | outer loop 368 | vertex 168.75 -10.5284 10.4 369 | vertex 168.75 -16.7784 5.2 370 | vertex 168.75 -10.5284 0 371 | endloop 372 | endfacet 373 | facet normal 1 -0 0 374 | outer loop 375 | vertex 168.75 -37.2784 5.2 376 | vertex 168.75 -10.5284 0 377 | vertex 168.75 -16.7784 5.2 378 | endloop 379 | endfacet 380 | facet normal 1 0 0 381 | outer loop 382 | vertex 168.75 -37.2784 5.2 383 | vertex 168.75 -43.5284 0 384 | vertex 168.75 -10.5284 0 385 | endloop 386 | endfacet 387 | facet normal 1 0 0 388 | outer loop 389 | vertex 168.75 -43.5284 0 390 | vertex 168.75 -37.2784 5.2 391 | vertex 168.75 -43.5284 10.4 392 | endloop 393 | endfacet 394 | facet normal 0 1 -0 395 | outer loop 396 | vertex 186.75 -43.5284 0 397 | vertex 168.75 -43.5284 10.4 398 | vertex 186.75 -43.5284 10.4 399 | endloop 400 | endfacet 401 | facet normal 0 1 0 402 | outer loop 403 | vertex 168.75 -43.5284 10.4 404 | vertex 186.75 -43.5284 0 405 | vertex 168.75 -43.5284 0 406 | endloop 407 | endfacet 408 | facet normal -1 0 0 409 | outer loop 410 | vertex 186.75 -16.7784 0 411 | vertex 186.75 -10.5284 10.4 412 | vertex 186.75 -10.5284 0 413 | endloop 414 | endfacet 415 | facet normal -1 -0 0 416 | outer loop 417 | vertex 186.75 -10.5284 10.4 418 | vertex 186.75 -16.7784 0 419 | vertex 186.75 -16.7784 10.4 420 | endloop 421 | endfacet 422 | facet normal -1 0 0 423 | outer loop 424 | vertex 186.75 -43.5284 0 425 | vertex 186.75 -37.2784 10.4 426 | vertex 186.75 -37.2784 0 427 | endloop 428 | endfacet 429 | facet normal -1 -0 0 430 | outer loop 431 | vertex 186.75 -37.2784 10.4 432 | vertex 186.75 -43.5284 0 433 | vertex 186.75 -43.5284 10.4 434 | endloop 435 | endfacet 436 | facet normal 0 -1 0 437 | outer loop 438 | vertex 168.75 -10.5284 0 439 | vertex 186.75 -10.5284 10.4 440 | vertex 168.75 -10.5284 10.4 441 | endloop 442 | endfacet 443 | facet normal 0 -1 -0 444 | outer loop 445 | vertex 186.75 -10.5284 10.4 446 | vertex 168.75 -10.5284 0 447 | vertex 186.75 -10.5284 0 448 | endloop 449 | endfacet 450 | facet normal 1 0 0 451 | outer loop 452 | vertex 150.75 -37.2784 10.4 453 | vertex 150.75 -43.5284 10.4 454 | vertex 150.75 -37.2784 5.2 455 | endloop 456 | endfacet 457 | facet normal 1 0 0 458 | outer loop 459 | vertex 150.75 -16.7784 5.2 460 | vertex 150.75 -10.5284 10.4 461 | vertex 150.75 -16.7784 10.4 462 | endloop 463 | endfacet 464 | facet normal 1 0 0 465 | outer loop 466 | vertex 150.75 -10.5284 10.4 467 | vertex 150.75 -16.7784 5.2 468 | vertex 150.75 -10.5284 0 469 | endloop 470 | endfacet 471 | facet normal 1 -0 0 472 | outer loop 473 | vertex 150.75 -37.2784 5.2 474 | vertex 150.75 -10.5284 0 475 | vertex 150.75 -16.7784 5.2 476 | endloop 477 | endfacet 478 | facet normal 1 0 0 479 | outer loop 480 | vertex 150.75 -37.2784 5.2 481 | vertex 150.75 -43.5284 0 482 | vertex 150.75 -10.5284 0 483 | endloop 484 | endfacet 485 | facet normal 1 0 0 486 | outer loop 487 | vertex 150.75 -43.5284 0 488 | vertex 150.75 -37.2784 5.2 489 | vertex 150.75 -43.5284 10.4 490 | endloop 491 | endfacet 492 | facet normal 0 1 -0 493 | outer loop 494 | vertex 166.75 -43.5284 0 495 | vertex 150.75 -43.5284 10.4 496 | vertex 166.75 -43.5284 10.4 497 | endloop 498 | endfacet 499 | facet normal 0 1 0 500 | outer loop 501 | vertex 150.75 -43.5284 10.4 502 | vertex 166.75 -43.5284 0 503 | vertex 150.75 -43.5284 0 504 | endloop 505 | endfacet 506 | facet normal -1 0 0 507 | outer loop 508 | vertex 166.75 -10.5284 0 509 | vertex 166.75 -16.7784 5.2 510 | vertex 166.75 -10.5284 10.4 511 | endloop 512 | endfacet 513 | facet normal -1 0 0 514 | outer loop 515 | vertex 166.75 -10.5284 0 516 | vertex 166.75 -37.2784 5.2 517 | vertex 166.75 -16.7784 5.2 518 | endloop 519 | endfacet 520 | facet normal -1 0 0 521 | outer loop 522 | vertex 166.75 -43.5284 0 523 | vertex 166.75 -37.2784 5.2 524 | vertex 166.75 -10.5284 0 525 | endloop 526 | endfacet 527 | facet normal -1 0 0 528 | outer loop 529 | vertex 166.75 -43.5284 10.4 530 | vertex 166.75 -37.2784 5.2 531 | vertex 166.75 -43.5284 0 532 | endloop 533 | endfacet 534 | facet normal -1 0 0 535 | outer loop 536 | vertex 166.75 -37.2784 5.2 537 | vertex 166.75 -43.5284 10.4 538 | vertex 166.75 -37.2784 10.4 539 | endloop 540 | endfacet 541 | facet normal -1 -0 0 542 | outer loop 543 | vertex 166.75 -10.5284 10.4 544 | vertex 166.75 -16.7784 5.2 545 | vertex 166.75 -16.7784 10.4 546 | endloop 547 | endfacet 548 | facet normal 0 -1 0 549 | outer loop 550 | vertex 150.75 -10.5284 0 551 | vertex 166.75 -10.5284 10.4 552 | vertex 150.75 -10.5284 10.4 553 | endloop 554 | endfacet 555 | facet normal 0 -1 -0 556 | outer loop 557 | vertex 166.75 -10.5284 10.4 558 | vertex 150.75 -10.5284 0 559 | vertex 166.75 -10.5284 0 560 | endloop 561 | endfacet 562 | facet normal -0 0 1 563 | outer loop 564 | vertex 147 -16.7784 5.2 565 | vertex 150.75 -37.2784 5.2 566 | vertex 150.75 -16.7784 5.2 567 | endloop 568 | endfacet 569 | facet normal 0 0 1 570 | outer loop 571 | vertex 150.75 -37.2784 5.2 572 | vertex 147 -16.7784 5.2 573 | vertex 147 -37.2784 5.2 574 | endloop 575 | endfacet 576 | facet normal -0 0 1 577 | outer loop 578 | vertex 166.75 -16.7784 5.2 579 | vertex 168.75 -37.2784 5.2 580 | vertex 168.75 -16.7784 5.2 581 | endloop 582 | endfacet 583 | facet normal 0 0 1 584 | outer loop 585 | vertex 168.75 -37.2784 5.2 586 | vertex 166.75 -16.7784 5.2 587 | vertex 166.75 -37.2784 5.2 588 | endloop 589 | endfacet 590 | facet normal 0 1 -0 591 | outer loop 592 | vertex 150.75 -37.2784 5.2 593 | vertex 147 -37.2784 10.4 594 | vertex 150.75 -37.2784 10.4 595 | endloop 596 | endfacet 597 | facet normal 0 1 0 598 | outer loop 599 | vertex 147 -37.2784 10.4 600 | vertex 150.75 -37.2784 5.2 601 | vertex 147 -37.2784 5.2 602 | endloop 603 | endfacet 604 | facet normal 0 1 -0 605 | outer loop 606 | vertex 168.75 -37.2784 5.2 607 | vertex 166.75 -37.2784 10.4 608 | vertex 168.75 -37.2784 10.4 609 | endloop 610 | endfacet 611 | facet normal 0 1 0 612 | outer loop 613 | vertex 166.75 -37.2784 10.4 614 | vertex 168.75 -37.2784 5.2 615 | vertex 166.75 -37.2784 5.2 616 | endloop 617 | endfacet 618 | facet normal 0 1 -0 619 | outer loop 620 | vertex 190.5 -37.2784 0 621 | vertex 186.75 -37.2784 10.4 622 | vertex 190.5 -37.2784 10.4 623 | endloop 624 | endfacet 625 | facet normal 0 1 0 626 | outer loop 627 | vertex 186.75 -37.2784 10.4 628 | vertex 190.5 -37.2784 0 629 | vertex 186.75 -37.2784 0 630 | endloop 631 | endfacet 632 | facet normal 0 -1 0 633 | outer loop 634 | vertex 147 -16.7784 5.2 635 | vertex 150.75 -16.7784 10.4 636 | vertex 147 -16.7784 10.4 637 | endloop 638 | endfacet 639 | facet normal 0 -1 -0 640 | outer loop 641 | vertex 150.75 -16.7784 10.4 642 | vertex 147 -16.7784 5.2 643 | vertex 150.75 -16.7784 5.2 644 | endloop 645 | endfacet 646 | facet normal 0 -1 0 647 | outer loop 648 | vertex 166.75 -16.7784 5.2 649 | vertex 168.75 -16.7784 10.4 650 | vertex 166.75 -16.7784 10.4 651 | endloop 652 | endfacet 653 | facet normal 0 -1 -0 654 | outer loop 655 | vertex 168.75 -16.7784 10.4 656 | vertex 166.75 -16.7784 5.2 657 | vertex 168.75 -16.7784 5.2 658 | endloop 659 | endfacet 660 | facet normal 0 -1 0 661 | outer loop 662 | vertex 186.75 -16.7784 0 663 | vertex 190.5 -16.7784 10.4 664 | vertex 186.75 -16.7784 10.4 665 | endloop 666 | endfacet 667 | facet normal 0 -1 -0 668 | outer loop 669 | vertex 190.5 -16.7784 10.4 670 | vertex 186.75 -16.7784 0 671 | vertex 190.5 -16.7784 0 672 | endloop 673 | endfacet 674 | endsolid OpenSCAD_Model 675 | -------------------------------------------------------------------------------- /gerbers/halfdeck-B.Mask.gbs: -------------------------------------------------------------------------------- 1 | G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.0.0-fee4fd1~66~ubuntu18.04.1* 2 | G04 #@! TF.CreationDate,2018-09-16T18:32:03-07:00* 3 | G04 #@! TF.ProjectId,halfdeck,68616C666465636B2E6B696361645F70,c1293dc* 4 | G04 #@! TF.SameCoordinates,Original* 5 | G04 #@! TF.FileFunction,Soldermask,Bot* 6 | G04 #@! TF.FilePolarity,Negative* 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.0.0-fee4fd1~66~ubuntu18.04.1) date Sun Sep 16 18:32:03 2018* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | %ADD10O,2.100000X2.100000*% 15 | %ADD11R,2.100000X2.100000*% 16 | %ADD12C,1.500000*% 17 | %ADD13C,2.050000*% 18 | %ADD14R,2.350000X2.050000*% 19 | %ADD15C,2.178000*% 20 | %ADD16R,2.178000X2.178000*% 21 | %ADD17C,2.100000*% 22 | %ADD18C,0.100000*% 23 | %ADD19C,2.100000*% 24 | %ADD20C,2.082800*% 25 | %ADD21C,2.686000*% 26 | %ADD22C,2.000000*% 27 | %ADD23R,2.000000X2.000000*% 28 | %ADD24C,4.400000*% 29 | G04 APERTURE END LIST* 30 | D10* 31 | G04 #@! TO.C,J5* 32 | X112730000Y-140810000D03* 33 | X115270000Y-140810000D03* 34 | X112730000Y-138270000D03* 35 | X115270000Y-138270000D03* 36 | X112730000Y-135730000D03* 37 | X115270000Y-135730000D03* 38 | X112730000Y-133190000D03* 39 | D11* 40 | X115270000Y-133190000D03* 41 | G04 #@! TD* 42 | D12* 43 | G04 #@! TO.C,J1* 44 | X154000000Y-32900000D03* 45 | X154000000Y-27900000D03* 46 | D13* 47 | X152400000Y-36000000D03* 48 | X155600000Y-36000000D03* 49 | X157600000Y-32900000D03* 50 | X150400000Y-32900000D03* 51 | D14* 52 | X158650000Y-27900000D03* 53 | X149350000Y-27900000D03* 54 | G04 #@! TD* 55 | D15* 56 | G04 #@! TO.C,U1* 57 | X192160000Y-32950000D03* 58 | X192160000Y-35490000D03* 59 | X192160000Y-38030000D03* 60 | X192160000Y-40570000D03* 61 | X192160000Y-43110000D03* 62 | X192160000Y-45650000D03* 63 | X192160000Y-48190000D03* 64 | X192160000Y-50730000D03* 65 | X192160000Y-53270000D03* 66 | X192160000Y-55810000D03* 67 | X192160000Y-58350000D03* 68 | X192160000Y-60890000D03* 69 | X192160000Y-63430000D03* 70 | X192160000Y-65970000D03* 71 | X192160000Y-68510000D03* 72 | D16* 73 | X192160000Y-71050000D03* 74 | D15* 75 | X171840000Y-45650000D03* 76 | D16* 77 | X171840000Y-43110000D03* 78 | D15* 79 | X171840000Y-48190000D03* 80 | X171840000Y-50730000D03* 81 | X171840000Y-53270000D03* 82 | X171840000Y-55810000D03* 83 | X171840000Y-58350000D03* 84 | X171840000Y-60890000D03* 85 | X171840000Y-63430000D03* 86 | X171840000Y-65970000D03* 87 | X171840000Y-68510000D03* 88 | X171840000Y-71050000D03* 89 | G04 #@! TD* 90 | D17* 91 | G04 #@! TO.C,J4* 92 | X111000000Y-33000000D03* 93 | D18* 94 | G36* 95 | X112086005Y-34012716D02* 96 | X109987284Y-34086005D01* 97 | X109913995Y-31987284D01* 98 | X112012716Y-31913995D01* 99 | X112086005Y-34012716D01* 100 | X112086005Y-34012716D01* 101 | G37* 102 | D17* 103 | X110911355Y-30461547D03* 104 | D19* 105 | X110911355Y-30461547D02* 106 | X110911355Y-30461547D01* 107 | D17* 108 | X113538453Y-32911355D03* 109 | D19* 110 | X113538453Y-32911355D02* 111 | X113538453Y-32911355D01* 112 | D17* 113 | X113449808Y-30372903D03* 114 | D19* 115 | X113449808Y-30372903D02* 116 | X113449808Y-30372903D01* 117 | D17* 118 | X116076905Y-32822711D03* 119 | D19* 120 | X116076905Y-32822711D02* 121 | X116076905Y-32822711D01* 122 | D17* 123 | X115988261Y-30284258D03* 124 | D19* 125 | X115988261Y-30284258D02* 126 | X115988261Y-30284258D01* 127 | D17* 128 | X118615358Y-32734066D03* 129 | D19* 130 | X118615358Y-32734066D02* 131 | X118615358Y-32734066D01* 132 | D17* 133 | X118526713Y-30195613D03* 134 | D19* 135 | X118526713Y-30195613D02* 136 | X118526713Y-30195613D01* 137 | D17* 138 | X121153811Y-32645421D03* 139 | D19* 140 | X121153811Y-32645421D02* 141 | X121153811Y-32645421D01* 142 | D17* 143 | X121065166Y-30106968D03* 144 | D19* 145 | X121065166Y-30106968D02* 146 | X121065166Y-30106968D01* 147 | D17* 148 | X123692265Y-32556776D03* 149 | D19* 150 | X123692265Y-32556776D02* 151 | X123692265Y-32556776D01* 152 | D17* 153 | X123603619Y-30018324D03* 154 | D19* 155 | X123603619Y-30018324D02* 156 | X123603619Y-30018324D01* 157 | D17* 158 | X126230716Y-32468132D03* 159 | D19* 160 | X126230716Y-32468132D02* 161 | X126230716Y-32468132D01* 162 | D17* 163 | X126142071Y-29929679D03* 164 | D19* 165 | X126142071Y-29929679D02* 166 | X126142071Y-29929679D01* 167 | D17* 168 | X128769169Y-32379487D03* 169 | D19* 170 | X128769169Y-32379487D02* 171 | X128769169Y-32379487D01* 172 | D17* 173 | X128680524Y-29841034D03* 174 | D19* 175 | X128680524Y-29841034D02* 176 | X128680524Y-29841034D01* 177 | D17* 178 | X131307622Y-32290842D03* 179 | D19* 180 | X131307622Y-32290842D02* 181 | X131307622Y-32290842D01* 182 | D17* 183 | X131218977Y-29752390D03* 184 | D19* 185 | X131218977Y-29752390D02* 186 | X131218977Y-29752390D01* 187 | D17* 188 | X133846074Y-32202198D03* 189 | D19* 190 | X133846074Y-32202198D02* 191 | X133846074Y-32202198D01* 192 | D17* 193 | X133757430Y-29663745D03* 194 | D19* 195 | X133757430Y-29663745D02* 196 | X133757430Y-29663745D01* 197 | D17* 198 | X136384527Y-32113553D03* 199 | D19* 200 | X136384527Y-32113553D02* 201 | X136384527Y-32113553D01* 202 | D17* 203 | X136295882Y-29575100D03* 204 | D19* 205 | X136295882Y-29575100D02* 206 | X136295882Y-29575100D01* 207 | D17* 208 | X138922980Y-32024908D03* 209 | D19* 210 | X138922980Y-32024908D02* 211 | X138922980Y-32024908D01* 212 | D17* 213 | X138834335Y-29486455D03* 214 | D19* 215 | X138834335Y-29486455D02* 216 | X138834335Y-29486455D01* 217 | G04 #@! TD* 218 | D20* 219 | G04 #@! TO.C,U2* 220 | X174350000Y-67360000D03* 221 | X174350000Y-64820000D03* 222 | X174350000Y-62280000D03* 223 | X174350000Y-59740000D03* 224 | X174350000Y-54660000D03* 225 | X174350000Y-52120000D03* 226 | X174350000Y-49580000D03* 227 | X174350000Y-47040000D03* 228 | X189590000Y-59740000D03* 229 | X189590000Y-47040000D03* 230 | X189590000Y-67360000D03* 231 | X189590000Y-49580000D03* 232 | X189590000Y-54660000D03* 233 | X189590000Y-64820000D03* 234 | X189590000Y-52120000D03* 235 | X189590000Y-62280000D03* 236 | X180700181Y-39420295D03* 237 | X183240181Y-39420295D03* 238 | X188320181Y-39420295D03* 239 | X185780181Y-39420295D03* 240 | X178160000Y-39420295D03* 241 | X175620000Y-39420295D03* 242 | G04 #@! TD* 243 | D21* 244 | G04 #@! TO.C,SW00* 245 | X45065000Y-46588800D03* 246 | X38715000Y-49128800D03* 247 | X46335000Y-49128800D03* 248 | X39985000Y-46588800D03* 249 | G04 #@! TD* 250 | D22* 251 | G04 #@! TO.C,D00* 252 | X43150000Y-43143800D03* 253 | D23* 254 | X50950000Y-43143800D03* 255 | G04 #@! TD* 256 | D21* 257 | G04 #@! TO.C,SW01* 258 | X83165000Y-79926200D03* 259 | X76815000Y-82466200D03* 260 | X84435000Y-82466200D03* 261 | X78085000Y-79926200D03* 262 | G04 #@! TD* 263 | D22* 264 | G04 #@! TO.C,D01* 265 | X81250000Y-76481200D03* 266 | D23* 267 | X89050000Y-76481200D03* 268 | G04 #@! TD* 269 | D21* 270 | G04 #@! TO.C,SW02* 271 | X102215000Y-39445000D03* 272 | X95865000Y-41985000D03* 273 | X103485000Y-41985000D03* 274 | X97135000Y-39445000D03* 275 | G04 #@! TD* 276 | D22* 277 | G04 #@! TO.C,D02* 278 | X100300000Y-36000000D03* 279 | D23* 280 | X108100000Y-36000000D03* 281 | G04 #@! TD* 282 | D21* 283 | G04 #@! TO.C,SW03* 284 | X45065000Y-103739000D03* 285 | X38715000Y-106279000D03* 286 | X46335000Y-106279000D03* 287 | X39985000Y-103739000D03* 288 | G04 #@! TD* 289 | D22* 290 | G04 #@! TO.C,D03* 291 | X43150000Y-100294000D03* 292 | D23* 293 | X50950000Y-100294000D03* 294 | G04 #@! TD* 295 | D21* 296 | G04 #@! TO.C,SW04* 297 | X140315000Y-44207500D03* 298 | X133965000Y-46747500D03* 299 | X141585000Y-46747500D03* 300 | X135235000Y-44207500D03* 301 | G04 #@! TD* 302 | D22* 303 | G04 #@! TO.C,D04* 304 | X138400000Y-40762500D03* 305 | D23* 306 | X146200000Y-40762500D03* 307 | G04 #@! TD* 308 | D21* 309 | G04 #@! TO.C,SW05* 310 | X140315000Y-101358000D03* 311 | X133965000Y-103898000D03* 312 | X141585000Y-103898000D03* 313 | X135235000Y-101358000D03* 314 | G04 #@! TD* 315 | D22* 316 | G04 #@! TO.C,D05* 317 | X138400000Y-97912500D03* 318 | D23* 319 | X146200000Y-97912500D03* 320 | G04 #@! TD* 321 | D21* 322 | G04 #@! TO.C,SW10* 323 | X64115000Y-46588800D03* 324 | X57765000Y-49128800D03* 325 | X65385000Y-49128800D03* 326 | X59035000Y-46588800D03* 327 | G04 #@! TD* 328 | D22* 329 | G04 #@! TO.C,D10* 330 | X62200000Y-43143800D03* 331 | D23* 332 | X70000000Y-43143800D03* 333 | G04 #@! TD* 334 | D21* 335 | G04 #@! TO.C,SW11* 336 | X83165000Y-60876200D03* 337 | X76815000Y-63416200D03* 338 | X84435000Y-63416200D03* 339 | X78085000Y-60876200D03* 340 | G04 #@! TD* 341 | D22* 342 | G04 #@! TO.C,D11* 343 | X81250000Y-57431200D03* 344 | D23* 345 | X89050000Y-57431200D03* 346 | G04 #@! TD* 347 | D21* 348 | G04 #@! TO.C,SW12* 349 | X102215000Y-58495000D03* 350 | X95865000Y-61035000D03* 351 | X103485000Y-61035000D03* 352 | X97135000Y-58495000D03* 353 | G04 #@! TD* 354 | D22* 355 | G04 #@! TO.C,D12* 356 | X100300000Y-55050000D03* 357 | D23* 358 | X108100000Y-55050000D03* 359 | G04 #@! TD* 360 | D21* 361 | G04 #@! TO.C,SW13* 362 | X64115000Y-103739000D03* 363 | X57765000Y-106279000D03* 364 | X65385000Y-106279000D03* 365 | X59035000Y-103739000D03* 366 | G04 #@! TD* 367 | D22* 368 | G04 #@! TO.C,D13* 369 | X62200000Y-100294000D03* 370 | D23* 371 | X70000000Y-100294000D03* 372 | G04 #@! TD* 373 | D21* 374 | G04 #@! TO.C,SW14* 375 | X140315000Y-63257500D03* 376 | X133965000Y-65797500D03* 377 | X141585000Y-65797500D03* 378 | X135235000Y-63257500D03* 379 | G04 #@! TD* 380 | D22* 381 | G04 #@! TO.C,D14* 382 | X138400000Y-59812500D03* 383 | D23* 384 | X146200000Y-59812500D03* 385 | G04 #@! TD* 386 | D21* 387 | G04 #@! TO.C,SW15* 388 | X152435544Y-124716243D03* 389 | X145740949Y-126114989D03* 390 | X153245184Y-127438188D03* 391 | X147432721Y-123834110D03* 392 | G04 #@! TD* 393 | D22* 394 | G04 #@! TO.C,D15* 395 | X151148250Y-120991772D03* 396 | X158829750Y-122346228D03* 397 | D18* 398 | G36* 399 | X159988206Y-121535068D02* 400 | X159640910Y-123504684D01* 401 | X157671294Y-123157388D01* 402 | X158018590Y-121187772D01* 403 | X159988206Y-121535068D01* 404 | X159988206Y-121535068D01* 405 | G37* 406 | G04 #@! TD* 407 | D21* 408 | G04 #@! TO.C,SW20* 409 | X64115000Y-65638800D03* 410 | X57765000Y-68178800D03* 411 | X65385000Y-68178800D03* 412 | X59035000Y-65638800D03* 413 | G04 #@! TD* 414 | D22* 415 | G04 #@! TO.C,D20* 416 | X62200000Y-62193800D03* 417 | D23* 418 | X70000000Y-62193800D03* 419 | G04 #@! TD* 420 | D21* 421 | G04 #@! TO.C,SW21* 422 | X102215000Y-77545000D03* 423 | X95865000Y-80085000D03* 424 | X103485000Y-80085000D03* 425 | X97135000Y-77545000D03* 426 | G04 #@! TD* 427 | D22* 428 | G04 #@! TO.C,D21* 429 | X100300000Y-74100000D03* 430 | D23* 431 | X108100000Y-74100000D03* 432 | G04 #@! TD* 433 | D21* 434 | G04 #@! TO.C,SW22* 435 | X121265000Y-60876200D03* 436 | X114915000Y-63416200D03* 437 | X122535000Y-63416200D03* 438 | X116185000Y-60876200D03* 439 | G04 #@! TD* 440 | D22* 441 | G04 #@! TO.C,D22* 442 | X119350000Y-57431200D03* 443 | D23* 444 | X127150000Y-57431200D03* 445 | G04 #@! TD* 446 | D21* 447 | G04 #@! TO.C,SW23* 448 | X64115000Y-122789000D03* 449 | X57765000Y-125329000D03* 450 | X65385000Y-125329000D03* 451 | X59035000Y-122789000D03* 452 | G04 #@! TD* 453 | D22* 454 | G04 #@! TO.C,D23* 455 | X62200000Y-119344000D03* 456 | D23* 457 | X70000000Y-119344000D03* 458 | G04 #@! TD* 459 | D21* 460 | G04 #@! TO.C,SW24* 461 | X140315000Y-82307500D03* 462 | X133965000Y-84847500D03* 463 | X141585000Y-84847500D03* 464 | X135235000Y-82307500D03* 465 | G04 #@! TD* 466 | D22* 467 | G04 #@! TO.C,D24* 468 | X138400000Y-78862500D03* 469 | D23* 470 | X146200000Y-78862500D03* 471 | G04 #@! TD* 472 | D21* 473 | G04 #@! TO.C,SW25* 474 | X171196544Y-128024243D03* 475 | X164501949Y-129422989D03* 476 | X172006184Y-130746188D03* 477 | X166193721Y-127142110D03* 478 | G04 #@! TD* 479 | D22* 480 | G04 #@! TO.C,D25* 481 | X169908250Y-124299772D03* 482 | X177589750Y-125654228D03* 483 | D18* 484 | G36* 485 | X178748206Y-124843068D02* 486 | X178400910Y-126812684D01* 487 | X176431294Y-126465388D01* 488 | X176778590Y-124495772D01* 489 | X178748206Y-124843068D01* 490 | X178748206Y-124843068D01* 491 | G37* 492 | G04 #@! TD* 493 | D21* 494 | G04 #@! TO.C,SW30* 495 | X45065000Y-65638800D03* 496 | X38715000Y-68178800D03* 497 | X46335000Y-68178800D03* 498 | X39985000Y-65638800D03* 499 | G04 #@! TD* 500 | D22* 501 | G04 #@! TO.C,D30* 502 | X43150000Y-62193800D03* 503 | D23* 504 | X50950000Y-62193800D03* 505 | G04 #@! TD* 506 | D21* 507 | G04 #@! TO.C,SW31* 508 | X102215000Y-96595000D03* 509 | X95865000Y-99135000D03* 510 | X103485000Y-99135000D03* 511 | X97135000Y-96595000D03* 512 | G04 #@! TD* 513 | D22* 514 | G04 #@! TO.C,D31* 515 | X100300000Y-93150000D03* 516 | D23* 517 | X108100000Y-93150000D03* 518 | G04 #@! TD* 519 | D21* 520 | G04 #@! TO.C,SW32* 521 | X121265000Y-79926200D03* 522 | X114915000Y-82466200D03* 523 | X122535000Y-82466200D03* 524 | X116185000Y-79926200D03* 525 | G04 #@! TD* 526 | D22* 527 | G04 #@! TO.C,D32* 528 | X119350000Y-76481200D03* 529 | D23* 530 | X127150000Y-76481200D03* 531 | G04 #@! TD* 532 | D21* 533 | G04 #@! TO.C,SW33* 534 | X64115000Y-141839000D03* 535 | X57765000Y-144379000D03* 536 | X65385000Y-144379000D03* 537 | X59035000Y-141839000D03* 538 | G04 #@! TD* 539 | D22* 540 | G04 #@! TO.C,D33* 541 | X62200000Y-138394000D03* 542 | D23* 543 | X70000000Y-138394000D03* 544 | G04 #@! TD* 545 | D21* 546 | G04 #@! TO.C,SW34* 547 | X159365000Y-84688800D03* 548 | X153015000Y-87228800D03* 549 | X160635000Y-87228800D03* 550 | X154285000Y-84688800D03* 551 | G04 #@! TD* 552 | D22* 553 | G04 #@! TO.C,D34* 554 | X157450000Y-81243800D03* 555 | D23* 556 | X165250000Y-81243800D03* 557 | G04 #@! TD* 558 | D21* 559 | G04 #@! TO.C,SW35* 560 | X167888544Y-146785243D03* 561 | X161193949Y-148183989D03* 562 | X168698184Y-149507188D03* 563 | X162885721Y-145903110D03* 564 | G04 #@! TD* 565 | D22* 566 | G04 #@! TO.C,D35* 567 | X166600250Y-143059772D03* 568 | X174281750Y-144414228D03* 569 | D18* 570 | G36* 571 | X175440206Y-143603068D02* 572 | X175092910Y-145572684D01* 573 | X173123294Y-145225388D01* 574 | X173470590Y-143255772D01* 575 | X175440206Y-143603068D01* 576 | X175440206Y-143603068D01* 577 | G37* 578 | G04 #@! TD* 579 | D21* 580 | G04 #@! TO.C,SW40* 581 | X45065000Y-84688800D03* 582 | X38715000Y-87228800D03* 583 | X46335000Y-87228800D03* 584 | X39985000Y-84688800D03* 585 | G04 #@! TD* 586 | D22* 587 | G04 #@! TO.C,D40* 588 | X43150000Y-81243800D03* 589 | D23* 590 | X50950000Y-81243800D03* 591 | G04 #@! TD* 592 | D21* 593 | G04 #@! TO.C,SW41* 594 | X83165000Y-98976000D03* 595 | X76815000Y-101516000D03* 596 | X84435000Y-101516000D03* 597 | X78085000Y-98976000D03* 598 | G04 #@! TD* 599 | D22* 600 | G04 #@! TO.C,D41* 601 | X81250000Y-95531200D03* 602 | D23* 603 | X89050000Y-95531200D03* 604 | G04 #@! TD* 605 | D21* 606 | G04 #@! TO.C,SW42* 607 | X121265000Y-98976000D03* 608 | X114915000Y-101516000D03* 609 | X122535000Y-101516000D03* 610 | X116185000Y-98976000D03* 611 | G04 #@! TD* 612 | D22* 613 | G04 #@! TO.C,D42* 614 | X119350000Y-95531200D03* 615 | D23* 616 | X127150000Y-95531200D03* 617 | G04 #@! TD* 618 | D21* 619 | G04 #@! TO.C,SW43* 620 | X83165000Y-141839000D03* 621 | X76815000Y-144379000D03* 622 | X84435000Y-144379000D03* 623 | X78085000Y-141839000D03* 624 | G04 #@! TD* 625 | D22* 626 | G04 #@! TO.C,D43* 627 | X81250000Y-138394000D03* 628 | D23* 629 | X89050000Y-138394000D03* 630 | G04 #@! TD* 631 | D21* 632 | G04 #@! TO.C,SW44* 633 | X159365000Y-65638800D03* 634 | X153015000Y-68178800D03* 635 | X160635000Y-68178800D03* 636 | X154285000Y-65638800D03* 637 | G04 #@! TD* 638 | D22* 639 | G04 #@! TO.C,D44* 640 | X157450000Y-62193800D03* 641 | D23* 642 | X165250000Y-62193800D03* 643 | G04 #@! TD* 644 | D21* 645 | G04 #@! TO.C,SW45* 646 | X149127544Y-143477243D03* 647 | X142432949Y-144875989D03* 648 | X149937184Y-146199188D03* 649 | X144124721Y-142595110D03* 650 | G04 #@! TD* 651 | D22* 652 | G04 #@! TO.C,D45* 653 | X147840250Y-139751772D03* 654 | X155521750Y-141106228D03* 655 | D18* 656 | G36* 657 | X156680206Y-140295068D02* 658 | X156332910Y-142264684D01* 659 | X154363294Y-141917388D01* 660 | X154710590Y-139947772D01* 661 | X156680206Y-140295068D01* 662 | X156680206Y-140295068D01* 663 | G37* 664 | G04 #@! TD* 665 | D21* 666 | G04 #@! TO.C,SW50* 667 | X83165000Y-41826200D03* 668 | X76815000Y-44366200D03* 669 | X84435000Y-44366200D03* 670 | X78085000Y-41826200D03* 671 | G04 #@! TD* 672 | D22* 673 | G04 #@! TO.C,D50* 674 | X81250000Y-38381200D03* 675 | D23* 676 | X89050000Y-38381200D03* 677 | G04 #@! TD* 678 | D21* 679 | G04 #@! TO.C,SW51* 680 | X64115000Y-84688800D03* 681 | X57765000Y-87228800D03* 682 | X65385000Y-87228800D03* 683 | X59035000Y-84688800D03* 684 | G04 #@! TD* 685 | D22* 686 | G04 #@! TO.C,D51* 687 | X62200000Y-81243800D03* 688 | D23* 689 | X70000000Y-81243800D03* 690 | G04 #@! TD* 691 | D21* 692 | G04 #@! TO.C,SW52* 693 | X121265000Y-41826200D03* 694 | X114915000Y-44366200D03* 695 | X122535000Y-44366200D03* 696 | X116185000Y-41826200D03* 697 | G04 #@! TD* 698 | D22* 699 | G04 #@! TO.C,D52* 700 | X119350000Y-38381200D03* 701 | D23* 702 | X127150000Y-38381200D03* 703 | G04 #@! TD* 704 | D21* 705 | G04 #@! TO.C,SW53* 706 | X45065000Y-141839000D03* 707 | X38715000Y-144379000D03* 708 | X46335000Y-144379000D03* 709 | X39985000Y-141839000D03* 710 | G04 #@! TD* 711 | D22* 712 | G04 #@! TO.C,D53* 713 | X43150000Y-138394000D03* 714 | D23* 715 | X50950000Y-138394000D03* 716 | G04 #@! TD* 717 | D21* 718 | G04 #@! TO.C,SW54* 719 | X159365000Y-46588800D03* 720 | X153015000Y-49128800D03* 721 | X160635000Y-49128800D03* 722 | X154285000Y-46588800D03* 723 | G04 #@! TD* 724 | D22* 725 | G04 #@! TO.C,D54* 726 | X157450000Y-43143800D03* 727 | D23* 728 | X165250000Y-43143800D03* 729 | G04 #@! TD* 730 | D21* 731 | G04 #@! TO.C,SW55* 732 | X174504544Y-109264243D03* 733 | X167809949Y-110662989D03* 734 | X175314184Y-111986188D03* 735 | X169501721Y-108382110D03* 736 | G04 #@! TD* 737 | D22* 738 | G04 #@! TO.C,D55* 739 | X173216250Y-105538772D03* 740 | X180897750Y-106893228D03* 741 | D18* 742 | G36* 743 | X182056206Y-106082068D02* 744 | X181708910Y-108051684D01* 745 | X179739294Y-107704388D01* 746 | X180086590Y-105734772D01* 747 | X182056206Y-106082068D01* 748 | X182056206Y-106082068D01* 749 | G37* 750 | G04 #@! TD* 751 | D24* 752 | G04 #@! TO.C,CP0* 753 | X86956600Y-29504700D03* 754 | G04 #@! TD* 755 | G04 #@! TO.C,CP1* 756 | X27500000Y-36936800D03* 757 | G04 #@! TD* 758 | G04 #@! TO.C,CP2* 759 | X27500000Y-99386100D03* 760 | G04 #@! TD* 761 | G04 #@! TO.C,CP3* 762 | X27500000Y-161835000D03* 763 | G04 #@! TD* 764 | G04 #@! TO.C,CP4* 765 | X102061000Y-165141000D03* 766 | G04 #@! TD* 767 | G04 #@! TO.C,CP5* 768 | X176622000Y-168446000D03* 769 | G04 #@! TD* 770 | G04 #@! TO.C,CP6* 771 | X196500000Y-84291300D03* 772 | G04 #@! TD* 773 | G04 #@! TO.C,CP7* 774 | X196500000Y-28602000D03* 775 | G04 #@! TD* 776 | M02* 777 | -------------------------------------------------------------------------------- /gerbers/halfdeck-Edge.Cuts.gm1: -------------------------------------------------------------------------------- 1 | G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.0.0-fee4fd1~66~ubuntu18.04.1* 2 | G04 #@! TF.CreationDate,2018-09-16T18:32:03-07:00* 3 | G04 #@! TF.ProjectId,halfdeck,68616C666465636B2E6B696361645F70,c1293dc* 4 | G04 #@! TF.SameCoordinates,Original* 5 | G04 #@! TF.FileFunction,Profile,NP* 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW 5.0.0-fee4fd1~66~ubuntu18.04.1) date Sun Sep 16 18:32:03 2018* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %ADD10C,0.150000*% 14 | G04 APERTURE END LIST* 15 | D10* 16 | X133000000Y-144000000D02* 17 | X124500000Y-144000000D01* 18 | X124500000Y-144000000D02* 19 | X124500000Y-130000000D01* 20 | X124500000Y-130000000D02* 21 | X133000000Y-130000000D01* 22 | X133000000Y-130000000D02* 23 | X133000000Y-144000000D01* 24 | X95000000Y-144000000D02* 25 | X95000000Y-130000000D01* 26 | X103500000Y-144000000D02* 27 | X95000000Y-144000000D01* 28 | X103500000Y-130000000D02* 29 | X103500000Y-144000000D01* 30 | X95000000Y-130000000D02* 31 | X103500000Y-130000000D01* 32 | X151751083Y-25035626D02* 33 | X86880687Y-27005874D01* 34 | X156250000Y-26500000D02* 35 | X156250000Y-25000000D01* 36 | X151750000Y-26500000D02* 37 | X156250000Y-26500000D01* 38 | X151750000Y-25000000D02* 39 | X151750000Y-26500000D01* 40 | X86880687Y-27005874D02* 41 | X86646495Y-27024027D01* 42 | X86646495Y-27024027D02* 43 | X27189913Y-34456100D01* 44 | X27189913Y-34456100D02* 45 | X26952512Y-34497480D01* 46 | X26952512Y-34497480D02* 47 | X26720198Y-34561524D01* 48 | X26720198Y-34561524D02* 49 | X26495130Y-34647638D01* 50 | X26495130Y-34647638D02* 51 | X26279398Y-34755022D01* 52 | X26279398Y-34755022D02* 53 | X26075008Y-34882677D01* 54 | X26075008Y-34882677D02* 55 | X25883857Y-35029419D01* 56 | X25883857Y-35029419D02* 57 | X25707723Y-35193882D01* 58 | X25707723Y-35193882D02* 59 | X25548242Y-35374540D01* 60 | X25548242Y-35374540D02* 61 | X25406895Y-35569713D01* 62 | X25406895Y-35569713D02* 63 | X25284997Y-35777588D01* 64 | X25284997Y-35777588D02* 65 | X25183678Y-35996234D01* 66 | X25183678Y-35996234D02* 67 | X25103882Y-36223619D01* 68 | X25103882Y-36223619D02* 69 | X25046349Y-36457631D01* 70 | X25046349Y-36457631D02* 71 | X25011614Y-36696094D01* 72 | X25011614Y-36696094D02* 73 | X25000000Y-36936794D01* 74 | X25000000Y-36936794D02* 75 | X25000000Y-134393750D01* 76 | X25000000Y-134393750D02* 77 | X25000000Y-161835383D01* 78 | X25000000Y-161835383D02* 79 | X25011369Y-162073537D01* 80 | X25011369Y-162073537D02* 81 | X25045374Y-162309524D01* 82 | X25045374Y-162309524D02* 83 | X25101704Y-162541199D01* 84 | X25101704Y-162541199D02* 85 | X25179848Y-162766454D01* 86 | X25179848Y-162766454D02* 87 | X25279094Y-162983241D01* 88 | X25279094Y-162983241D02* 89 | X25398540Y-163189587D01* 90 | X25398540Y-163189587D02* 91 | X25537101Y-163383616D01* 92 | X25537101Y-163383616D02* 93 | X25693514Y-163563564D01* 94 | X25693514Y-163563564D02* 95 | X25866358Y-163727793D01* 96 | X25866358Y-163727793D02* 97 | X26054061Y-163874810D01* 98 | X26054061Y-163874810D02* 99 | X26254915Y-164003277D01* 100 | X26254915Y-164003277D02* 101 | X26467094Y-164112027D01* 102 | X26467094Y-164112027D02* 103 | X26688668Y-164200069D01* 104 | X26688668Y-164200069D02* 105 | X26917621Y-164266604D01* 106 | X26917621Y-164266604D02* 107 | X27151871Y-164311026D01* 108 | X27151871Y-164311026D02* 109 | X27389287Y-164332931D01* 110 | X27389287Y-164332931D02* 111 | X176510949Y-170943303D01* 112 | X176510949Y-170943303D02* 113 | X176757834Y-170942044D01* 114 | X176757834Y-170942044D02* 115 | X177003390Y-170916440D01* 116 | X177003390Y-170916440D02* 117 | X177245224Y-170866741D01* 118 | X177245224Y-170866741D02* 119 | X177480977Y-170793430D01* 120 | X177480977Y-170793430D02* 121 | X177708349Y-170697224D01* 122 | X177708349Y-170697224D02* 123 | X177925123Y-170579060D01* 124 | X177925123Y-170579060D02* 125 | X178129185Y-170440091D01* 126 | X178129185Y-170440091D02* 127 | X178318545Y-170281672D01* 128 | X178318545Y-170281672D02* 129 | X178491355Y-170105348D01* 130 | X178491355Y-170105348D02* 131 | X178645931Y-169912838D01* 132 | X178645931Y-169912838D02* 133 | X178780766Y-169706021D01* 134 | X178780766Y-169706021D02* 135 | X178894543Y-169486913D01* 136 | X178894543Y-169486913D02* 137 | X178986154Y-169257651D01* 138 | X178986154Y-169257651D02* 139 | X179054706Y-169020471D01* 140 | X179054706Y-169020471D02* 141 | X198933044Y-84865973D01* 142 | X198933044Y-84865973D02* 143 | X198983205Y-84580559D01* 144 | X198983205Y-84580559D02* 145 | X199000000Y-84291258D01* 146 | X199000000Y-84291258D02* 147 | X199000000Y-28601997D01* 148 | X199000000Y-28601997D02* 149 | X198988591Y-28363431D01* 150 | X198988591Y-28363431D02* 151 | X198954469Y-28127041D01* 152 | X198954469Y-28127041D02* 153 | X198897944Y-27894987D01* 154 | X198897944Y-27894987D02* 155 | X198819533Y-27669386D01* 156 | X198819533Y-27669386D02* 157 | X198719952Y-27452296D01* 158 | X198719952Y-27452296D02* 159 | X198600109Y-27245700D01* 160 | X198600109Y-27245700D02* 161 | X198461098Y-27051483D01* 162 | X198461098Y-27051483D02* 163 | X198304188Y-26871418D01* 164 | X198304188Y-26871418D02* 165 | X198130811Y-26707148D01* 166 | X198130811Y-26707148D02* 167 | X197942550Y-26560172D01* 168 | X197942550Y-26560172D02* 169 | X197741122Y-26431833D01* 170 | X197741122Y-26431833D02* 171 | X197528367Y-26323300D01* 172 | X197528367Y-26323300D02* 173 | X197306225Y-26235565D01* 174 | X197306225Y-26235565D02* 175 | X197076725Y-26169429D01* 176 | X197076725Y-26169429D02* 177 | X196841961Y-26125495D01* 178 | X196841961Y-26125495D02* 179 | X196604076Y-26104165D01* 180 | X196604076Y-26104165D02* 181 | X170156137Y-25002167D01* 182 | X170156137Y-25002167D02* 183 | X170052061Y-25000000D01* 184 | X170052061Y-25000000D02* 185 | X156250000Y-25000000D01* 186 | M02* 187 | -------------------------------------------------------------------------------- /gerbers/halfdeck-F.Mask.gts: -------------------------------------------------------------------------------- 1 | G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.0.0-fee4fd1~66~ubuntu18.04.1* 2 | G04 #@! TF.CreationDate,2018-09-16T18:32:03-07:00* 3 | G04 #@! TF.ProjectId,halfdeck,68616C666465636B2E6B696361645F70,c1293dc* 4 | G04 #@! TF.SameCoordinates,Original* 5 | G04 #@! TF.FileFunction,Soldermask,Top* 6 | G04 #@! TF.FilePolarity,Negative* 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.0.0-fee4fd1~66~ubuntu18.04.1) date Sun Sep 16 18:32:03 2018* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | %ADD10O,2.100000X2.100000*% 15 | %ADD11R,2.100000X2.100000*% 16 | %ADD12C,1.500000*% 17 | %ADD13C,2.050000*% 18 | %ADD14R,2.350000X2.050000*% 19 | %ADD15C,2.178000*% 20 | %ADD16R,2.178000X2.178000*% 21 | %ADD17C,2.100000*% 22 | %ADD18C,0.100000*% 23 | %ADD19C,2.100000*% 24 | %ADD20R,1.400000X1.900000*% 25 | %ADD21C,2.082800*% 26 | %ADD22C,2.686000*% 27 | %ADD23C,2.000000*% 28 | %ADD24R,2.000000X2.000000*% 29 | %ADD25C,4.400000*% 30 | G04 APERTURE END LIST* 31 | D10* 32 | G04 #@! TO.C,J5* 33 | X112730000Y-140810000D03* 34 | X115270000Y-140810000D03* 35 | X112730000Y-138270000D03* 36 | X115270000Y-138270000D03* 37 | X112730000Y-135730000D03* 38 | X115270000Y-135730000D03* 39 | X112730000Y-133190000D03* 40 | D11* 41 | X115270000Y-133190000D03* 42 | G04 #@! TD* 43 | D12* 44 | G04 #@! TO.C,J1* 45 | X154000000Y-32900000D03* 46 | X154000000Y-27900000D03* 47 | D13* 48 | X152400000Y-36000000D03* 49 | X155600000Y-36000000D03* 50 | X157600000Y-32900000D03* 51 | X150400000Y-32900000D03* 52 | D14* 53 | X158650000Y-27900000D03* 54 | X149350000Y-27900000D03* 55 | G04 #@! TD* 56 | D15* 57 | G04 #@! TO.C,U1* 58 | X192160000Y-32950000D03* 59 | X192160000Y-35490000D03* 60 | X192160000Y-38030000D03* 61 | X192160000Y-40570000D03* 62 | X192160000Y-43110000D03* 63 | X192160000Y-45650000D03* 64 | X192160000Y-48190000D03* 65 | X192160000Y-50730000D03* 66 | X192160000Y-53270000D03* 67 | X192160000Y-55810000D03* 68 | X192160000Y-58350000D03* 69 | X192160000Y-60890000D03* 70 | X192160000Y-63430000D03* 71 | X192160000Y-65970000D03* 72 | X192160000Y-68510000D03* 73 | D16* 74 | X192160000Y-71050000D03* 75 | D15* 76 | X171840000Y-45650000D03* 77 | D16* 78 | X171840000Y-43110000D03* 79 | D15* 80 | X171840000Y-48190000D03* 81 | X171840000Y-50730000D03* 82 | X171840000Y-53270000D03* 83 | X171840000Y-55810000D03* 84 | X171840000Y-58350000D03* 85 | X171840000Y-60890000D03* 86 | X171840000Y-63430000D03* 87 | X171840000Y-65970000D03* 88 | X171840000Y-68510000D03* 89 | X171840000Y-71050000D03* 90 | G04 #@! TD* 91 | D17* 92 | G04 #@! TO.C,J4* 93 | X111000000Y-33000000D03* 94 | D18* 95 | G36* 96 | X112086005Y-34012716D02* 97 | X109987284Y-34086005D01* 98 | X109913995Y-31987284D01* 99 | X112012716Y-31913995D01* 100 | X112086005Y-34012716D01* 101 | X112086005Y-34012716D01* 102 | G37* 103 | D17* 104 | X110911355Y-30461547D03* 105 | D19* 106 | X110911355Y-30461547D02* 107 | X110911355Y-30461547D01* 108 | D17* 109 | X113538453Y-32911355D03* 110 | D19* 111 | X113538453Y-32911355D02* 112 | X113538453Y-32911355D01* 113 | D17* 114 | X113449808Y-30372903D03* 115 | D19* 116 | X113449808Y-30372903D02* 117 | X113449808Y-30372903D01* 118 | D17* 119 | X116076905Y-32822711D03* 120 | D19* 121 | X116076905Y-32822711D02* 122 | X116076905Y-32822711D01* 123 | D17* 124 | X115988261Y-30284258D03* 125 | D19* 126 | X115988261Y-30284258D02* 127 | X115988261Y-30284258D01* 128 | D17* 129 | X118615358Y-32734066D03* 130 | D19* 131 | X118615358Y-32734066D02* 132 | X118615358Y-32734066D01* 133 | D17* 134 | X118526713Y-30195613D03* 135 | D19* 136 | X118526713Y-30195613D02* 137 | X118526713Y-30195613D01* 138 | D17* 139 | X121153811Y-32645421D03* 140 | D19* 141 | X121153811Y-32645421D02* 142 | X121153811Y-32645421D01* 143 | D17* 144 | X121065166Y-30106968D03* 145 | D19* 146 | X121065166Y-30106968D02* 147 | X121065166Y-30106968D01* 148 | D17* 149 | X123692265Y-32556776D03* 150 | D19* 151 | X123692265Y-32556776D02* 152 | X123692265Y-32556776D01* 153 | D17* 154 | X123603619Y-30018324D03* 155 | D19* 156 | X123603619Y-30018324D02* 157 | X123603619Y-30018324D01* 158 | D17* 159 | X126230716Y-32468132D03* 160 | D19* 161 | X126230716Y-32468132D02* 162 | X126230716Y-32468132D01* 163 | D17* 164 | X126142071Y-29929679D03* 165 | D19* 166 | X126142071Y-29929679D02* 167 | X126142071Y-29929679D01* 168 | D17* 169 | X128769169Y-32379487D03* 170 | D19* 171 | X128769169Y-32379487D02* 172 | X128769169Y-32379487D01* 173 | D17* 174 | X128680524Y-29841034D03* 175 | D19* 176 | X128680524Y-29841034D02* 177 | X128680524Y-29841034D01* 178 | D17* 179 | X131307622Y-32290842D03* 180 | D19* 181 | X131307622Y-32290842D02* 182 | X131307622Y-32290842D01* 183 | D17* 184 | X131218977Y-29752390D03* 185 | D19* 186 | X131218977Y-29752390D02* 187 | X131218977Y-29752390D01* 188 | D17* 189 | X133846074Y-32202198D03* 190 | D19* 191 | X133846074Y-32202198D02* 192 | X133846074Y-32202198D01* 193 | D17* 194 | X133757430Y-29663745D03* 195 | D19* 196 | X133757430Y-29663745D02* 197 | X133757430Y-29663745D01* 198 | D17* 199 | X136384527Y-32113553D03* 200 | D19* 201 | X136384527Y-32113553D02* 202 | X136384527Y-32113553D01* 203 | D17* 204 | X136295882Y-29575100D03* 205 | D19* 206 | X136295882Y-29575100D02* 207 | X136295882Y-29575100D01* 208 | D17* 209 | X138922980Y-32024908D03* 210 | D19* 211 | X138922980Y-32024908D02* 212 | X138922980Y-32024908D01* 213 | D17* 214 | X138834335Y-29486455D03* 215 | D19* 216 | X138834335Y-29486455D02* 217 | X138834335Y-29486455D01* 218 | G04 #@! TD* 219 | D20* 220 | G04 #@! TO.C,JP1* 221 | X164300000Y-28000000D03* 222 | X163000000Y-28000000D03* 223 | X161700000Y-28000000D03* 224 | G04 #@! TD* 225 | G04 #@! TO.C,JP2* 226 | X161700000Y-34500000D03* 227 | X163000000Y-34500000D03* 228 | X164300000Y-34500000D03* 229 | G04 #@! TD* 230 | D21* 231 | G04 #@! TO.C,U2* 232 | X174350000Y-67360000D03* 233 | X174350000Y-64820000D03* 234 | X174350000Y-62280000D03* 235 | X174350000Y-59740000D03* 236 | X174350000Y-54660000D03* 237 | X174350000Y-52120000D03* 238 | X174350000Y-49580000D03* 239 | X174350000Y-47040000D03* 240 | X189590000Y-59740000D03* 241 | X189590000Y-47040000D03* 242 | X189590000Y-67360000D03* 243 | X189590000Y-49580000D03* 244 | X189590000Y-54660000D03* 245 | X189590000Y-64820000D03* 246 | X189590000Y-52120000D03* 247 | X189590000Y-62280000D03* 248 | X180700181Y-39420295D03* 249 | X183240181Y-39420295D03* 250 | X188320181Y-39420295D03* 251 | X185780181Y-39420295D03* 252 | X178160000Y-39420295D03* 253 | X175620000Y-39420295D03* 254 | G04 #@! TD* 255 | D22* 256 | G04 #@! TO.C,SW00* 257 | X45065000Y-46588800D03* 258 | X38715000Y-49128800D03* 259 | X46335000Y-49128800D03* 260 | X39985000Y-46588800D03* 261 | G04 #@! TD* 262 | D23* 263 | G04 #@! TO.C,D00* 264 | X43150000Y-43143800D03* 265 | D24* 266 | X50950000Y-43143800D03* 267 | G04 #@! TD* 268 | D22* 269 | G04 #@! TO.C,SW01* 270 | X83165000Y-79926200D03* 271 | X76815000Y-82466200D03* 272 | X84435000Y-82466200D03* 273 | X78085000Y-79926200D03* 274 | G04 #@! TD* 275 | D23* 276 | G04 #@! TO.C,D01* 277 | X81250000Y-76481200D03* 278 | D24* 279 | X89050000Y-76481200D03* 280 | G04 #@! TD* 281 | D22* 282 | G04 #@! TO.C,SW02* 283 | X102215000Y-39445000D03* 284 | X95865000Y-41985000D03* 285 | X103485000Y-41985000D03* 286 | X97135000Y-39445000D03* 287 | G04 #@! TD* 288 | D23* 289 | G04 #@! TO.C,D02* 290 | X100300000Y-36000000D03* 291 | D24* 292 | X108100000Y-36000000D03* 293 | G04 #@! TD* 294 | D22* 295 | G04 #@! TO.C,SW03* 296 | X45065000Y-103739000D03* 297 | X38715000Y-106279000D03* 298 | X46335000Y-106279000D03* 299 | X39985000Y-103739000D03* 300 | G04 #@! TD* 301 | D23* 302 | G04 #@! TO.C,D03* 303 | X43150000Y-100294000D03* 304 | D24* 305 | X50950000Y-100294000D03* 306 | G04 #@! TD* 307 | D22* 308 | G04 #@! TO.C,SW04* 309 | X140315000Y-44207500D03* 310 | X133965000Y-46747500D03* 311 | X141585000Y-46747500D03* 312 | X135235000Y-44207500D03* 313 | G04 #@! TD* 314 | D23* 315 | G04 #@! TO.C,D04* 316 | X138400000Y-40762500D03* 317 | D24* 318 | X146200000Y-40762500D03* 319 | G04 #@! TD* 320 | D22* 321 | G04 #@! TO.C,SW05* 322 | X140315000Y-101358000D03* 323 | X133965000Y-103898000D03* 324 | X141585000Y-103898000D03* 325 | X135235000Y-101358000D03* 326 | G04 #@! TD* 327 | D23* 328 | G04 #@! TO.C,D05* 329 | X138400000Y-97912500D03* 330 | D24* 331 | X146200000Y-97912500D03* 332 | G04 #@! TD* 333 | D22* 334 | G04 #@! TO.C,SW10* 335 | X64115000Y-46588800D03* 336 | X57765000Y-49128800D03* 337 | X65385000Y-49128800D03* 338 | X59035000Y-46588800D03* 339 | G04 #@! TD* 340 | D23* 341 | G04 #@! TO.C,D10* 342 | X62200000Y-43143800D03* 343 | D24* 344 | X70000000Y-43143800D03* 345 | G04 #@! TD* 346 | D22* 347 | G04 #@! TO.C,SW11* 348 | X83165000Y-60876200D03* 349 | X76815000Y-63416200D03* 350 | X84435000Y-63416200D03* 351 | X78085000Y-60876200D03* 352 | G04 #@! TD* 353 | D23* 354 | G04 #@! TO.C,D11* 355 | X81250000Y-57431200D03* 356 | D24* 357 | X89050000Y-57431200D03* 358 | G04 #@! TD* 359 | D22* 360 | G04 #@! TO.C,SW12* 361 | X102215000Y-58495000D03* 362 | X95865000Y-61035000D03* 363 | X103485000Y-61035000D03* 364 | X97135000Y-58495000D03* 365 | G04 #@! TD* 366 | D23* 367 | G04 #@! TO.C,D12* 368 | X100300000Y-55050000D03* 369 | D24* 370 | X108100000Y-55050000D03* 371 | G04 #@! TD* 372 | D22* 373 | G04 #@! TO.C,SW13* 374 | X64115000Y-103739000D03* 375 | X57765000Y-106279000D03* 376 | X65385000Y-106279000D03* 377 | X59035000Y-103739000D03* 378 | G04 #@! TD* 379 | D23* 380 | G04 #@! TO.C,D13* 381 | X62200000Y-100294000D03* 382 | D24* 383 | X70000000Y-100294000D03* 384 | G04 #@! TD* 385 | D22* 386 | G04 #@! TO.C,SW14* 387 | X140315000Y-63257500D03* 388 | X133965000Y-65797500D03* 389 | X141585000Y-65797500D03* 390 | X135235000Y-63257500D03* 391 | G04 #@! TD* 392 | D23* 393 | G04 #@! TO.C,D14* 394 | X138400000Y-59812500D03* 395 | D24* 396 | X146200000Y-59812500D03* 397 | G04 #@! TD* 398 | D22* 399 | G04 #@! TO.C,SW15* 400 | X152435544Y-124716243D03* 401 | X145740949Y-126114989D03* 402 | X153245184Y-127438188D03* 403 | X147432721Y-123834110D03* 404 | G04 #@! TD* 405 | D23* 406 | G04 #@! TO.C,D15* 407 | X151148250Y-120991772D03* 408 | X158829750Y-122346228D03* 409 | D18* 410 | G36* 411 | X159988206Y-121535068D02* 412 | X159640910Y-123504684D01* 413 | X157671294Y-123157388D01* 414 | X158018590Y-121187772D01* 415 | X159988206Y-121535068D01* 416 | X159988206Y-121535068D01* 417 | G37* 418 | G04 #@! TD* 419 | D22* 420 | G04 #@! TO.C,SW20* 421 | X64115000Y-65638800D03* 422 | X57765000Y-68178800D03* 423 | X65385000Y-68178800D03* 424 | X59035000Y-65638800D03* 425 | G04 #@! TD* 426 | D23* 427 | G04 #@! TO.C,D20* 428 | X62200000Y-62193800D03* 429 | D24* 430 | X70000000Y-62193800D03* 431 | G04 #@! TD* 432 | D22* 433 | G04 #@! TO.C,SW21* 434 | X102215000Y-77545000D03* 435 | X95865000Y-80085000D03* 436 | X103485000Y-80085000D03* 437 | X97135000Y-77545000D03* 438 | G04 #@! TD* 439 | D23* 440 | G04 #@! TO.C,D21* 441 | X100300000Y-74100000D03* 442 | D24* 443 | X108100000Y-74100000D03* 444 | G04 #@! TD* 445 | D22* 446 | G04 #@! TO.C,SW22* 447 | X121265000Y-60876200D03* 448 | X114915000Y-63416200D03* 449 | X122535000Y-63416200D03* 450 | X116185000Y-60876200D03* 451 | G04 #@! TD* 452 | D23* 453 | G04 #@! TO.C,D22* 454 | X119350000Y-57431200D03* 455 | D24* 456 | X127150000Y-57431200D03* 457 | G04 #@! TD* 458 | D22* 459 | G04 #@! TO.C,SW23* 460 | X64115000Y-122789000D03* 461 | X57765000Y-125329000D03* 462 | X65385000Y-125329000D03* 463 | X59035000Y-122789000D03* 464 | G04 #@! TD* 465 | D23* 466 | G04 #@! TO.C,D23* 467 | X62200000Y-119344000D03* 468 | D24* 469 | X70000000Y-119344000D03* 470 | G04 #@! TD* 471 | D22* 472 | G04 #@! TO.C,SW24* 473 | X140315000Y-82307500D03* 474 | X133965000Y-84847500D03* 475 | X141585000Y-84847500D03* 476 | X135235000Y-82307500D03* 477 | G04 #@! TD* 478 | D23* 479 | G04 #@! TO.C,D24* 480 | X138400000Y-78862500D03* 481 | D24* 482 | X146200000Y-78862500D03* 483 | G04 #@! TD* 484 | D22* 485 | G04 #@! TO.C,SW25* 486 | X171196544Y-128024243D03* 487 | X164501949Y-129422989D03* 488 | X172006184Y-130746188D03* 489 | X166193721Y-127142110D03* 490 | G04 #@! TD* 491 | D23* 492 | G04 #@! TO.C,D25* 493 | X169908250Y-124299772D03* 494 | X177589750Y-125654228D03* 495 | D18* 496 | G36* 497 | X178748206Y-124843068D02* 498 | X178400910Y-126812684D01* 499 | X176431294Y-126465388D01* 500 | X176778590Y-124495772D01* 501 | X178748206Y-124843068D01* 502 | X178748206Y-124843068D01* 503 | G37* 504 | G04 #@! TD* 505 | D22* 506 | G04 #@! TO.C,SW30* 507 | X45065000Y-65638800D03* 508 | X38715000Y-68178800D03* 509 | X46335000Y-68178800D03* 510 | X39985000Y-65638800D03* 511 | G04 #@! TD* 512 | D23* 513 | G04 #@! TO.C,D30* 514 | X43150000Y-62193800D03* 515 | D24* 516 | X50950000Y-62193800D03* 517 | G04 #@! TD* 518 | D22* 519 | G04 #@! TO.C,SW31* 520 | X102215000Y-96595000D03* 521 | X95865000Y-99135000D03* 522 | X103485000Y-99135000D03* 523 | X97135000Y-96595000D03* 524 | G04 #@! TD* 525 | D23* 526 | G04 #@! TO.C,D31* 527 | X100300000Y-93150000D03* 528 | D24* 529 | X108100000Y-93150000D03* 530 | G04 #@! TD* 531 | D22* 532 | G04 #@! TO.C,SW32* 533 | X121265000Y-79926200D03* 534 | X114915000Y-82466200D03* 535 | X122535000Y-82466200D03* 536 | X116185000Y-79926200D03* 537 | G04 #@! TD* 538 | D23* 539 | G04 #@! TO.C,D32* 540 | X119350000Y-76481200D03* 541 | D24* 542 | X127150000Y-76481200D03* 543 | G04 #@! TD* 544 | D22* 545 | G04 #@! TO.C,SW33* 546 | X64115000Y-141839000D03* 547 | X57765000Y-144379000D03* 548 | X65385000Y-144379000D03* 549 | X59035000Y-141839000D03* 550 | G04 #@! TD* 551 | D23* 552 | G04 #@! TO.C,D33* 553 | X62200000Y-138394000D03* 554 | D24* 555 | X70000000Y-138394000D03* 556 | G04 #@! TD* 557 | D22* 558 | G04 #@! TO.C,SW34* 559 | X159365000Y-84688800D03* 560 | X153015000Y-87228800D03* 561 | X160635000Y-87228800D03* 562 | X154285000Y-84688800D03* 563 | G04 #@! TD* 564 | D23* 565 | G04 #@! TO.C,D34* 566 | X157450000Y-81243800D03* 567 | D24* 568 | X165250000Y-81243800D03* 569 | G04 #@! TD* 570 | D22* 571 | G04 #@! TO.C,SW35* 572 | X167888544Y-146785243D03* 573 | X161193949Y-148183989D03* 574 | X168698184Y-149507188D03* 575 | X162885721Y-145903110D03* 576 | G04 #@! TD* 577 | D23* 578 | G04 #@! TO.C,D35* 579 | X166600250Y-143059772D03* 580 | X174281750Y-144414228D03* 581 | D18* 582 | G36* 583 | X175440206Y-143603068D02* 584 | X175092910Y-145572684D01* 585 | X173123294Y-145225388D01* 586 | X173470590Y-143255772D01* 587 | X175440206Y-143603068D01* 588 | X175440206Y-143603068D01* 589 | G37* 590 | G04 #@! TD* 591 | D22* 592 | G04 #@! TO.C,SW40* 593 | X45065000Y-84688800D03* 594 | X38715000Y-87228800D03* 595 | X46335000Y-87228800D03* 596 | X39985000Y-84688800D03* 597 | G04 #@! TD* 598 | D23* 599 | G04 #@! TO.C,D40* 600 | X43150000Y-81243800D03* 601 | D24* 602 | X50950000Y-81243800D03* 603 | G04 #@! TD* 604 | D22* 605 | G04 #@! TO.C,SW41* 606 | X83165000Y-98976000D03* 607 | X76815000Y-101516000D03* 608 | X84435000Y-101516000D03* 609 | X78085000Y-98976000D03* 610 | G04 #@! TD* 611 | D23* 612 | G04 #@! TO.C,D41* 613 | X81250000Y-95531200D03* 614 | D24* 615 | X89050000Y-95531200D03* 616 | G04 #@! TD* 617 | D22* 618 | G04 #@! TO.C,SW42* 619 | X121265000Y-98976000D03* 620 | X114915000Y-101516000D03* 621 | X122535000Y-101516000D03* 622 | X116185000Y-98976000D03* 623 | G04 #@! TD* 624 | D23* 625 | G04 #@! TO.C,D42* 626 | X119350000Y-95531200D03* 627 | D24* 628 | X127150000Y-95531200D03* 629 | G04 #@! TD* 630 | D22* 631 | G04 #@! TO.C,SW43* 632 | X83165000Y-141839000D03* 633 | X76815000Y-144379000D03* 634 | X84435000Y-144379000D03* 635 | X78085000Y-141839000D03* 636 | G04 #@! TD* 637 | D23* 638 | G04 #@! TO.C,D43* 639 | X81250000Y-138394000D03* 640 | D24* 641 | X89050000Y-138394000D03* 642 | G04 #@! TD* 643 | D22* 644 | G04 #@! TO.C,SW44* 645 | X159365000Y-65638800D03* 646 | X153015000Y-68178800D03* 647 | X160635000Y-68178800D03* 648 | X154285000Y-65638800D03* 649 | G04 #@! TD* 650 | D23* 651 | G04 #@! TO.C,D44* 652 | X157450000Y-62193800D03* 653 | D24* 654 | X165250000Y-62193800D03* 655 | G04 #@! TD* 656 | D22* 657 | G04 #@! TO.C,SW45* 658 | X149127544Y-143477243D03* 659 | X142432949Y-144875989D03* 660 | X149937184Y-146199188D03* 661 | X144124721Y-142595110D03* 662 | G04 #@! TD* 663 | D23* 664 | G04 #@! TO.C,D45* 665 | X147840250Y-139751772D03* 666 | X155521750Y-141106228D03* 667 | D18* 668 | G36* 669 | X156680206Y-140295068D02* 670 | X156332910Y-142264684D01* 671 | X154363294Y-141917388D01* 672 | X154710590Y-139947772D01* 673 | X156680206Y-140295068D01* 674 | X156680206Y-140295068D01* 675 | G37* 676 | G04 #@! TD* 677 | D22* 678 | G04 #@! TO.C,SW50* 679 | X83165000Y-41826200D03* 680 | X76815000Y-44366200D03* 681 | X84435000Y-44366200D03* 682 | X78085000Y-41826200D03* 683 | G04 #@! TD* 684 | D23* 685 | G04 #@! TO.C,D50* 686 | X81250000Y-38381200D03* 687 | D24* 688 | X89050000Y-38381200D03* 689 | G04 #@! TD* 690 | D22* 691 | G04 #@! TO.C,SW51* 692 | X64115000Y-84688800D03* 693 | X57765000Y-87228800D03* 694 | X65385000Y-87228800D03* 695 | X59035000Y-84688800D03* 696 | G04 #@! TD* 697 | D23* 698 | G04 #@! TO.C,D51* 699 | X62200000Y-81243800D03* 700 | D24* 701 | X70000000Y-81243800D03* 702 | G04 #@! TD* 703 | D22* 704 | G04 #@! TO.C,SW52* 705 | X121265000Y-41826200D03* 706 | X114915000Y-44366200D03* 707 | X122535000Y-44366200D03* 708 | X116185000Y-41826200D03* 709 | G04 #@! TD* 710 | D23* 711 | G04 #@! TO.C,D52* 712 | X119350000Y-38381200D03* 713 | D24* 714 | X127150000Y-38381200D03* 715 | G04 #@! TD* 716 | D22* 717 | G04 #@! TO.C,SW53* 718 | X45065000Y-141839000D03* 719 | X38715000Y-144379000D03* 720 | X46335000Y-144379000D03* 721 | X39985000Y-141839000D03* 722 | G04 #@! TD* 723 | D23* 724 | G04 #@! TO.C,D53* 725 | X43150000Y-138394000D03* 726 | D24* 727 | X50950000Y-138394000D03* 728 | G04 #@! TD* 729 | D22* 730 | G04 #@! TO.C,SW54* 731 | X159365000Y-46588800D03* 732 | X153015000Y-49128800D03* 733 | X160635000Y-49128800D03* 734 | X154285000Y-46588800D03* 735 | G04 #@! TD* 736 | D23* 737 | G04 #@! TO.C,D54* 738 | X157450000Y-43143800D03* 739 | D24* 740 | X165250000Y-43143800D03* 741 | G04 #@! TD* 742 | D22* 743 | G04 #@! TO.C,SW55* 744 | X174504544Y-109264243D03* 745 | X167809949Y-110662989D03* 746 | X175314184Y-111986188D03* 747 | X169501721Y-108382110D03* 748 | G04 #@! TD* 749 | D23* 750 | G04 #@! TO.C,D55* 751 | X173216250Y-105538772D03* 752 | X180897750Y-106893228D03* 753 | D18* 754 | G36* 755 | X182056206Y-106082068D02* 756 | X181708910Y-108051684D01* 757 | X179739294Y-107704388D01* 758 | X180086590Y-105734772D01* 759 | X182056206Y-106082068D01* 760 | X182056206Y-106082068D01* 761 | G37* 762 | G04 #@! TD* 763 | D25* 764 | G04 #@! TO.C,CP0* 765 | X86956600Y-29504700D03* 766 | G04 #@! TD* 767 | G04 #@! TO.C,CP1* 768 | X27500000Y-36936800D03* 769 | G04 #@! TD* 770 | G04 #@! TO.C,CP2* 771 | X27500000Y-99386100D03* 772 | G04 #@! TD* 773 | G04 #@! TO.C,CP3* 774 | X27500000Y-161835000D03* 775 | G04 #@! TD* 776 | G04 #@! TO.C,CP4* 777 | X102061000Y-165141000D03* 778 | G04 #@! TD* 779 | G04 #@! TO.C,CP5* 780 | X176622000Y-168446000D03* 781 | G04 #@! TD* 782 | G04 #@! TO.C,CP6* 783 | X196500000Y-84291300D03* 784 | G04 #@! TD* 785 | G04 #@! TO.C,CP7* 786 | X196500000Y-28602000D03* 787 | G04 #@! TD* 788 | M02* 789 | -------------------------------------------------------------------------------- /gerbers/halfdeck.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ;DRILL file {KiCad 5.0.0-fee4fd1~66~ubuntu18.04.1} date Sun Sep 16 18:32:09 2018 3 | ;FORMAT={-:-/ absolute / metric / decimal} 4 | FMAT,2 5 | METRIC,TZ 6 | T1C0.300 7 | T2C0.700 8 | T3C0.991 9 | T4C1.000 10 | T5C1.016 11 | T6C1.100 12 | T7C1.499 13 | T8C1.702 14 | T9C3.200 15 | T10C1.100 16 | T11C3.988 17 | % 18 | G90 19 | G05 20 | M71 21 | T1 22 | X53.53Y-79.08 23 | X76.697Y-71. 24 | X85.606Y-97.969 25 | X105.684Y-74.496 26 | X109.049Y-62.178 27 | X111.626Y-93.96 28 | X112.114Y-71.778 29 | X112.884Y-73.521 30 | X120.286Y-78.236 31 | X125.51Y-62.311 32 | X127.13Y-74.08 33 | X131.61Y-77.51 34 | X139.472Y-51.072 35 | X142.231Y-62.805 36 | X144.99Y-30.07 37 | X158.561Y-57.142 38 | X161.82Y-55.82 39 | X164.19Y-30.56 40 | X164.25Y-32.61 41 | X168.101Y-65.161 42 | X169.742Y-58.684 43 | X170.254Y-142.403 44 | X180.94Y-71.1 45 | X181.3Y-62.3 46 | X183.94Y-57.86 47 | X189.26Y-79.65 48 | X192.017Y-83.056 49 | X194.771Y-74.108 50 | T2 51 | X119.35Y-57.431 52 | X127.15Y-57.431 53 | X147.84Y-139.752 54 | X155.522Y-141.106 55 | X62.2Y-62.194 56 | X70.Y-62.194 57 | X43.15Y-43.144 58 | X50.95Y-43.144 59 | X100.3Y-55.05 60 | X108.1Y-55.05 61 | X81.25Y-76.481 62 | X89.05Y-76.481 63 | X119.35Y-76.481 64 | X127.15Y-76.481 65 | X157.45Y-43.144 66 | X165.25Y-43.144 67 | X173.216Y-105.539 68 | X180.898Y-106.893 69 | X62.2Y-43.144 70 | X70.Y-43.144 71 | X100.3Y-74.1 72 | X108.1Y-74.1 73 | X81.25Y-138.394 74 | X89.05Y-138.394 75 | X166.6Y-143.06 76 | X174.282Y-144.414 77 | X43.15Y-100.294 78 | X50.95Y-100.294 79 | X100.3Y-93.15 80 | X108.1Y-93.15 81 | X100.3Y-36. 82 | X108.1Y-36. 83 | X138.4Y-59.812 84 | X146.2Y-59.812 85 | X138.4Y-40.762 86 | X146.2Y-40.762 87 | X157.45Y-62.194 88 | X165.25Y-62.194 89 | X62.2Y-81.244 90 | X70.Y-81.244 91 | X151.148Y-120.992 92 | X158.83Y-122.346 93 | X43.15Y-138.394 94 | X50.95Y-138.394 95 | X43.15Y-81.244 96 | X50.95Y-81.244 97 | X138.4Y-78.862 98 | X146.2Y-78.862 99 | X62.2Y-138.394 100 | X70.Y-138.394 101 | X81.25Y-95.531 102 | X89.05Y-95.531 103 | X62.2Y-100.294 104 | X70.Y-100.294 105 | X62.2Y-119.344 106 | X70.Y-119.344 107 | X157.45Y-81.244 108 | X165.25Y-81.244 109 | X43.15Y-62.194 110 | X50.95Y-62.194 111 | X119.35Y-38.381 112 | X127.15Y-38.381 113 | X119.35Y-95.531 114 | X127.15Y-95.531 115 | X138.4Y-97.912 116 | X146.2Y-97.912 117 | X81.25Y-38.381 118 | X89.05Y-38.381 119 | X169.908Y-124.3 120 | X177.59Y-125.654 121 | X81.25Y-57.431 122 | X89.05Y-57.431 123 | T3 124 | X171.84Y-43.11 125 | X171.84Y-45.65 126 | X171.84Y-48.19 127 | X171.84Y-50.73 128 | X171.84Y-53.27 129 | X171.84Y-55.81 130 | X171.84Y-58.35 131 | X171.84Y-60.89 132 | X171.84Y-63.43 133 | X171.84Y-65.97 134 | X171.84Y-68.51 135 | X171.84Y-71.05 136 | X192.16Y-32.95 137 | X192.16Y-35.49 138 | X192.16Y-38.03 139 | X192.16Y-40.57 140 | X192.16Y-43.11 141 | X192.16Y-45.65 142 | X192.16Y-48.19 143 | X192.16Y-50.73 144 | X192.16Y-53.27 145 | X192.16Y-55.81 146 | X192.16Y-58.35 147 | X192.16Y-60.89 148 | X192.16Y-63.43 149 | X192.16Y-65.97 150 | X192.16Y-68.51 151 | X192.16Y-71.05 152 | T4 153 | X110.911Y-30.462 154 | X111.Y-33. 155 | X113.45Y-30.373 156 | X113.538Y-32.911 157 | X115.988Y-30.284 158 | X116.077Y-32.823 159 | X118.527Y-30.196 160 | X118.615Y-32.734 161 | X121.065Y-30.107 162 | X121.154Y-32.645 163 | X123.604Y-30.018 164 | X123.692Y-32.557 165 | X126.142Y-29.93 166 | X126.231Y-32.468 167 | X128.681Y-29.841 168 | X128.769Y-32.379 169 | X131.219Y-29.752 170 | X131.308Y-32.291 171 | X133.757Y-29.664 172 | X133.846Y-32.202 173 | X136.296Y-29.575 174 | X136.385Y-32.114 175 | X138.834Y-29.486 176 | X138.923Y-32.025 177 | X112.73Y-133.19 178 | X112.73Y-135.73 179 | X112.73Y-138.27 180 | X112.73Y-140.81 181 | X115.27Y-133.19 182 | X115.27Y-135.73 183 | X115.27Y-138.27 184 | X115.27Y-140.81 185 | T5 186 | X174.35Y-47.04 187 | X174.35Y-49.58 188 | X174.35Y-52.12 189 | X174.35Y-54.66 190 | X174.35Y-59.74 191 | X174.35Y-62.28 192 | X174.35Y-64.82 193 | X174.35Y-67.36 194 | X175.62Y-39.42 195 | X178.16Y-39.42 196 | X180.7Y-39.42 197 | X183.24Y-39.42 198 | X185.78Y-39.42 199 | X188.32Y-39.42 200 | X189.59Y-47.04 201 | X189.59Y-49.58 202 | X189.59Y-52.12 203 | X189.59Y-54.66 204 | X189.59Y-59.74 205 | X189.59Y-62.28 206 | X189.59Y-64.82 207 | X189.59Y-67.36 208 | T6 209 | X150.4Y-32.9 210 | X152.4Y-36. 211 | X155.6Y-36. 212 | X157.6Y-32.9 213 | T7 214 | X95.865Y-61.035 215 | X97.135Y-58.495 216 | X102.215Y-58.495 217 | X103.485Y-61.035 218 | X145.741Y-126.115 219 | X147.433Y-123.834 220 | X152.436Y-124.716 221 | X153.245Y-127.438 222 | X76.815Y-44.366 223 | X78.085Y-41.826 224 | X83.165Y-41.826 225 | X84.435Y-44.366 226 | X114.915Y-101.516 227 | X116.185Y-98.976 228 | X121.265Y-98.976 229 | X122.535Y-101.516 230 | X57.765Y-87.229 231 | X59.035Y-84.689 232 | X64.115Y-84.689 233 | X65.385Y-87.229 234 | X38.715Y-87.229 235 | X39.985Y-84.689 236 | X45.065Y-84.689 237 | X46.335Y-87.229 238 | X153.015Y-87.229 239 | X154.285Y-84.689 240 | X159.365Y-84.689 241 | X160.635Y-87.229 242 | X76.815Y-144.379 243 | X78.085Y-141.839 244 | X83.165Y-141.839 245 | X84.435Y-144.379 246 | X76.815Y-63.416 247 | X78.085Y-60.876 248 | X83.165Y-60.876 249 | X84.435Y-63.416 250 | X142.433Y-144.876 251 | X144.125Y-142.595 252 | X149.128Y-143.477 253 | X149.937Y-146.199 254 | X76.815Y-82.466 255 | X78.085Y-79.926 256 | X83.165Y-79.926 257 | X84.435Y-82.466 258 | X38.715Y-144.379 259 | X39.985Y-141.839 260 | X45.065Y-141.839 261 | X46.335Y-144.379 262 | X114.915Y-44.366 263 | X116.185Y-41.826 264 | X121.265Y-41.826 265 | X122.535Y-44.366 266 | X57.765Y-144.379 267 | X59.035Y-141.839 268 | X64.115Y-141.839 269 | X65.385Y-144.379 270 | X133.965Y-65.797 271 | X135.235Y-63.258 272 | X140.315Y-63.258 273 | X141.585Y-65.797 274 | X38.715Y-49.129 275 | X39.985Y-46.589 276 | X45.065Y-46.589 277 | X46.335Y-49.129 278 | X57.765Y-106.279 279 | X59.035Y-103.739 280 | X64.115Y-103.739 281 | X65.385Y-106.279 282 | X38.715Y-68.179 283 | X39.985Y-65.639 284 | X45.065Y-65.639 285 | X46.335Y-68.179 286 | X133.965Y-46.747 287 | X135.235Y-44.207 288 | X140.315Y-44.207 289 | X141.585Y-46.747 290 | X167.81Y-110.663 291 | X169.502Y-108.382 292 | X174.505Y-109.264 293 | X175.314Y-111.986 294 | X95.865Y-80.085 295 | X97.135Y-77.545 296 | X102.215Y-77.545 297 | X103.485Y-80.085 298 | X57.765Y-49.129 299 | X59.035Y-46.589 300 | X64.115Y-46.589 301 | X65.385Y-49.129 302 | X57.765Y-68.179 303 | X59.035Y-65.639 304 | X64.115Y-65.639 305 | X65.385Y-68.179 306 | X133.965Y-103.898 307 | X135.235Y-101.358 308 | X140.315Y-101.358 309 | X141.585Y-103.898 310 | X153.015Y-68.179 311 | X154.285Y-65.639 312 | X159.365Y-65.639 313 | X160.635Y-68.179 314 | X114.915Y-82.466 315 | X116.185Y-79.926 316 | X121.265Y-79.926 317 | X122.535Y-82.466 318 | X153.015Y-49.129 319 | X154.285Y-46.589 320 | X159.365Y-46.589 321 | X160.635Y-49.129 322 | X95.865Y-41.985 323 | X97.135Y-39.445 324 | X102.215Y-39.445 325 | X103.485Y-41.985 326 | X38.715Y-106.279 327 | X39.985Y-103.739 328 | X45.065Y-103.739 329 | X46.335Y-106.279 330 | X133.965Y-84.847 331 | X135.235Y-82.307 332 | X140.315Y-82.307 333 | X141.585Y-84.847 334 | X76.815Y-101.516 335 | X78.085Y-98.976 336 | X83.165Y-98.976 337 | X84.435Y-101.516 338 | X95.865Y-99.135 339 | X97.135Y-96.595 340 | X102.215Y-96.595 341 | X103.485Y-99.135 342 | X57.765Y-125.329 343 | X59.035Y-122.789 344 | X64.115Y-122.789 345 | X65.385Y-125.329 346 | X114.915Y-63.416 347 | X116.185Y-60.876 348 | X121.265Y-60.876 349 | X122.535Y-63.416 350 | X161.194Y-148.184 351 | X162.886Y-145.903 352 | X167.889Y-146.785 353 | X168.698Y-149.507 354 | X164.502Y-129.423 355 | X166.194Y-127.142 356 | X171.197Y-128.024 357 | X172.006Y-130.746 358 | T8 359 | X56.495Y-146.919 360 | X66.655Y-146.919 361 | X132.695Y-68.337 362 | X142.855Y-68.337 363 | X37.445Y-51.669 364 | X47.605Y-51.669 365 | X56.495Y-108.819 366 | X66.655Y-108.819 367 | X37.445Y-70.719 368 | X47.605Y-70.719 369 | X132.695Y-49.287 370 | X142.855Y-49.287 371 | X166.118Y-112.944 372 | X176.124Y-114.708 373 | X94.595Y-82.625 374 | X104.755Y-82.625 375 | X56.495Y-51.669 376 | X66.655Y-51.669 377 | X56.495Y-70.719 378 | X66.655Y-70.719 379 | X132.695Y-106.438 380 | X142.855Y-106.438 381 | X151.745Y-70.719 382 | X161.905Y-70.719 383 | X113.645Y-85.006 384 | X123.805Y-85.006 385 | X151.745Y-51.669 386 | X161.905Y-51.669 387 | X94.595Y-44.525 388 | X104.755Y-44.525 389 | X37.445Y-108.819 390 | X47.605Y-108.819 391 | X132.695Y-87.388 392 | X142.855Y-87.388 393 | X75.545Y-104.056 394 | X85.705Y-104.056 395 | X94.595Y-101.675 396 | X104.755Y-101.675 397 | X56.495Y-127.869 398 | X66.655Y-127.869 399 | X113.645Y-65.956 400 | X123.805Y-65.956 401 | X159.502Y-150.465 402 | X169.508Y-152.229 403 | X162.81Y-131.704 404 | X172.816Y-133.468 405 | X94.595Y-63.575 406 | X104.755Y-63.575 407 | X144.049Y-128.396 408 | X154.055Y-130.16 409 | X75.545Y-46.906 410 | X85.705Y-46.906 411 | X113.645Y-104.056 412 | X123.805Y-104.056 413 | X56.495Y-89.769 414 | X66.655Y-89.769 415 | X37.445Y-89.769 416 | X47.605Y-89.769 417 | X151.745Y-89.769 418 | X161.905Y-89.769 419 | X75.545Y-146.919 420 | X85.705Y-146.919 421 | X75.545Y-65.956 422 | X85.705Y-65.956 423 | X140.741Y-147.157 424 | X150.747Y-148.921 425 | X75.545Y-85.006 426 | X85.705Y-85.006 427 | X37.445Y-146.919 428 | X47.605Y-146.919 429 | X113.645Y-46.906 430 | X123.805Y-46.906 431 | T9 432 | X196.5Y-84.291 433 | X102.061Y-165.141 434 | X196.5Y-28.602 435 | X27.5Y-99.386 436 | X176.622Y-168.446 437 | X27.5Y-161.835 438 | X86.957Y-29.505 439 | X27.5Y-36.937 440 | T10 441 | X154.Y-27.9 442 | X154.Y-32.9 443 | T11 444 | X156.825Y-70.719 445 | X118.725Y-85.006 446 | X156.825Y-51.669 447 | X99.675Y-44.525 448 | X42.525Y-108.819 449 | X137.775Y-87.388 450 | X80.625Y-104.056 451 | X99.675Y-101.675 452 | X61.575Y-127.869 453 | X118.725Y-65.956 454 | X164.505Y-151.347 455 | X167.813Y-132.586 456 | X99.675Y-63.575 457 | X149.052Y-129.278 458 | X80.625Y-46.906 459 | X118.725Y-104.056 460 | X61.575Y-89.769 461 | X42.525Y-89.769 462 | X156.825Y-89.769 463 | X80.625Y-146.919 464 | X80.625Y-65.956 465 | X145.744Y-148.039 466 | X80.625Y-85.006 467 | X42.525Y-146.919 468 | X118.725Y-46.906 469 | X61.575Y-146.919 470 | X137.775Y-68.337 471 | X42.525Y-51.669 472 | X61.575Y-108.819 473 | X42.525Y-70.719 474 | X137.775Y-49.287 475 | X171.121Y-113.826 476 | X99.675Y-82.625 477 | X61.575Y-51.669 478 | X61.575Y-70.719 479 | X137.775Y-106.438 480 | T6 481 | X149.5Y-27.9G85X149.2Y-27.9 482 | G05 483 | X158.8Y-27.9G85X158.5Y-27.9 484 | G05 485 | T0 486 | M30 487 | -------------------------------------------------------------------------------- /images/azoteq-pcb-wiring.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/azoteq-pcb-wiring.jpg -------------------------------------------------------------------------------- /images/azoteq-wiring-reverse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/azoteq-wiring-reverse.jpg -------------------------------------------------------------------------------- /images/case-with-naked-mcu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/case-with-naked-mcu.jpg -------------------------------------------------------------------------------- /images/diode-placement.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/diode-placement.jpg -------------------------------------------------------------------------------- /images/diode-snip.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/diode-snip.jpg -------------------------------------------------------------------------------- /images/diodes-backside.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/diodes-backside.jpg -------------------------------------------------------------------------------- /images/jumper-fix-lhs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/jumper-fix-lhs.jpg -------------------------------------------------------------------------------- /images/jumper-fix-rhs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/jumper-fix-rhs.jpg -------------------------------------------------------------------------------- /images/jumper-header-lhs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/jumper-header-lhs.jpg -------------------------------------------------------------------------------- /images/jumper-header-rhs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/jumper-header-rhs.jpg -------------------------------------------------------------------------------- /images/left-hand-populated.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/left-hand-populated.jpg -------------------------------------------------------------------------------- /images/matrix.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/pcb-render-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/pcb-render-bottom.png -------------------------------------------------------------------------------- /images/pcb-render-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/pcb-render-top.png -------------------------------------------------------------------------------- /images/right-hand-populated.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/right-hand-populated.jpg -------------------------------------------------------------------------------- /images/switches-placed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wez/halfdeck/3b21e203e5a53b780873db08d7115012949eab83/images/switches-placed.jpg -------------------------------------------------------------------------------- /trackpad/cirque-cylinder-riser.scad: -------------------------------------------------------------------------------- 1 | /* Defines a mounting assembly for a Cirque 2 | circular trackpad: 3 | https://www.cirque.com/glidepoint-circle-trackpads 4 | 5 | This is designed for the TM040040 device which 6 | has a 40mm diameter. 7 | */ 8 | 9 | // 6mm is just within the vertical travel range 10 | // of a cherry mx keyswitch. Any taller and we 11 | // risk the "M" and SPC key caps being obstructed 12 | // by this mount when pressed. 13 | // If you are using the 35mm trackpad you 14 | // can affort to make this taller. 15 | height = 6; 16 | 17 | union(){ 18 | translate([0,0,2]) { 19 | union() { 20 | difference() { 21 | // outer cylinder 22 | cylinder(height, 24.5, 24.5); 23 | union() { 24 | // shelve / lip 25 | translate([0,0,height-1]) { 26 | cylinder(2, 23.5, 23.5); 27 | } 28 | // the inner cylinder 29 | cylinder(height, 20, 20); 30 | } 31 | } 32 | // lug 33 | translate([-22,-1,height-1.4]) { 34 | cube(2); 35 | } 36 | 37 | // subtract the inside: left mounting rect 38 | translate([-21,-7,0]) { 39 | cube([3,13.5,1.6]); 40 | } 41 | 42 | // subtract the inside: right mounting rect 43 | translate([18,-7,0]) { 44 | cube([3,13.5,1.6]); 45 | } 46 | } 47 | } 48 | // left mounting rectangle 49 | translate([-19,-7,0]) { 50 | difference() { 51 | cube([8.25,13.75,3.6]); 52 | translate([1, 1.75, 0]) { 53 | cube([6,10,3.6]); 54 | } 55 | } 56 | } 57 | // right mounting rectangle 58 | translate([11,-7,0]) { 59 | difference() { 60 | cube([8.25,13.75,3.6]); 61 | translate([1, 1.75, 0]) { 62 | cube([6,10,3.6]); 63 | } 64 | } 65 | } 66 | } 67 | --------------------------------------------------------------------------------