├── .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 | 
17 | 
18 | 
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 | 
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 | 
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 | 
123 |
124 | ### Patching the LHS
125 |
126 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
288 |
289 | The touchpad itself provides solderable pads that are just perfect for
290 | our needs:
291 |
292 | 
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 | 
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 |
--------------------------------------------------------------------------------