This project enables you to build keyboard plates and cases using the JSON produced by the www.keyboard-layout-editor.com (http://www.keyboard-layout-editor.com/). Review the documentation site above for a guided tour of how the tool works and how to use it.

If you have any questions or feedback, please post them in this thread and we will get you sorted out. :) Enjoy...

If you just imagine the square 0.551in || 14mm cutout is your base, layout your keyboard plate with that, the additional cutouts are just extra room for the switch clips. They shouldn't affect the actual layout anywhere you don't plan to cut screw holes or etc.Make heavy use of offset and reference lines, you'll be good to go.

The initial conversation for this topic started in the GH CAD Resource Hub thread. The relevant posts have been moved to this thread...

This is an idea I have had for quite a while but have not had time to work on. I am now officially into my new house, so I am officially getting this project underway...

THE IDEA: There are many builders in this community who would like to experiment with different keyboard layouts, but not all of them have the CAD skills to be able to create the plate. The goal of this project is to enable anyone which an idea to be able to build a layout and then have the plate automatically built for them (download the CAD drawing). Since Melvang and team have done such a great job getting the Enabler PCB into the wild, this type of tool should be a great progression to enable very cool layouts.

HOW IT WORKS: I plan to piggyback of the excellent work of ijprest (https://geekhack.org/index.php?action=profile;u=30503) and his www.keyboard-layout-editor.com (http://www.keyboard-layout-editor.com/). As a user, you would go and create a layout using that tool, then you would paste the permalink to your layout in my web based tool. You would be able to specify some details and then click on a 'Generate', which would generate and download the CAD drawing for the plate needed for the layout you have specified.

SETTINGS: These have not been ironed out yet, but here are some things I am considering.

Select the switch cutout type you would like.

(Optional) Select the case layout you want the plate to fit in. This would determine if/where the mounting holes are located.

(Optional) If a case layout is not specified, how much space do you want on the outside of the plate? Do you want drill holes (for a sandwich case)? Etc...

Here are the currently supported switch cutouts:

(https://dl.dropboxusercontent.com/u/1392076/swillkb/simple.png)

(https://dl.dropboxusercontent.com/u/1392076/swillkb/complex.png)

TOOLS BEING USED: I have chosen to script this using Python and CadQuery (which is based on FreeCAD). I am a very proficient Python developer, so that was my main criteria when looking for parametric CAD scripting frameworks. If I am learning CAD from scratch, I might as well do it in an environment I am very comfortable in.

LICENSE: I will be making the service available online and I will also publish my code on GitHub (once I have a working version). I will probably put some sort of open source license on it, but I will cross that bridge when I publish the code. My intention is to make my work freely available with the hope that others will consider offering pull requests to add functionality or help with compatibility.

ETA: I am not entirely sure when you can expect this to be ready yet. I am still very early in development right now. I have the basic construct for placing the different sized keys where I want them now, but I have not automated the actual layout build yet or done any exporting yet. I have built 3 different switch opening types so far (at least one more to come) and I will be updating this thread with the details on those openings soon (probably tonight).

HOW CAN YOU HELP? Subscribe and leave me any feedback you feel is relevant. I am still wet behind the ears in the field of CAD and laser cutting and such, so any suggestions you have are VERY welcome.

ENDGAME: I am a LONG WAY off this, but I am going to throw this out there as the endgame of where I want this tool to get to. In addition to just creating the plate layout, I would also like to be able to add the ability to 'suggest a matrix' for hand wiring. This would basically show a beginner how they would need to solder together their switches and diodes to have a working matrix. Ideally, since I will have the perferred key mapping passed in from keyboard-layout-editor, I would also like to try to automatically generate the HEX file for the layout they have specified according the the matrix I have generated. I know, I am a dreamer, but I HAVE A DREAM (and I think I have the skills to be able to pull it off)...

Thanks for reading this Wall Of Text and please feel free to contribute any ideas or encouragement. :P

I also read previously that two 1x1 switches are 19.05mm from left side to left side of the adjacent switch, but that was the style with built switch openings on the whole side (and the measurement was from the outside of the wing opening). It should not matter because it was the same on both switches (I think). So that would mean that the switches are 19.05 - 13.97 = 5.09mm apart?

Also, I am looking for the standard plate sizes (outside dimensions) in mm for the poker and tkl plates.

If you just imagine the square 0.551in || 14mm cutout is your base, layout your keyboard plate with that, the additional cutouts are just extra room for the switch clips. They shouldn't affect the actual layout anywhere you don't plan to cut screw holes or etc.Make heavy use of offset and reference lines, you'll be good to go.

Great, thanks... I am scripting everything because I am working on a tool to automate plate creation. It is super basic, but I have been able to draw the switch cutout and place them 19.05mm apart (center to center).

Thank you very much for the values there, that is exactly what I needed. I really appreciate it.

Here is what I have so far (getting the pieces together to be able to automate). Making progress, but it has been pretty slow at first as I learn this API.

[attachimg=1]

Edit: Once I finish this tool I will make it available via a web UI for people to use. I will also open source the code. I just want to get the basic implementation in place before doing that so if there are suggestions and such I can more easily integrate them.

Sounds awesome. I wouldn't use those switch hole shapes, though. Unless you have randomly 90-degree rotated switches, you don't need the cutouts on the top and bottom. And it makes the switches less stable in the plate.

You should get with ne0phyte. He added some type of automated script to his layout generator to create plate drawings. His tool is at ne0.cc/laygenV2

Actually, the switch hole I recommend is a 12.8x15.6mm rectangle centered in the 14mm square. That hole will work for both MX (with easy open tabs) and Alps.

Sounds neat. I have been working on a Poker-type 60% DWG file with interchangeable blocks so you could easily swap out an ANSI enter for an ISO, or swap out your shifts and backspace for the split variety, or even swap all the cutouts for the switch opening type, just by using the replace block command in AutoCAD.

Though now that you bring it up, would be neat to do it in a web UI instead.. Maybe this weekend I'll draw up some FRD's, my idea's pretty limited in usefulness to people who have access to a very expensive CAD application.

Sounds awesome. I wouldn't use those switch hole shapes, though. Unless you have randomly 90-degree rotated switches, you don't need the cutouts on the top and bottom. And it makes the switches less stable in the plate.

You should get with ne0phyte. He added some type of automated script to his layout generator to create plate drawings. His tool is at ne0.cc/laygenV2

Actually, the switch hole I recommend is a 12.8x15.6mm rectangle centered in the 14mm square. That hole will work for both MX (with easy open tabs) and Alps.

Excellent. I was not sure what the best switch cutout was, so I used that one because it seemed to offer the most 'features'. I will make it possible to select which type of switch cutout people want to use. I will make your suggestion the default.

It would be very interesting to see how ne0phyte's service works. Very cool. Do you know what type of code you have to paste in to see what the plate would look like?

My plan is actually to piggyback off the wonderful work put into 'http://www.keyboard-layout-editor.com/'. Basically, a user would create their layout on that site and then paste the permalink to their layout into my UI and have a few additional options they could change (like switch type for example). Then they would be able to 'generate' and it would create a downloadable cad file for them as well as a png for them to verify that it looks correct visually.

Does anyone know who created keyboard-layout-editor.com? I am almost positive I saw the person active on GH, but I can't remember where. I would love to get in touch with them...

Sounds neat. I have been working on a Poker-type 60% DWG file with interchangeable blocks so you could easily swap out an ANSI enter for an ISO, or swap out your shifts and backspace for the split variety, or even swap all the cutouts for the switch opening type, just by using the replace block command in AutoCAD.

Though now that you bring it up, would be neat to do it in a web UI instead.. Maybe this weekend I'll draw up some FRD's, my idea's pretty limited in usefulness to people who have access to a very expensive CAD application.

Cool. Yes, I am using FreeCAD as my engine and I am using CadQuery as my scripting tool for creating the actual automation. I basically chose it because it was in Python and I am already a proficient Python developer. If I am going to be learning CAD from scratch, I might as well do it in an environment I am comfortable with already. :P

If anyone has suggestions of things I should look into for scripting CAD in Python, I am all ears...

Swill, just so people could have their preferences, could you have have the program let us choose which cutouts we want?

This is also an amazing idea and as someone with zero experience with engineering and CAD, I can approve of this!

Yes, so far my plans for options are:- Select the switch opening you want.- Select the plate size (with mount holes) you want. This is for case compatibility. If the layout you provide does not fit on the plate size you specified it would have to error and show you why (somehow). - If you do not specify a case size, it will automatically create the plate according the the size it thinks it should be based on your layout. I may make it possible for you to configure the amount of space you want on the size and top if you want to do a sandwich case. Not sure how I would do mounting holes in that case though. But you would have the cad, so you could add your own mounting holes if you wanted.

Some of the edge cases will probably not be clean until later. Initially I think I will just have to count on people to not be stupid and it will only work if you enter layouts that are sane. We will see how clever I can get...

If you just imagine the square 0.551in || 14mm cutout is your base, layout your keyboard plate with that, the additional cutouts are just extra room for the switch clips. They shouldn't affect the actual layout anywhere you don't plan to cut screw holes or etc.Make heavy use of offset and reference lines, you'll be good to go.

I just implemented my script using these measurements and I realize that something does not make sense with these numbers. The distance between the centers for a 2u should not be double that of two 1u switches. If that is the case, then the 2u switch actually takes up 3u of space because it has a full 1u on each side of the switch.

Here is an image to illustrate what these numbers work out to:

(https://dl.dropboxusercontent.com/u/1392076/switch_eg.png)

I think the numbers you have there is actually the 'space the key takes up with the key spacing accounted for', rather than distance between centers. For 1u keys, yes, it is the distance between centers, but for the larger keys I think you have to split the distance to some extent. I will play with this more tonight to figure out the actual algorithm to get these to line up correctly.

Thanks for the feedback though, you got me way ahead of where I was... :)

Ah yeah, I was thinking with brain instead of lines. I use centers to start off in upper left, then the unit constant becomes width spacing with the keyswitch cutout centered within.

OK cool i will figure out how to use these numbers in my case. Thanks for the quick reply. I am slowly getting more comfortable with all this now.

You're probably better off assigning a constant as 1u, then multiplying it by the keywidth (1.5, 1.75, etc) than to do some funky lookups with the numbers in any table. The only numbers you really need to know are 1 unit, and the values available in Cherry's spec sheet for in or mm

Ah yeah, I was thinking with brain instead of lines. I use centers to start off in upper left, then the unit constant becomes width spacing with the keyswitch cutout centered within.

OK cool i will figure out how to use these numbers in my case. Thanks for the quick reply. I am slowly getting more comfortable with all this now.

You're probably better off assigning a constant as 1u, then multiplying it by the keywidth (1.5, 1.75, etc) than to do some funky lookups with the numbers in any table. The only numbers you really need to know are 1 unit, and the values available in Cherry's spec sheet for in or mm

Is it exactly multiples? I did not cross reference to verify. I did see 2u was, but I did not verify the fraction ones.

I am doing my calculations based on switch centers for all the switches. I currently have sizes such as u100, u125, u150, etc. I prefer doing multiples if the numbers work out correctly. I will cross reference and simplify my code accordingly. Thx.

I have not sat down to verify this yet, but I think the centers will work out to be something like this (assuming we are moving along a row).

current_loc = .5*u1*prev_sw_mult + .5*u1*curr_sw_mult

This should account for switches of different sizes next to each other.

I will do a bunch of tests to verify this concept when I am back in front of my putter.

I spent a bunch of time with the Cherry spec and a caliper tonight and I modified the suggested dimensions of this 'rotatable' switch opening. The problem with the previous cutout dims was that on the non-flap sides, only the clip caught the edge, not the actual switch body. I have made some minor modifications so that the middle section on the non-flap sides with now (barely) catch the edges of the switch body. It only catches it by a couple tenths of a mm on each side, but that is all I could risk and still make sure the flap openings did their job.

Here is an image of the new dims I have come up with:

(https://dl.dropboxusercontent.com/u/1392076/dims.png)

Note: the hard to read dimensions in the top right are: 0.8mm and 1.0mm

Edit:In my recent drawing I am working with a tolerance of about +/- .1mm. Now that I think of it, I think that is probably too small to be expected.

In looking at the numbers that jdcarpe sent over (mainly based on the 12.8 number), he is leaving a LOT bigger tolerance for clearing the switch flaps on the sides. I may have to abandon the idea of trying to make the rotatable switch cutout more stable since I don't think I can count on the tolerances to the level of precision I have calculated. Anyone know what is a realistic expectation here for a tolerance while machining?

Edit2:I just realized that the 12.8 value is actually for Alps compatibility, not just leaving lots of space for MX tolerance.

First off, Swill, this is a great idea and somethign I wanted to do myself before life caught on.

Secondly, please don't take this wrong, can you make a new thread for your project as I think ti would get more visibility as well as keep this thread clean and on topic.

Third here are my thoughts on points raised thus far:1. Tolerance for acrylic laser cutting is about 0.2 on either side of the line, so suppose you were to cut a square with 14mm sides, now this would produce a square cutout of 14.2mm sides and a small square piece of 13.8mm. Yes it burns a lot of acrylic :)). Don't know about alu/stell, the other two most commonly used materials.2. 19.05 = 1u and the space a one unit key takes, and similarly 2u, is the key a two unit key takes. So the distance from center to center would be 0.5*(current_key + adjacent_key)u. Your formula looks good.3. ijprest (http://geekhack.org/index.php?action=profile;u=30503) created the layout editor. And I think it's a great idea to work using his current work. No need to re-invent the wheel. Perhaps you guys can work together and he can integrate your work or link to it directly from his editor.4. I like the idea of the sandwich case (Well, I'm gonna be useless then :P), for the switch holes, I'd recommend the user input extra space they want around the four sides and number of screw holes on each side, they system will then automagically add a screw hole in each corner and then space out the other screw holes. For the middle layers, a cutout 1mm bigger on each side than the rectangle formed from the top left corner of the 19.05mm square of the top left-most key and bottom-right corner of the 19.05mm square of the right-bottom most key should suffice (Eg assumes 1u keys on the two mentioned position).5. It's exact multiples, 1u, 1.25u, 1.5u, etc.

First off, Swill, this is a great idea and somethign I wanted to do myself before life caught on.

Secondly, please don't take this wrong, can you make a new thread for your project as I think ti would get more visibility as well as keep this thread clean and on topic.

Third here are my thoughts on points raised thus far:1. Tolerance for acrylic laser cutting is about 0.2 on either side of the line, so suppose you were to cut a square with 14mm sides, now this would produce a square cutout of 14.2mm sides and a small square piece of 13.8mm. Yes it burns a lot of acrylic :)). Don't know about alu/stell, the other two most commonly used materials.2. 19.05 = 1u and the space a one unit key takes, and similarly 2u, is the key a two unit key takes. So the distance from center to center would be 0.5*(current_key + adjacent_key)u. Your formula looks good.3. ijprest (http://geekhack.org/index.php?action=profile;u=30503) created the layout editor. And I think it's a great idea to work using his current work. No need to re-invent the wheel. Perhaps you guys can work together and he can integrate your work or link to it directly from his editor.4. I like the idea of the sandwich case (Well, I'm gonna be useless then :P), for the switch holes, I'd recommend the user input extra space they want around the four sides and number of screw holes on each side, they system will then automagically add a screw hole in each corner and then space out the other screw holes. For the middle layers, a cutout 1mm bigger on each side than the rectangle formed from the top left corner of the 19.05mm square of the top left-most key and bottom-right corner of the 19.05mm square of the right-bottom most key should suffice (Eg assumes 1u keys on the two mentioned position).5. It's exact multiples, 1u, 1.25u, 1.5u, etc.

Great, thanks for all the info, this is really helpful. :)

I didn't really think I would have so many questions initially, now I realize I have dominated this thread a bit too much. I will create a new thread for this project and stop polluting this thread. Good suggestion... :P

This is an idea I have had for quite a while but have not had time to work on. I am now officially into my new house, so I am officially getting this project underway...

THE IDEA: There are many builders in this community who would like to experiment with different keyboard layouts, but not all of them have the CAD skills to be able to create the plate. The goal of this project is to enable anyone which an idea to be able to build a layout and then have the plate automatically built for them (download the CAD drawing). Since Melvang and team have done such a great job getting the Enabler PCB into the wild, this type of tool should be a great progression to enable very cool layouts.

HOW IT WORKS: I plan to piggyback of the excellent work of ijprest (http://geekhack.org/index.php?action=profile;u=30503) and his www.keyboard-layout-editor.com (http://www.keyboard-layout-editor.com/). As a user, you would go and create a layout using that tool, then you would paste the permalink to your layout in my web based tool. You would be able to specify some details and then click on a 'Generate', which would generate and download the CAD drawing for the plate needed for the layout you have specified.

SETTINGS: These have not been ironed out yet, but here are some things I am considering.

Select the switch cutout type you would like.

(Optional) Select the case layout you want the plate to fit in. This would determine if/where the mounting holes are located.

(Optional) If a case layout is not specified, how much space do you want on the outside of the plate? Do you want drill holes (for a sandwich case)? Etc...

TOOLS BEING USED: I have chosen to script this using Python and CadQuery (which is based on FreeCAD). I am a very proficient Python developer, so that was my main criteria when looking for parametric CAD scripting frameworks. If I am learning CAD from scratch, I might as well do it in an environment I am very comfortable in.

LICENSE: I will be making the service available online and I will also publish my code on GitHub (once I have a working version). I will probably put some sort of open source license on it, but I will cross that bridge when I publish the code. My intention is to make my work freely available with the hope that others will consider offering pull requests to add functionality or help with compatibility.

ETA: I am not entirely sure when you can expect this to be ready yet. I am still very early in development right now. I have the basic construct for placing the different sized keys where I want them now, but I have not automated the actual layout build yet or done any exporting yet. I have built 3 different switch opening types so far (at least one more to come) and I will be updating this thread with the details on those openings soon (probably tonight).

HOW CAN YOU HELP? Subscribe and leave me any feedback you feel is relevant. I am still wet behind the ears in the field of CAD and laser cutting and such, so any suggestions you have are VERY welcome.

ENDGAME: I am a LONG WAY off this, but I am going to throw this out there as the endgame of where I want this tool to get to. In addition to just creating the plate layout, I would also like to be able to add the ability to 'suggest a matrix' for hand wiring. This would basically show a beginner how they would need to solder together their switches and diodes to have a working matrix. Ideally, since I will have the perferred key mapping passed in from keyboard-layout-editor, I would also like to try to automatically generate the HEX file for the layout they have specified according the the matrix I have generated. I know, I am a dreamer, but I HAVE A DREAM (and I think I have the skills to be able to pull it off)...

Thanks for reading this Wall Of Text and please feel free to contribute any ideas or encouragement. :P

oh sweet, so it'll be like Ne0phyte's laygenv2 (http://ne0.cc/laygenV2/) and it's DXF export function but easier to use! I can't wait.

You might want to check with ne0phyte for some tips / info. Maybe it can save you some time.

as to advice: is Cadquery easily scriptable? I seem to recall in my search for a cad package to use that many of them are easily scriptable. I think that interfacing to this could be the easiest part or the hardest.

If you need measurements of the mounting hole locations, I can provide them for a lightsaver V1 and a skeldon. Maybe having a listing of the common custom (and standard) keyboards and their screw locations would help. I've already measured a poker 2 and case with a calipers if that'll help.

oh sweet, so it'll be like Ne0phyte's laygenv2 (http://ne0.cc/laygenV2/) and it's DXF export function but easier to use! I can't wait.

You might want to check with ne0phyte for some tips / info. Maybe it can save you some time.

as to advice: is Cadquery easily scriptable? I seem to recall in my search for a cad package to use that many of them are easily scriptable. I think that interfacing to this could be the easiest part or the hardest.

If you need measurements of the mounting hole locations, I can provide them for a lightsaver V1 and a skeldon. Maybe having a listing of the common custom (and standard) keyboards and their screw locations would help. I've already measured a poker 2 and case with a calipers if that'll help.

Yes, I think it is basically the same idea but easier to use. I have never used ne0phyte's tool because I do not know what I am supposed to enter to get a result and there are no instructions on the site. I will contact him though because I am sure he has some advice for me.

CadQuery is a Python API extension to the FreeCAD Python API. Basically, the only way to use CadQuery is via code. I load my code into the FreeCAD UI through the built in Python Console to verify my drawings while I develop. My only real requirement when picking a tool was that I could generate CAD drawings using Python. So far it is working pretty well. I am still a n00b, but I am figuring it out pretty well. Getting comfortable with it now...

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that will dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

This is a really cool project as I've said before swill, good luck. I'll be happy to help in anyway I can.

I have some measurements for QFR, Leeku 1800, Pure which I can send to you if needed.

For some of the opensource work like the GHPad, QazPad, JD40, etc, you can get mounting hole information from the PCB files itself.

Ahh, yes. I remember that the GH60 PCB file has the measurements for the mount holes as well as the external plate dimensions (probably), so I will maybe start from that. I think that PCB supports the poker layout, so it is probably a good reference for 60% boards. Thx...

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

oh sweet, so it'll be like Ne0phyte's laygenv2 (http://ne0.cc/laygenV2/) and it's DXF export function but easier to use! I can't wait.

You might want to check with ne0phyte for some tips / info. Maybe it can save you some time.

Yes, I think it is basically the same idea but easier to use. I have never used ne0phyte's tool because I do not know what I am supposed to enter to get a result and there are no instructions on the site. I will contact him though because I am sure he has some advice for me.

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that will dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

All the details are on the DT topic:http://deskthority.net/workshop-f7/tiny-javascript-keyboard-layout-editor-t5110.html

I think for his it's easier to do stepped keycaps (and caps that are vertical and a different size on both bits). I spent about 45 minutes trying to get the keyboard-layout-editor working for a specific keycap on my displaywriter. Code is a little clunky for that.

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

Hmm, I think you could just make a post, and ask people to advertize it in their signature (as well as the online tool) and then for specific ones that are hard to get people to upload to you, search the forum for people that have them and then PM them or the KB Creator for more info.

Like I know who has the CAD drawings for the skeldon plate, so I can get the exact measurements from there.

I measured the poker2 myself with a vernier caliper, so some of my measurements might be up to 0.5mm off because it's sometimes hard to get things exact.

Sprit was kind enough to forward me the cad drawings for his 110% KB so I could purchase a sufficiently huge hunk of metal to bolt it to (I think this method is now call the swill case). You might ask him for what he's got (would be the same for the other winkeyless.kr boards.

---

I wonder if you could have a "key" for certain KBs, where you could make plates for a PCB, and the only options are what the PCB itself supports. Maybe some presets or something. This would make it easy for 1800 plates for lightsaver V2, or making custom phantom plates easily. Of course also have a "full custom" mode where you can design an arbitrary plate.

What about also having support for rotated keyswitches? Like I want to make plates for ergodox (thumb area) or some of jacobolus' ergo designs. Just a thought.

I hope I'm not throwing too much info and requests at you. I don't want you to get into feature creep or design hell. Please just pick what features make it into the initial release and then everything else can be added later.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

Spacing between the keys that are next to each other will be set. I am referring to the width between blocks of keys - like between the main typing area compared to the arrows/6 pack, or between the main typing area and the function row.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

Spacing between the keys that are next to each other will be set. I am referring to the width between blocks of keys - like between the main typing area compared to the arrows/6 pack, or between the main typing area and the function row.

Ahh, gotcha. Yes, I am planning to do the same thing that the keyboard-layout-editor does. He has basically defined that space as a fraction of a u1 key. It seems to work pretty well, so I was planning to do the same thing. So yes, I would be supporting putting blank space between keys. This would be automatic if your layout in the keyboard-layout-editor has them.

So can we choose the x and y coordinates of the switch holes?You can't make the spacing that would be between the function row and number row on Ne0phyte's program to my knowledge.

Edit: Swill pretty much answered this in a reply to another person

Yep. It works pretty much like this.

1u space between Esc and F1 would look like this in the raw data: ["Esc",{x:1},"F1"...

The space between Fn row and number keys would look like this: [{y:0.5},"~\n`"...For the y axis stuff, you specify it at the start of the line and it works for the whole row.

I have not considered supporting the ergodox layout. I am a bit concerned with the amount of work that would be. We will see how easy it will be for me to support once I get the basic parser/builder in place.

So can we choose the x and y coordinates of the switch holes?You can't make the spacing that would be between the function row and number row on Ne0phyte's program to my knowledge.

Edit: Swill pretty much answered this in a reply to another person

Yep. It works pretty much like this.

1u space between Esc and F1 would look like this in the raw data: ["Esc",{x:1},"F1"...

The space between Fn row and number keys would look like this: [{y:0.5},"~\n`"...For the y axis stuff, you specify it at the start of the line and it works for the whole row.

I have not considered supporting the ergodox layout. I am a bit concerned with the amount of work that would be. We will see how easy it will be for me to support once I get the basic parser/builder in place.

If you do ever feel like it, would adding an option to define the rotation of a switch by degrees suffice as a way to do this?

oh sweet, so it'll be like Ne0phyte's laygenv2 (http://ne0.cc/laygenV2/) and it's DXF export function but easier to use! I can't wait.

You might want to check with ne0phyte for some tips / info. Maybe it can save you some time.

Yes, I think it is basically the same idea but easier to use. I have never used ne0phyte's tool because I do not know what I am supposed to enter to get a result and there are no instructions on the site. I will contact him though because I am sure he has some advice for me.

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that will dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

All the details are on the DT topic:http://deskthority.net/workshop-f7/tiny-javascript-keyboard-layout-editor-t5110.html

I think for his it's easier to do stepped keycaps (and caps that are vertical and a different size on both bits). I spent about 45 minutes trying to get the keyboard-layout-editor working for a specific keycap on my displaywriter. Code is a little clunky for that.

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

Hmm, I think you could just make a post, and ask people to advertize it in their signature (as well as the online tool) and then for specific ones that are hard to get people to upload to you, search the forum for people that have them and then PM them or the KB Creator for more info.

Like I know who has the CAD drawings for the skeldon plate, so I can get the exact measurements from there.

I measured the poker2 myself with a vernier caliper, so some of my measurements might be up to 0.5mm off because it's sometimes hard to get things exact.

Sprit was kind enough to forward me the cad drawings for his 110% KB so I could purchase a sufficiently huge hunk of metal to bolt it to (I think this method is now call the swill case). You might ask him for what he's got (would be the same for the other winkeyless.kr boards.

---

I wonder if you could have a "key" for certain KBs, where you could make plates for a PCB, and the only options are what the PCB itself supports. Maybe some presets or something. This would make it easy for 1800 plates for lightsaver V2, or making custom phantom plates easily. Of course also have a "full custom" mode where you can design an arbitrary plate.

What about also having support for rotated keyswitches? Like I want to make plates for ergodox (thumb area) or some of jacobolus' ergo designs. Just a thought.

I hope I'm not throwing too much info and requests at you. I don't want you to get into feature creep or design hell. Please just pick what features make it into the initial release and then everything else can be added later.

Thanks for the DT link. That is very helpful for understanding how that tool works. :)

I have not thought of stepped keys. I may have to look into that later. Thanks for getting that on my radar. The vertical keys should not be a problem. They are defined as the following in in Raw data: {h:2},"Enter"

I will try to put together as many layouts as I can find and then I will do a call out (when I am ready) for anyone who has dims to help me out getting me the details. I will start small and work my way from there...

Sprit sent me his 60% and 75% drawings so I could build minimal cases for those builds. Love the fact that the 'swill case' is catching on a bit. :) I love that case concept and I use it on all my custom boards right now. I have been seeing a lot of people take the idea and remix it and make it theirs and really come up with some cool stuff. Thats awesome...

Yes, doing presets is something I am considering as well. If nothing else it will be a good knowledge base of plate files. Like the 101 different layouts the GH60 can be configured in. :)

I have not thought of rotating on non-90-degree angles. I will have to put more thought into that one. It won't be in version 1, that I can tell you for sure. :)

Basically, I am going to automatically add stabilizer holes on keys that are 2u or greater. I will just put 2u stab holes on everything up to 4u, at which point I will start using different stab sizes like the SP spacing (i think). And then each of the space bar sizes will have their own stab cutout sizes. This will be automatically generated based on the size of the key. For vertical keys, I will put stab cutouts if the key is larger than 2u.

I will be offering 4 different switch opening types, one of which allows for MX switches to be rotated 90º. One of the switch openings will also support Alps switches (but will have MX stab holes for now).

I am going to be drawing the stab cutouts tonight. I am going to try to make it so you can put the stabilizer in either way. We will see if that is possible once I sit down with the Cherry specification sheet and start playing with it.

Keep throwing ideas my way. It is MUCH easier to build in features (or at least setup my code so I can support the features later) if I get the wishlist stuff now. These are really good things for me to be paying attention to.

If you do ever feel like it, would adding an option to define the rotation of a switch by degrees suffice as a way to do this?

Yes, do you plan to support ergodox and other ergo designs with rotated switches? I see excellent arguments on both sides.

I had not thought of it, but it is a good idea.

The keyboard-layout-editor supports that functionality, so theoretically this could be added.

This is how the keyboard-layout-editor handles the first row of the ergodox thumb cluster.[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],

Notice the 'r' value which I believe to be the rotation in degrees. I am not sure what the 'rx' and 'ry' options do yet, but that code is open source, so I can go poke around in the code to better understand the engine behind it.

I have not thought of stepped keys. I may have to look into that later. Thanks for getting that on my radar. The vertical keys should not be a problem. They are defined as the following in in Raw data: {h:2},"Enter"

This, I see is a problem. What if I have a KB like this that has a vertical key that's 2 different widths?(https://farm4.staticflickr.com/3730/11317167275_b236c29741_o.jpg) They do exist also for cherry. I think the only issue here ('cause I don't care what the layout shows as long as it works) is making sure that the switch is in the right place underneath the ISO enter or whatever. IIRC for cherry they are in the middle between the rows.

I will try to put together as many layouts as I can find and then I will do a call out (when I am ready) for anyone who has dims to help me out getting me the details. I will start small and work my way from there...

Sprit sent me his 60% and 75% drawings so I could build minimal cases for those builds. Love the fact that the 'swill case' is catching on a bit. :) I love that case concept and I use it on all my custom boards right now. I have been seeing a lot of people take the idea and remix it and make it theirs and really come up with some cool stuff. Thats awesome...

Probably one of my fav compact designs. plate mounted KB with a "swill case". I used to resent it because it was invented before you were a member here but you popularized it. We gotta call it something, and I like the name.

Basically, I am going to automatically add stabilizer holes on keys that are 2u or greater. I will just put 2u stab holes on everything up to 4u, at which point I will start using different stab sizes like the SP spacing (i think). And then each of the space bar sizes will have their own stab cutout sizes. This will be automatically generated based on the size of the key. For vertical keys, I will put stab cutouts if the key is larger than 2u.

I will be offering 4 different switch opening types, one of which allows for MX switches to be rotated 90º. One of the switch openings will also support Alps switches (but will have MX stab holes for now).

I am going to be drawing the stab cutouts tonight. I am going to try to make it so you can put the stabilizer in either way. We will see if that is possible once I sit down with the Cherry specification sheet and start playing with it.

Keep throwing ideas my way. It is MUCH easier to build in features (or at least setup my code so I can support the features later) if I get the wishlist stuff now. These are really good things for me to be paying attention to.

okay I'll give it some thought when I'm at work today and hopefully have ideas for you later.

I have not thought of stepped keys. I may have to look into that later. Thanks for getting that on my radar. The vertical keys should not be a problem. They are defined as the following in in Raw data: {h:2},"Enter"

This, I see is a problem. What if I have a KB like this that has a vertical key that's 2 different widths?

Show Image

(https://farm4.staticflickr.com/3730/11317167275_b236c29741_o.jpg)

They do exist also for cherry. I think the only issue here ('cause I don't care what the layout shows as long as it works) is making sure that the switch is in the right place underneath the ISO enter or whatever. IIRC for cherry they are in the middle between the rows.

I will try to put together as many layouts as I can find and then I will do a call out (when I am ready) for anyone who has dims to help me out getting me the details. I will start small and work my way from there...

Sprit sent me his 60% and 75% drawings so I could build minimal cases for those builds. Love the fact that the 'swill case' is catching on a bit. :) I love that case concept and I use it on all my custom boards right now. I have been seeing a lot of people take the idea and remix it and make it theirs and really come up with some cool stuff. Thats awesome...

Probably one of my fav compact designs. plate mounted KB with a "swill case". I used to resent it because it was invented before you were a member here but you popularized it. We gotta call it something, and I like the name.

Basically, I am going to automatically add stabilizer holes on keys that are 2u or greater. I will just put 2u stab holes on everything up to 4u, at which point I will start using different stab sizes like the SP spacing (i think). And then each of the space bar sizes will have their own stab cutout sizes. This will be automatically generated based on the size of the key. For vertical keys, I will put stab cutouts if the key is larger than 2u.

I will be offering 4 different switch opening types, one of which allows for MX switches to be rotated 90º. One of the switch openings will also support Alps switches (but will have MX stab holes for now).

I am going to be drawing the stab cutouts tonight. I am going to try to make it so you can put the stabilizer in either way. We will see if that is possible once I sit down with the Cherry specification sheet and start playing with it.

Keep throwing ideas my way. It is MUCH easier to build in features (or at least setup my code so I can support the features later) if I get the wishlist stuff now. These are really good things for me to be paying attention to.

okay I'll give it some thought when I'm at work today and hopefully have ideas for you later.

The ISO enter is supported by the keyboard-layout-editor, so it should be possible to support. I will have to figure out some of the details on that one because it does not really predict where the switch placement should be based on the description of the key (unlike most of the other keys).Here is the code for an ISO enter: {x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter"

I am not planning to support ISO on the first version. I will slowly add support for new features like this (or others can offer pull requests) once the code is made available. It is easier to stay focused on the code and get something working when I am doing it alone to start. Once I have something then I can release it into the wild and others can start playing with it and contributing.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

Spacing between the keys that are next to each other will be set. I am referring to the width between blocks of keys - like between the main typing area compared to the arrows/6 pack, or between the main typing area and the function row.

Ahh, gotcha. Yes, I am planning to do the same thing that the keyboard-layout-editor does. He has basically defined that space as a fraction of a u1 key. It seems to work pretty well, so I was planning to do the same thing. So yes, I would be supporting putting blank space between keys. This would be automatic if your layout in the keyboard-layout-editor has them.

This is what I mean is not accurate enough in the existing layout editor. Sure you can specify .5 or .25 of a key width for spacing. But if I need the spacing between the 6 pack and numpad to be exactly 0.3875" - can't do that.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

Spacing between the keys that are next to each other will be set. I am referring to the width between blocks of keys - like between the main typing area compared to the arrows/6 pack, or between the main typing area and the function row.

Ahh, gotcha. Yes, I am planning to do the same thing that the keyboard-layout-editor does. He has basically defined that space as a fraction of a u1 key. It seems to work pretty well, so I was planning to do the same thing. So yes, I would be supporting putting blank space between keys. This would be automatic if your layout in the keyboard-layout-editor has them.

This is what I mean is not accurate enough in the existing layout editor. Sure you can specify .5 or .25 of a key width for spacing. But if I need the spacing between the 6 pack and numpad to be exactly 0.3875" - can't do that.

0.3875" = 9.8425mm1/19.05 = x/9.8425x = 9.8425/19.05x = .51667

So the code would be as follows to get your exact dimension:"Pause",{x:51667},"7"

So I have been thinking about this exact for some time and I had planned on using the SolidWorks API to create the DWG/DXF file that you would need for this and then I was going to use the Esprit API to automatically generate the G-code to machine the plate. The problem that I ran in to was stabilizers. They are different based on who manufactures the cap. For instance: SP has a 6.25 unit space bar but the stabilizer spacing is different from the 6.25u spacebar from... I can't remember who right now but the spacing was about .03" per side difference (about 1/16" total). It was enough that you needed to either buy your spacebar around your stab or make your plate around your spacebar. As far as I know the issue was limited to the space bar but I cannot remember the specifics.

Sure there are a few ways to skin a cat and this isn't some impossible hurdle but it is something people will need to be aware of when designing their plate. If you have any questions feel free to PM me or hit me up on IRC.

So I have been thinking about this exact for some time and I had planned on using the SolidWorks API to create the DWG/DXF file that you would need for this and then I was going to use the Esprit API to automatically generate the G-code to machine the plate. The problem that I ran in to was stabilizers. They are different based on who manufactures the cap. For instance: SP has a 6.25 unit space bar but the stabilizer spacing is different from the 6.25u spacebar from... I can't remember who right now but the spacing was about .03" per side difference (about 1/16" total). It was enough that you needed to either buy your spacebar around your stab or make your plate around your spacebar. As far as I know the issue was limited to the space bar but I cannot remember the specifics.

Sure there are a few ways to skin a cat and this isn't some impossible hurdle but it is something people will need to be aware of when designing their plate. If you have any questions feel free to PM me or hit me up on IRC.

I was JUST looking into this. :) I just switched tabs over from the Cherry spec: http://www.cherrycorp.com/english/switches/pdf/mx_cat.pdf

In the OP of the GH CAD Resource Hub (http://geekhack.org/index.php?topic=47744.msg1019782#msg1019782), I found the following (and the associated DWG which I am trying to get working in FreeCAD right now). I may choose to use the universal stabs for everything, but I am not sure. Maybe I will implement both the standard stabs as well as giving an option for people to use the universal stab type. I am actively working on this right now, so I will have a better idea how I want to solve this problem later tonight. :) Thanks for the heads up...

So I have been doing a lot of research on this topic and have looked at a lot of CAD files. I have also done a bunch of measurements of a switch as well as a hammer plate.

So here is a bunch of random questions:- I see in the Cherry spec that the main cutout area is 14mm +- 0.05mm- I see a range of sizes in different drawings. The most common are: 13.95mm and 13.97mm. Is there a reason people are always drawing the cutout a bit smaller than the spec? Does it have to do with the machining taking more material than you draw usually?- I have no idea what cad files Hammer used, but they do not match up to any of the drawings I am seeing. Some of his dimensions are bigger than the drawings I am seeing and some of his are also smaller, so its not like it was the same drawing and the cuts are consistently bigger or something like that. For example, his main cutout area is 14.1mm but his flaps are only 2.9mm wide (where many drawings have them at 3.5mm wide or there abouts and the main cutout at 13.95mm for that cutout type)- For the switch flaps, I am seeing some different numbers, but 15.6mm is pretty common in drawings. 15.57mm also shows up in a couple places. Again, smaller... Is there a theme?- When I measured the distance between the flaps on the Hammer plate and it is a huge 16.9mm. I know this measurement is not the most important because it is just a convenience factor for ease of switch removal.

The only measurements that REALLY make sense to me are the dimensions for one of the layouts that jdcarpe suggested. Basically a 14mm main cutout with a 12.8mm x 15.6mm rectangle centered in it. This is both MX and Alps compatible and those numbers just make sense to me.

So in short. Is there a reason everyone is drawing these cutouts smaller than the spec?

@jdcarpe: if you are watching this thread. do you know what switch cutout dimensions were used for the universal tkl plate you sold me? i will get after that plate with a caliper and see if i can figure out what the expected tolerances are in cutting and how close they are to the drawing in reality.

Anyone with experience on this, please chime in. I am drawing all of these cutouts via code, so I can easily change it later, but it is a lot of work to draw out some of the more elaborate cutouts. I also want to get an idea of what I am doing and why people have made the decisions they have before I get into drawing the stabilizers and automating the creation of them because they are even more complicated to draw than the switch cutouts.

Thanks again for everyone who has been giving me feedback in this thread. :)

Where the 13.97 comes from is the nice round 0.55" measurement for the MX square, instead of the 0.551" as laid out in the Cherry spec sheet. I have seen it quite often. To be honest, I'm not sure what the most common dimension is that I use, because I have mostly copied and pasted from drawing to drawing, using plate drawing files from different sources. But if I were to draw them again from scratch, I would use the metric dimensions, as I believe they are what the imperial measurements are aiming toward.

Also, I don't think it matters that much, anyway. The switch housings do not have such tight tolerances that they can't be made to work with holes of 14.0 or 13.95 mm.

As far as cutouts go, I prefer either the simple square (best for hand wiring), the "Phantom" tab style, or the MX/Alps combo. The last one really precludes the need for the Phantom style, so you could even eliminate that one entirely. The one with tabs for 90-degree rotation is not acceptable for my own use, after testing with real world examples.

I think Hammer may have his plates machined instead of laser cut, similar to how GON makes his. That may account for the larger hole dimensions that don't seem to make sense.

Been somewhat slow going recently. I have been putting out fires at work non-stop and my sister is in town from BC, so I have not had much time to work on this.

Tonight I drew up the 2 unit stabilizers based on the cherry spec. I may change this later, but for now I am basically overlaying the switch cutout over the cherry spec 2 unit stabilizer. Please add comments if you see problems with this approach. According to how I am seeing the problem, this should work pretty well. Is there a reason I would need to draw any different types of 2 unit stabilizers? What would the universal stabilizer cutout offer that these don't?

Two recommendations:1. Use the universal style cutout for the stab areas, because as Melvang said, it would allow use of costar stabs as well.2. I'll post a second type of stab cutout, which is used for acrylic plates, actually any plate thicker than 2mm, it allows the use of only PCB mounted stabs, but no modification has to be done to the stabs as the cutout allows for enough room for the complete stabs to come through and not interact with the plate.

The universal stab cut out would offer the use of costar stabs as well.

Oh OK. I didn't realize that the cherry spec only supported cherry style stabs. I guess now that I write it, it makes sense. Thx. I will draw the universal stab tonight. I have the details from the OP of the CAD resource page.

Two recommendations:1. Use the universal style cutout for the stab areas, because as Melvang said, it would allow use of costar stabs as well.2. I'll post a second type of stab cutout, which is used for acrylic plates, actually any plate thicker than 2mm, it allows the use of only PCB mounted stabs, but no modification has to be done to the stabs as the cutout allows for enough room for the complete stabs to come through and not interact with the plate.

Great thanks MOZ. I will draw the universal tonight and if you post another type for thicker plates, I will make it available too.

I will be giving people the choice of what switch cutout they want, which 2u stab cutout they want and which spacebar cutout they want (which I have not drawn yet).

Slow and steady. Once I get the spacebars drawn I will be ready to start putting together the actual layout logic. I will be starting with only ANSII (and modifications of ANSII) to start. I will support vertical keys to start, but probably not the iso enter in the first version.

I have to start somewhere and this is the easiest way for me to get started.

I am confused... Why do the different sized keys have different universal stabilizer sizes? I thought that they all would take the same 2 unit stabilizer. Why would there be other sized cutouts?

Here is what I am talking about...

Show Image

(http://i.imgur.com/Hd5kmJA.png)

I could be wrong but I think the cutouts ate the same, but the horizontal spacing around the stabilizer changes.

Yes, the tabs on the bottom are both 3.3mm and the space between them is 20.6mm on all of them. Why would you need extra space around them? Why wouldn't you be able to just the 2u one (backspace in that drawing) for all of those other keys?

I am confused... Why do the different sized keys have different universal stabilizer sizes? I thought that they all would take the same 2 unit stabilizer. Why would there be other sized cutouts?

Here is what I am talking about...

Show Image

(http://i.imgur.com/Hd5kmJA.png)

I could be wrong but I think the cutouts ate the same, but the horizontal spacing around the stabilizer changes.

Yes, the tabs on the bottom are both 3.3mm and the space between them is 20.6mm on all of them. Why would you need extra space around them? Why wouldn't you be able to just the 2u one (backspace in that drawing) for all of those other keys?

Isn't that extra space around them just meant to mark how much distance is required between cutouts to fit the proper caps on?

Yeah 2u through 2.75u all have the same dimensions. So the extra space is just there for the caps.

Ok, thanks for confirming. I am just going to draw the 2u version then because that will just simplify things for my program. Thx...

Final question. What is the significance of the tabs on the right and left of that? Is that incase you decide to actually put two switches in that space instead of one with a stabilizer, those two switches can be opened? According to my measurements neither stabilizer will reach that far to either side.

Yeah 2u through 2.75u all have the same dimensions. So the extra space is just there for the caps.

Ok, thanks for confirming. I am just going to draw the 2u version then because that will just simplify things for my program. Thx...

Final question. What is the significance of the tabs on the right and left of that? Is that incase you decide to actually put two switches in that space instead of one with a stabilizer, those two switches can be opened? According to my measurements neither stabilizer will reach that far to either side.

Yeah 2u through 2.75u all have the same dimensions. So the extra space is just there for the caps.

Ok, thanks for confirming. I am just going to draw the 2u version then because that will just simplify things for my program. Thx...

Final question. What is the significance of the tabs on the right and left of that? Is that incase you decide to actually put two switches in that space instead of one with a stabilizer, those two switches can be opened? According to my measurements neither stabilizer will reach that far to either side.

That I can't really help you with, sorry.

No worries. I appreciate the help. :)

I am going to make that assumption because the opening (without the tabs) is 33mm which is 19mm (two switch centers) and then 7mm on the outside of center for both of them. Now that I do the math, I am pretty confident that is the case. I will draw mine that way too just to be consistent. Thx...

I now have both the 2 unit cherry spec stabs drawn and the 2 unit universal stabs drawn. Next I will be working on the space bars. I will probably just start with the 6.25 and 7 unit space bars from the cherry spec and the universal spacebar (which should support costar, I think).

Getting there... :) Once I have a couple spacebars drawn I will start automating the actual layouts. Then the fun really begins...

Final question. What is the significance of the tabs on the right and left of that? Is that incase you decide to actually put two switches in that space instead of one with a stabilizer, those two switches can be opened? According to my measurements neither stabilizer will reach that far to either side.

I think it's just so you can just copy/paste the cutouts across the row and it'll all line up easily: to make it easy for people to build plates and also see that they'll fit their layout and also line-up properly.

TBH, I'd probably do it in a similar way: have a lookup-table for predefined cutouts for all the common switches, and then paste across rows to render the CAD output. but I'm not a programmer so IDK how efficient that'd be.

Actually I'd have just the switch and just also store the spacing, so it'd paste space, switch&stab cutout, space then move on to the next one in the layout. But again: I only programmed in QBasic when I was like 10.

The method I'm using for my SVG renderer is drawing a path with variable distances. Functionally, the 2u is the same as the 10u with a longer bar, so I initiate a path, move to position, and start tracing a line using relative coords, and then once I hit a variable, I use absolute coords based on Cherry specs.

I run renderSpacebar( -2.625, -2.1, 2.625, 2.1 ); and it'll draw a stabilizer with cutouts at those unit positions for the 6.25u A+B style.Not as easy to render the options like stab openings, or screw holes, but I'll get to that whenever I get to it.

Final question. What is the significance of the tabs on the right and left of that? Is that incase you decide to actually put two switches in that space instead of one with a stabilizer, those two switches can be opened? According to my measurements neither stabilizer will reach that far to either side.

I think it's just so you can just copy/paste the cutouts across the row and it'll all line up easily: to make it easy for people to build plates and also see that they'll fit their layout and also line-up properly.

TBH, I'd probably do it in a similar way: have a lookup-table for predefined cutouts for all the common switches, and then paste across rows to render the CAD output. but I'm not a programmer so IDK how efficient that'd be.

Actually I'd have just the switch and just also store the spacing, so it'd paste space, switch&stab cutout, space then move on to the next one in the layout. But again: I only programmed in QBasic when I was like 10.

This is similar to what I am doing. Basically, I am drawing each of the different components. Then when my program parses the layout, it will move across the board and place the appropriate cutouts in the different locations.

The method I'm using for my SVG renderer is drawing a path with variable distances. Functionally, the 2u is the same as the 10u with a longer bar, so I initiate a path, move to position, and start tracing a line using relative coords, and then once I hit a variable, I use absolute coords based on Cherry specs.

I run renderSpacebar( -2.625, -2.1, 2.625, 2.1 ); and it'll draw a stabilizer with cutouts at those unit positions for the 6.25u A+B style.Not as easy to render the options like stab openings, or screw holes, but I'll get to that whenever I get to it.

This is similar to what I am doing, but I am not setting up my layout before hand and then placing the switches after. Instead, I will run over the layout quickly once just to figure out some sums so I can determine the size of the plate based on the number and size of the keys. When working with redefined case layouts (like the poker for example), then I will have to do a little magic to figure out how to get the holes between switches, but we will see...

Basically, I will be cutting one switch at a time based on the current switch size and the previous switch size. I will be looping through each row and placing the switches and 2u stabilizers for keys 2 <= key < 3.

I will have global settings for all of the following details:these options will be shown after you specify your source layout so I know what size spacebar you will be using and such.- Switch type (the 4 types I have shown so far)- 2 unit stab (cherry spec or universal so far)- spacebar type (cherry spec or universal so far. i will probably draw more options later)

Then when I move through the switches and draw them I will use the global settings to know which switch type to draw. If the key size is (2 <= key < 3) then it will draw a 2 unit stabilizer based on your selection. If the key is (3 <= key), then it will pick draw a spacebar stabilizer based on your previous selection.

Keep in mind that I am still planning this and this is what I have come up with so far.

Currently I have the following function for cutting the switch: cut_switch(p, c, s=None)It takes the plate to cut the switch on (p) as well as the center of where the switch should be cut (c) and if a stabilizer should be cut (s) which will be a numerical value of the size of the stab to be cut.

When moving from one switch location to the next, the (c) value is calculated as: c = .5*prev_switch_size*1unit_size + .5*curr_switch_size*1unit_size

So for example, for my testing, the following layout is created with the code below:

Your stabilizer holes are for Cherry stabs only, but I'm sure you knew that. A couple rectangular notches on the top, and you can use those holes with Costar stabs, as well.

If you use the Cherry spec sheet stabilizer hole, and cut out the little tabs where the stab insert holes connect to the switch hole at the top, it works fine with the ability to open the switches. But you won't have Alps compatibility with that type of hole.

Your 2-unit "universal" cutout is ONLY useful for exactly one location on a keyboard -- the Backspace. The other locations, i.e. Left Shift, Right Shift, Enter, require different spacing due to how their switches are arranged.

Also, I'm not sure Cherry plate mount stabs will clip on tho the "universal" hole cutouts. In the past, we have REQUIRED the use of PCB mount stabs if you use a plate with "universal" holes.

JD, pretty much cleared all the points I was going to outline, but just a couple of things I recall:1. dorkvader was right in pointing out that the file you posted from the GH CAD resources thread, has same stab cutouts for 2u-2.75u keys, just the bounding boxes are of different sizes, which allows new users to just copy and paste these drawings and join corner to corner, without having to worry about spacing.2. When you said "universal" cutout I thought you meant the one jdcarpe has mentioned above, as in Cherry spec stabs with extra notches on the top to allow for costar stabs.3. The universal cutout as you have now, as pointed out by JD, is useful only for the Backspace and something I wouldn't really recommend as it does't hold the switch very well or the stabs and is useful most with PCB mount switches and stabs. Besides, it is more of an "advance" concept, since you are making the tool for people starting out, I'd recommend to skip this option for now. As a second phase feature for your tool, you could include an option to add other options to a base layout, like a split backspace, and the tool would then automatically combine the cutouts and generate a new cutout, this would allow the user to have multi-layout plates to their liking, without you having to worry about all the possible cutouts.

If you use the Cherry spec sheet stabilizer hole, and cut out the little tabs where the stab insert holes connect to the switch hole at the top, it works fine with the ability to open the switches. But you won't have Alps compatibility with that type of hole.

Ok, I will revisit this drawing and try to make this one drawing work for both costar and cherry stabs. Is there a cutout that is costar and cherry compatible as well as alps compatible?

Your 2-unit "universal" cutout is ONLY useful for exactly one location on a keyboard -- the Backspace. The other locations, i.e. Left Shift, Right Shift, Enter, require different spacing due to how their switches are arranged.

Also, I'm not sure Cherry plate mount stabs will clip on tho the "universal" hole cutouts. In the past, we have REQUIRED the use of PCB mount stabs if you use a plate with "universal" holes.

I think I understand what the 'universal' cutout is designed for. I think it is mainly to solve for people not knowing if they want to put one or two switches there and if they put one switch they can put pcb mount stabilizers. I am not really targeting this level of detail yet, so I will stick with standard stabilizers and will adjust the spacing around them depending on the size of the key.

This is the only thing I have been able to find for the measurements for costar stabilizers. Is this correct? I will be using this spec unless someone else has a better resource somewhere.

JD, pretty much cleared all the points I was going to outline, but just a couple of things I recall:1. dorkvader was right in pointing out that the file you posted from the GH CAD resources thread, has same stab cutouts for 2u-2.75u keys, just the bounding boxes are of different sizes, which allows new users to just copy and paste these drawings and join corner to corner, without having to worry about spacing.2. When you said "universal" cutout I thought you meant the one jdcarpe has mentioned above, as in Cherry spec stabs with extra notches on the top to allow for costar stabs.3. The universal cutout as you have now, as pointed out by JD, is useful only for the Backspace and something I wouldn't really recommend as it does't hold the switch very well or the stabs and is useful most with PCB mount switches and stabs. Besides, it is more of an "advance" concept, since you are making the tool for people starting out, I'd recommend to skip this option for now. As a second phase feature for your tool, you could include an option to add other options to a base layout, like a split backspace, and the tool would then automatically combine the cutouts and generate a new cutout, this would allow the user to have multi-layout plates to their liking, without you having to worry about all the possible cutouts.

Thank you for the additional detail. I am starting to get my head around all this stuff now. I am really green when it comes down to all the details when it comes to drawing the different compatibilities and why some cutouts are drawn the way they are. If the costar spec I linked in the previous post, I should be all set to draw a cherry spec stabilizer with costar support. I am getting pretty good with drawing cutouts from code now, so that is definitely making me more comfortable. :)

I do have a couple plates with the 'universal' cutouts as defined in the OP of the CAD Resource thread (which is where I got that naming from). The switch would click in (if my plate was not 5mm acrylic), but it does require you to use PCB mount stabilizers. Not sure how I missed that when I did that drawing. I think the fact that the bottom tabs in that layout matched exactly to the costar spec, I got a bit blinded by the fact that the height of the opening was not correct (its an extra .85mm to tall).

I will revisit my cherry spec drawing and adapt it to also work for costar and I will go with that for my 2u stabs for now. I have to admit, I am dreading that I have to draw all of those different spacebar stabilizer cutouts. Haha... I will probably start out with just a couple and just make sure my code can be expanded later to support the rest and I will move on to the next piece and come back to the rest of the cutouts.

Thanks again for all the support and suggestions. It has been invaluable to have you guys reviewing my work (and theories) and setting me straight. I really appreciate it. :)

I went back over all the plates I have been drawing, and every one of them uses the 13.97mm dimension for the MX square. I don't know if that helps with the laser kerf, but I suspect it does.

Attached is a drawing of the stabilizer hole I use.

Thanks for that. I will use that as a guide. I am going to see how close it is to mine (other than the tabs on the top). I think that the tabs on the bottom are slightly different as well because the tabs on the bottom are slightly different between cherry and costar. This is really helpful, thanks...

Out of interest. The switch hole in this stabilizer cutout is 14mm instead of 13.97mm. I wonder if the 13.97 has just been propagated with copy and paste from the initial drawings (converted from standard measurements .55" instead of .551").

What do you think? Do you think it was intentional to use that size because of laser cutting kerf or do you think it is just a remnant of previous loss of precision that no one cared to change?

I have to draw all these cutouts manually because I am creating this from code, so I can't just copy and paste from other people's work. That being said, it is much easier to work with 14 instead of 13.97 for me since I am manually writing out all the vertices.

For example, your prefered switch cutout (supports both mx and alps), is a relatively simple cutout. If I use the numbers 14mm, 12.8mm and 15.6mm, it results in the following array.

It is a bit more of a pain and messy if I work with the 13.97mm number. I am trying to do this 'right' though, so I don't mind doing more work even if it is a pain if it is the best solution.

Once I get all of the components drawn, I am going to layout all of the components on one piece of material and see if I can find someone to cut it for me (and potentially test for me as well) so I can be sure that each of the components works as expected.

I went back over all the plates I have been drawing, and every one of them uses the 13.97mm dimension for the MX square. I don't know if that helps with the laser kerf, but I suspect it does.

Attached is a drawing of the stabilizer hole I use.

Thanks for that. I will use that as a guide. I am going to see how close it is to mine (other than the tabs on the top). I think that the tabs on the bottom are slightly different as well because the tabs on the bottom are slightly different between cherry and costar. This is really helpful, thanks...

Out of interest. The switch hole in this stabilizer cutout is 14mm instead of 13.97mm. I wonder if the 13.97 has just been propagated with copy and paste from the initial drawings (converted from standard measurements .55" instead of .551").

What do you think? Do you think it was intentional to use that size because of laser cutting kerf or do you think it is just a remnant of previous loss of precision that no one cared to change?

I have to draw all these cutouts manually because I am creating this from code, so I can't just copy and paste from other people's work. That being said, it is much easier to work with 14 instead of 13.97 for me since I am manually writing out all the vertices.

For example, your prefered switch cutout (supports both mx and alps), is a relatively simple cutout. If I use the numbers 14mm, 12.8mm and 15.6mm, it results in the following array.

It is a bit more of a pain and messy if I work with the 13.97mm number. I am trying to do this 'right' though, so I don't mind doing more work even if it is a pain if it is the best solution.

Once I get all of the components drawn, I am going to layout all of the components on one piece of material and see if I can find someone to cut it for me (and potentially test for me as well) so I can be sure that each of the components works as expected.

There is no need to work with 13.97mm. Stick with 14mm. When people get their plates made, if there is an issue they can specify they want the tolerance of the holes to be -.003 +0 or -.005 +0. I have made all of my plates and prototypes to cherry spec and they are fine.

I went back over all the plates I have been drawing, and every one of them uses the 13.97mm dimension for the MX square. I don't know if that helps with the laser kerf, but I suspect it does.

Attached is a drawing of the stabilizer hole I use.

Thanks for that. I will use that as a guide. I am going to see how close it is to mine (other than the tabs on the top). I think that the tabs on the bottom are slightly different as well because the tabs on the bottom are slightly different between cherry and costar. This is really helpful, thanks...

Out of interest. The switch hole in this stabilizer cutout is 14mm instead of 13.97mm. I wonder if the 13.97 has just been propagated with copy and paste from the initial drawings (converted from standard measurements .55" instead of .551").

What do you think? Do you think it was intentional to use that size because of laser cutting kerf or do you think it is just a remnant of previous loss of precision that no one cared to change?

I have to draw all these cutouts manually because I am creating this from code, so I can't just copy and paste from other people's work. That being said, it is much easier to work with 14 instead of 13.97 for me since I am manually writing out all the vertices.

For example, your prefered switch cutout (supports both mx and alps), is a relatively simple cutout. If I use the numbers 14mm, 12.8mm and 15.6mm, it results in the following array.

It is a bit more of a pain and messy if I work with the 13.97mm number. I am trying to do this 'right' though, so I don't mind doing more work even if it is a pain if it is the best solution.

Once I get all of the components drawn, I am going to layout all of the components on one piece of material and see if I can find someone to cut it for me (and potentially test for me as well) so I can be sure that each of the components works as expected.

There is no need to work with 13.97mm. Stick with 14mm. When people get their plates made, if there is an issue they can specify they want the tolerance of the holes to be -.003 +0 or -.005 +0. I have made all of my plates and prototypes to cherry spec and they are fine.

Plus when getting plates laser cut from stainless, there is enough texture from the cut itself that it REALLY grabs the hell out of the switch. I noticed this with the JD40. I can't speak for waterjet though. You don't see this on factory OEM plates due to the cost of doing that large of volume it is far cheaper to stamp/die cut all those holes and you end up with a smooth face on the edges of the switch hole so the size is a touch more critical.

I have to admit that it has been bugging the hell out of me that all of the different drawings have different dimensions. Yes, it is usually within about .15-.25mm, but for some reason my OCD just cant let it go. I have been reviewing the different specs as well as the different drawings I have available to me and I am trying to deduce why there is such a difference in the numbers. That is the main reason you have not seen progress in the last few days because I have been banging away at understanding why there is so much variance.

In general, it looks like a lot of the cutouts do something like move the cherry cutout .15mm +/- up (mostly) and then add the costar cutout to it. So far, I think the reason they do this is because there is extra space in the bottom tab by about .2mm that is outside the costar spec, so in order to get the tolerances closer to the costar spec, they slightly move the cherry spec up. I am kind of guessing here, but that is what it is looking like right now given my current calculations.

The reason I am spending so much time understanding this right now is because I will basically be using the same stabilizer layout for the spacebars and I only want to draw them once (or as few times as possible). :)

Anyway, slow but I am making progress. Once I get these drawn things will start to go quicker. Thats what I got for an update today... :P

you know this might be part of the reason I've always had huge issues with cherry PM stabilizers. They are all for custom plates and require a custom bent wire, where a slightly off length or bend radius can be the difference between it working and failing. An additional +-0.2mm tolerance level will further exacerbate the issue.

you know this might be part of the reason I've always had huge issues with cherry PM stabilizers. They are all for custom plates and require a custom bent wire, where a slightly off length or bend radius can be the difference between it working and failing. An additional +-0.2mm tolerance level will further exacerbate the issue.

Now that you mention it, I too have had issues with cherry PM stabs in custom plates. Something was rubbing somewhere that was causing the key to not reset correctly. I solved the problem by using a stab wire that had a slightly smaller than spec diameter and that fixed it for me. I could not figure out for the life of me what was rubbing. I will have to go back and see if it was the stab wire rubbing against the switch body. I have to admit I never even thought to check that when I was troubleshooting.

Thanks for jogging my memory. :)

Given my understanding of costar stabilizers, it probably would not be the end of the world if you moved it down 0.2mm since that would only ever affect the 'up' position and I doubt it would even be noticeable if it did make it touch somewhere. What do you guys think?

Plus when getting plates laser cut from stainless, there is enough texture from the cut itself that it REALLY grabs the hell out of the switch. I noticed this with the JD40. I can't speak for waterjet though. You don't see this on factory OEM plates due to the cost of doing that large of volume it is far cheaper to stamp/die cut all those holes and you end up with a smooth face on the edges of the switch hole so the size is a touch more critical.

JD himself said he specs his holes smaller so that is most likely what you are noticing with it "grabbing" more.

Plus when getting plates laser cut from stainless, there is enough texture from the cut itself that it REALLY grabs the hell out of the switch. I noticed this with the JD40. I can't speak for waterjet though. You don't see this on factory OEM plates due to the cost of doing that large of volume it is far cheaper to stamp/die cut all those holes and you end up with a smooth face on the edges of the switch hole so the size is a touch more critical.

JD himself said he specs his holes smaller so that is most likely what you are noticing with it "grabbing" more.

I am not sure that 3 hundredths of a MM is going to make a noticeable difference. I am pretty sure the cutting tolerance is bigger than that. Cherry spec is +/- 5 hundredths of a MM.

The laser cutting I have seen probably have the equivalent of teeth at least 1 tenth of a MM because the process does not leave a smooth surface.

Been kind of busy on other things recently, so I have not had much time to work on this. Tonight on the train home from work I revisited the u2 stabilizer drawings I was working on.

So basically every drawing that I have seen so far is different and I am not sure why that is. So tonight I basically tried to do exactly what the cherry spec says and then modified it slightly to be costar compatible.

From a cherry spec perspective is is pretty much 100% accurate. The differences are really only with the costar spec. Due to the positioning of the bottom tab on the cherry spec, the costar spec will either be too low or the opening will be too large. I am not sure the differences we are working with will make a difference, but here is what I have so far.

Costar spec says the stab holes should be 14mm long and they should start .75mm lower than the top of the switch opening. Right now mine are 14mm long and start .97mm lower than the top of the switch opening.

However, none of the other drawings actually meet the costar spec either. For example...- jdcarp's drawing has a 14.2mm long costar stabilizer opening and it is only .53mm lower than the top of the switch opening.- most of the drawings in the CAD Resource OP have a 13.97mm long costar stabilizer opening and it is .77mm from the top of the switch opening (however the cherry spec opening is shifted up about .15mm to .2mm).

Which opening do you feel is the one that should be closer to 'correct' according to spec? I am guessing that the cherry spec one is more important to be closer to the spec because I am concerned that the wire may rub on the switch housing if it is pushed up too much (I think I have experienced that, I still need to check).

I could split the difference. Make my opening 14.1mm long and add that .1mm to the top. The drawings in the OP of the CAD Resource only have a 1.14mm bottom tab (I currently have a 1.2mm bottom tab because that is what the cherry spec said to put). If I adjusted it to a 1.15mm tab I would have the following: A 14.1mm long stabilizer opening and it would be .82mm from the top of the switch opening. I think that basically gets us to within the tolerances on all the different dimensions... Thoughts???

And here are the dimensions of the cutout with the basic switch opening. This is basically exactly to the cherry spec with a slightly wider bottom tab (from 3.0mm to 3.3mm) to meet the costar spec and then a small bump on the top to meet the costar spec of 14mm long stab hole.

If you are doing it from scratch, I'd say going with your solution (Purely based on gut feeling), I used the drawings in the OP of my thread to create plates for my keyboards and have used Cherry PCB mount stabs without an issue, however acrylic laser cutting has a kerf of about 0.2mm for 3-5mm plates, so the differences that you pointed out would have been nullified.

Yeah, I'm with MOZ. If you drew it to Cherry spec from scratch, and then widened the hole slightly, and crew the little cutout on top to the Costar 14mm spec, then you should go with that. It's probably the best solution to be found.

Are there any official costar specs available? Or is everyone using this information as standard: http://deskthority.net/keyboards-f2/costar-stabilizer-plate-measurements-t5872.html.

If that diagram is correct. Then you can use those specs to extend the design to any stab positions. Basically, the costar stab slot is going to be 14mm tall, 3.3mm wide and 0.75mm below the top of the switch. The horizontal position can be found by aligning the horizontal center of the costar slot with those specified here:http://www.cherrycorp.com/english/switches/key/mx.htmhttp://deskthority.net/wiki/Space_bar_dimensions

Are there any official costar specs available? Or is everyone using this information as standard: http://deskthority.net/keyboards-f2/costar-stabilizer-plate-measurements-t5872.html.

If that diagram is correct. Then you can use those specs to extend the design to any stab positions. Basically, the costar stab slot is going to be 14mm tall, 3.3mm wide and 0.75mm below the top of the switch. The horizontal position can be found by aligning the horizontal center of the costar slot with those specified here:http://www.cherrycorp.com/english/switches/key/mx.htmhttp://deskthority.net/wiki/Space_bar_dimensions

Thank you. I was using the link you sent me as the costar spec for the 2u stabilizer. I was thinking that I would do exactly what you said for the other space bar compatibility. I am building the spacebar cutout so it is parameterized so I can just specify the centers for where the stabs should be and it will create the cutout. I think I have everything I need to finish the spacebar drawing (for symmetrical spacebars anyway). Thx...

Alright. I finally had a chance to automate the creation of all of the center stemmed space bars for my plate building tool. I will add functionality for the non-center stemmed space bars if there is demand, but I will start with these stabilizer options.

I have built 4 different 2 unit stabilizer cutouts, but I think I will default to the one which I have created from scratch. My 2 unit stabilizer is exactly to the cherry spec with a slight modification to the cutout in the center vertical axis of the stabilizers to support the costar stabilizer. I will obviously get a test plate cut before letting people go into major production with this tool to ensure all my cutouts work as well as I expect. My space bar cutouts are also exactly to cherry specs with the same modification as the 2 unit stabs for costar support.

Let me know if you have any feedback. I will begin working on the actual logic to build the plates now that I have all of the different types of key cutouts accounted for. Yes, I know I am missing ISO support. You will have to live with just ANSI for the first iteration...

I had a couple hours tonight, so I put together the basic parsing and layout logic based on the raw data provided by the keyboard-layout-editor.com site.

I had previously designed the following layout which I would like to build using Melvang's awesome Enabler PCBs (https://geekhack.org/index.php?topic=57511.msg1307749#msg1307749). I am currently calling this layout the 'swill60' since it is kind of my take on a 60% fixing all the things that I have trouble with in a true 60% (dedicated arrow keys and a dedicated `~ key) since I am a software developer. This whole project spawned from me wanting to build this plate, but I had no CAD skills and I did not want to bother anyone else with my problems.

Here is my swill60 layout (http://www.keyboard-layout-editor.com/#/layouts/091af7581f5647094c35386ccdf55d0d):(https://dl.dropboxusercontent.com/u/1392076/swillkb/swill60.png)Note: All of the keys in this layout are relatively common with the only ones that could be a bit tricky to get would be the two shift keys. I have seen many sets with those shift keys as options though, so I am not concerned about that.

The raw data for this layout is as follows (all generated by the online tool).

My current code takes the raw data above and generates the following plate cad drawings.

Standard square switch openings with the plate edge flush to the edge of the keycaps:(https://dl.dropboxusercontent.com/u/1392076/swillkb/swill60_proto_1.png)

Openable MX and Alps compatible switch openings with the plate protruding 5mm out on all sides for sandwich mounting:(https://dl.dropboxusercontent.com/u/1392076/swillkb/swill60_proto_2.png)

Openable MX switch openings with the plate protruding 5mm out on all sides for sandwich mounting:(https://dl.dropboxusercontent.com/u/1392076/swillkb/swill60_proto_3.png)

These 3 variations were created by simply changing the variable for which switch opening to use (currently 4 types supported) as well as the x and y plate padding. All of these options will be available in my web UI once I get that far. You will also notice that I already support x offsets in rows (notice the bottom row). I also support 4 different 2 unit stabilizer cutouts, but I may not expose them all as some of them will hopefully be deprecated by my latest drawings.

Current Limitations:- So far I only support layouts with caps that are 1 unit tall.- I am not adding mounting holes of any kind yet.

All in all, I am pretty pleased with the progress so far. This first prototype of the code proves to me that the idea is sound and is workable. Supporting variable height/shaped keys will likely be a bit challenging, so that will probably wait for a little while (sorry ISO users).

Just wondering but what sort of user agreement would you have as far as making profit using your tool?

Not that I personally am worried about it but it is a thought that very well could come up in the future.

Also, do you have plans for the additional layers for a sandwich style case planned in the future?

That is a good question. To be quite honest, I was just planning to open source it and let people use it without restrictions. In this type of community there is often a fine line between profitable or not, so I don't want to have a user agreement in place that will tip that balance in the wrong direction. That is a really hard question and to be honest I have not really thought about it. What I would probably do is put a 'donate' button up on the site with the tool. I would ask that if people are using the tool for commercial reasons they consider donating.

Its funny because everyone who I have talked to about this project (outside of the keyboard community) have asked me right away, "how do you plan to monetize it". I probably should have expected this to be asked. :) The reality though is that I am doing this mainly as a community service. This community is full of builders and tinkerers who have good ideas. I like to do what I can to enable builders because we all benefit from their ideas and hard work. The main purpose of the tool is to lower the bar for builders to prototype and progress their ideas without having to learn/master CAD.

Do you (or anyone really) have any suggestions on this topic? Is there any sort of commonly accepted approach for this sort of thing that seems to work pretty well? Something like Creative Commons comes to mind, but I have only ever seen that associated to art and photography and such.

As for additional layers. Yes, I thought about that tonight. I will tackle that when I automate the placement of the sandwich screw holes. It will be super easy to do, so yes you can expect that. It is probably 5-10 lines of code to add that support (once the screw hole placement code is in place).

Just wondering but what sort of user agreement would you have as far as making profit using your tool?

Not that I personally am worried about it but it is a thought that very well could come up in the future.

Also, do you have plans for the additional layers for a sandwich style case planned in the future?

That is a good question. To be quite honest, I was just planning to open source it and let people use it without restrictions. In this type of community there is often a fine line between profitable or not, so I don't want to have a user agreement in place that will tip that balance in the wrong direction. That is a really hard question and to be honest I have not really thought about it. What I would probably do is put a 'donate' button up on the site with the tool. I would ask that if people are using the tool for commercial reasons they consider donating.

Its funny because everyone who I have talked to about this project (outside of the keyboard community) have asked me right away, "how do you plan to monetize it". I probably should have expected this to be asked. :) The reality though is that I am doing this mainly as a community service. This community is full of builders and tinkerers who have good ideas. I like to do what I can to enable builders because we all benefit from their ideas and hard work. The main purpose of the tool is to lower the bar for builders to prototype and progress their ideas without having to learn/master CAD.

Do you (or anyone really) have any suggestions on this topic? Is there any sort of commonly accepted approach for this sort of thing that seems to work pretty well? Something like Creative Commons comes to mind, but I have only ever seen that associated to art and photography and such.

As for additional layers. Yes, I thought about that tonight. I will tackle that when I automate the placement of the sandwich screw holes. It will be super easy to do, so yes you can expect that. It is probably 5-10 lines of code to add that support (once the screw hole placement code is in place).

I hope you didn't think I was sounding to materialistic. But I am just seeing this as a potential issue for the future. Say Bigbluesaw.com sees this and wants to imbed the source into their website. BAM they would be makin a killing off of us. Or any shop with a laser or waterjet for that matter.

i think I would suggest looking up the technical differences between the different open source license options. The differences between what you can and can't do varies quite a bit.

I recommend CC-BY or CC-BY-NC[-ND] if you're really paranoid about people making money off you.

"how do you plan to monetize it". If you need more money there are better ways to get it and you can use this as an example of your skills. If people see that and give you a raise / new job then it'll be like money to you. CC-BY also ensures your name gets out there which is always a bonus.

"how do you plan to monetize it"? I hate that question, every time I build something, others around me ask this question, be it a module for an existing web solution like XenForo or a keyboard related hobby. Can't a person just do something out of interest without any monetary benefit in mind.

Sorry for the rant. The tool looks great. Perhaps an option to have round corners and specify radius.

I hope you didn't think I was sounding to materialistic. But I am just seeing this as a potential issue for the future. Say Bigbluesaw.com sees this and wants to imbed the source into their website. BAM they would be makin a killing off of us. Or any shop with a laser or waterjet for that matter.

i think I would suggest looking up the technical differences between the different open source license options. The differences between what you can and can't do varies quite a bit.

Not at all. I really appreciate you asking the question and raising it as a concern. You have a very good point that my good intentions could be abused if we don't put a little thought into protecting our intellectual property. I still want to open source the code and I want people in the community to be able to use it or contribute without feeling hampered by a license, but I also don't want our work to be abused by others...

I recommend CC-BY or CC-BY-NC[-ND] if you're really paranoid about people making money off you.

"how do you plan to monetize it". If you need more money there are better ways to get it and you can use this as an example of your skills. If people see that and give you a raise / new job then it'll be like money to you. CC-BY also ensures your name gets out there which is always a bonus.

"how do you plan to monetize it"? I hate that question, every time I build something, others around me ask this question, be it a module for an existing web solution like XenForo or a keyboard related hobby. Can't a person just do something out of interest without any monetary benefit in mind.

Sorry for the rant. The tool looks great. Perhaps an option to have round corners and specify radius.

I completely agree with your sentiments. If you want to monetize it that is fine but take it to the full masses rather than just keep it bottled up here in the community. I just hate when I explain something that I am working on and the first thing people ask me is how much money I am going to make off it.

I hope you didn't think I was sounding to materialistic. But I am just seeing this as a potential issue for the future. Say Bigbluesaw.com sees this and wants to imbed the source into their website. BAM they would be makin a killing off of us. Or any shop with a laser or waterjet for that matter.

i think I would suggest looking up the technical differences between the different open source license options. The differences between what you can and can't do varies quite a bit.

Not at all. I really appreciate you asking the question and raising it as a concern. You have a very good point that my good intentions could be abused if we don't put a little thought into protecting our intellectual property. I still want to open source the code and I want people in the community to be able to use it or contribute without feeling hampered by a license, but I also don't want our work to be abused by others...

Excellent we are at least on the same page here. I just don't know enough about the details of open source licences to know which to apply.

"how do you plan to monetize it"? I hate that question, every time I build something, others around me ask this question, be it a module for an existing web solution like XenForo or a keyboard related hobby. Can't a person just do something out of interest without any monetary benefit in mind.

Sorry for the rant. The tool looks great. Perhaps an option to have round corners and specify radius.

Haha... Don't apologize for that. :) That was hardly a rant at all. I know where you are coming from though. Everyone seems to be so obsessed with squeezing every ounce of profitability out of every idea. What happened to the sense of community and doing things for the greater good? My own little rant; I grew up in a very challenging environment where everyone had to pitch in and look out for the needs of the people around them just so everyone survived. That whole concepts seems to be lost on society nowadays. It makes me sad. There is nothing more rewarding than helping someone who needs help without expecting anything in return.

Back on topic. Yes, I like the idea of adding rounded corners and letting the user specify the radius. I will work on that when I do the sandwich mount holes. I have to admit that I don't actually know how to code that yet. It is easy for me to do straight lines between points because I can just use the polyline concept, but I have not tried to do any sort of arc yet. I will have to learn how to code arcs to add that.

For example, this is how I draw the switch cutout for the MX + Alps compatible switch type:

I will research that on the train on my way home tonight. It makes sense that I give a full solution for the sandwich case before moving on to other features since that makes it actually usable for people and it is the simplest to build for me. Once I start trying to support different case mount holes, things are going to get a lot more tricky, so it will be nice if I have a working tool for prototypers before I try to solve that bigger problem.

BTW, pretty much all of my cutouts are my own design because I was trying to improve on existing designs as I built them because I had to draw them from scratch anyway. I need to get a plate cut with all of the different components on it so I can test to make sure that all of my switch and stabilizer cutouts work as well as I am hoping. Should I just try to find a local laser or plasma shop for this? Do you guys have any suggestions for how I should approach this? I have never done that before...

p = Plate() # init the plate we will be working on.p.set_x_pad(5) # pad the left and right of the plate with an extra 5mm of space beyond the keycaps.p.set_y_pad(5) # pad the top and bottom of the plate with an extra 5mm of space beyond the keycaps.p.set_fillet(5) # round the corners of the plate with a 5mm radius.p.draw(input_str) # draw the plate based on the input

Would you be able to just generate a top casing based on negative space that the caps won't occupy?

Sorry, I don't think I understood your question. Can you give me a bit more detail on what you are looking for?

By taking the space in between the switches, that is if there is any (like say on a TLK above where the arrow keys are), would you be able to use those dimensions to cut out a top casing?This would basically be the top part of a case that shrouds the switches which you would see most commonly used elsewhere.

Would you be able to just generate a top casing based on negative space that the caps won't occupy?

Sorry, I don't think I understood your question. Can you give me a bit more detail on what you are looking for?

By taking the space in between the switches, that is if there is any (like say on a TLK above where the arrow keys are), would you be able to use those dimensions to cut out a top casing?This would basically be the top part of a case that shrouds the switches which you would see most commonly used elsewhere.

Oh. I now understand what you are asking. Yes, I should be able to do that without too much issue. Thanks for clarifying. :)

The only thing that I think I would not be able to offer (natively based on the data I have) is the ability to cut out a controller area if you needed a controller cutout in the plate and then put a layer (like you just described) over it. I don't have any details about controller sizing for a cutout in the layout. I basically support hand wired controllers or controllers that live on the bottom of the PCB. Make sense?

Do you know how you will code the mount holes for the sandwitch layer? I have an idea, but I'm on my phone, once I am on my system, I'll lay it out.

Please offer suggestions. I am working some algorithms out in my head, but I have not put anything down on paper yet.

I would like to give control of:- size of hole- number of holes

My assumptions: - minimum of 4 holes which will go in the corners- the holes will be centered in the x and y padding (which is already configurable)

First shot at writing down an algorithm.

First 4 holes are located in the corners. The remaining holes are placed evenly(?) around the board. This will consider the ratio of board length to width as well as total perimeter length needing to be secured. I need to sit down with some paper and a pencil to hash out the details of how this algorithm is going to work exactly, but that is the idea.

What is the ideal way to get plates cut? I think laser or plasma cutting is common (given what I have seen). What precision can they offer with aluminum or steel? I know there can be some issues with warping and such due to the heat in processing.

What about water jet? Is it precise enough?

What other options are there. CNC has I set of challenges I can not currently handle. I will let nudecnc sort out the details there.

What is the ideal way to get plates cut? I think laser or plasma cutting is common (given what I have seen). What precision can they offer with aluminum or steel? I know there can be some issues with warping and such due to the heat in processing.

What about water jet? Is it precise enough?

What other options are there. CNC has I set of challenges I can not currently handle. I will let nudecnc sort out the details there.

Other ideas?

Laser and water jet are the most common with laser being more common here from what I have seen probably due to being more popular equipment.

Would you be able to just generate a top casing based on negative space that the caps won't occupy?

Sorry, I don't think I understood your question. Can you give me a bit more detail on what you are looking for?

By taking the space in between the switches, that is if there is any (like say on a TLK above where the arrow keys are), would you be able to use those dimensions to cut out a top casing?This would basically be the top part of a case that shrouds the switches which you would see most commonly used elsewhere.

Oh. I now understand what you are asking. Yes, I should be able to do that without too much issue. Thanks for clarifying. :)

The only thing that I think I would not be able to offer (natively based on the data I have) is the ability to cut out a controller area if you needed a controller cutout in the plate and then put a layer (like you just described) over it. I don't have any details about controller sizing for a cutout in the layout. I basically support hand wired controllers or controllers that live on the bottom of the PCB. Make sense?

That's cool. I honestly think bottom mounted controllers would be more relevant for hand wiring anyway.

What is the ideal way to get plates cut? I think laser or plasma cutting is common (given what I have seen). What precision can they offer with aluminum or steel? I know there can be some issues with warping and such due to the heat in processing.

What about water jet? Is it precise enough?

What other options are there. CNC has I set of challenges I can not currently handle. I will let nudecnc sort out the details there.

Other ideas?

Laser and water jet are the most common with laser being more common here from what I have seen probably due to being more popular equipment.

Mkawa could give you a better answer on tolerances as he has had a lot more dealings with fab shops in that regard. The one shop I was talking to quoted me at .005" in 16ga stainless. For waterjet I am not sure what they can hit for tolerances. I do know that laser has a smaller kerf in general than wj. Laser is more expensive per hour on machine time but cuts much faster than wj.

Nothing exciting got done on the actual tool today, but I was able to build an algorithm for determining the number of holes which should be placed on each side of the plate based on the ratio of height (y) and width (x) of the plate. If x and y are equal and the the number of holes is not divisible by 4, the x side will get the extra hole.

I am sure there is an easier and more concise way to write this logic, but for some reason I could not get my head around it. So this code basically solves the problem by looping through the holes that need to be placed and it determines if the hole should be placed on the x or y side. keep in mind that there are actually two x and two y sides. Also keep in mind that the first 4 holes are always placed in the corners.

Once we know the number of holes we are putting on each side, it is very easy to space them evenly, so that logic is not present in this code.

if __name__ == "__main__":holes = int(args['--holes'])if holes % 2 == 0 and holes >= 4: # holes needs to be even and the first 4 are put in the cornersx = float(args['--x']) # x lengthy = float(args['--y']) # y length_x = 0 # number of holes on each x side (not counting the corner holes)_y = 0 # number of holes on each y side (not counting the corner holes)free = (holes-4)/2 # number of free holes to be placed on either x or y sidesfor f in range(free): # loop through the available holes and place themif x/(_x+1) == y/(_y+1): # if equal, add the hole to the longer sideif x >= y: # if x and y are equal, add the extra hole to the x side_x += 1else:_y += 1elif x/(_x+1) > y/(_y+1):_x += 1else:_y += 1print("%s holes on 'x' over %smm" % (_x, x))print("%s holes on 'y' over %smm" % (_y, y))print("plus one hole in each corner\n")else:print("'--holes' needs to be an even number greater than or equal to 4")

Mkawa could give you a better answer on tolerances as he has had a lot more dealings with fab shops in that regard. The one shop I was talking to quoted me at .005" in 16ga stainless. For waterjet I am not sure what they can hit for tolerances. I do know that laser has a smaller kerf in general than wj. Laser is more expensive per hour on machine time but cuts much faster than wj.

depends on the shop of course, but IIRC the only issue with WC is finding a place taht has one with tight enough tolerances. You need relatively good to get cherry switches to fit which is why most are lasered.

Quote

# input is still manually copied from keyboard-layout-editor.com...

TBH I am okay with that, It's not that hard to do and half the time I manually input into "raw data" anyway. much faster. I have no problem copypasta-ing a layout from there into your tool and pressing the :go: button.

But I'm more worried about the result. THe 5 seconds of extra time investiture it'll take for me to copypaste is nothing compared with the time it'd take to build a plate layout on my own.

Mkawa could give you a better answer on tolerances as he has had a lot more dealings with fab shops in that regard. The one shop I was talking to quoted me at .005" in 16ga stainless. For waterjet I am not sure what they can hit for tolerances. I do know that laser has a smaller kerf in general than wj. Laser is more expensive per hour on machine time but cuts much faster than wj.

depends on the shop of course, but IIRC the only issue with WC is finding a place taht has one with tight enough tolerances. You need relatively good to get cherry switches to fit which is why most are lasered.

Quote

# input is still manually copied from keyboard-layout-editor.com...

TBH I am okay with that, It's not that hard to do and half the time I manually input into "raw data" anyway. much faster. I have no problem copypasta-ing a layout from there into your tool and pressing the :go: button.

But I'm more worried about the result. THe 5 seconds of extra time investiture it'll take for me to copypaste is nothing compared with the time it'd take to build a plate layout on my own.

Re: Waterjet vs Laser cutting; I am looking at my options here in montreal and I will get quotes from a couple shops to see what I can get done. Thanks for the answer... :)

Re: Copy and Paste; That is simply because I have not gotten around to supporting the permalink url yet. I plan to offer both options, but I have to start somewhere. I am focusing on shortest path to something useful. Once I have that and have tested all of my switch cutouts, it will be a legitimate tool that people can start using. I will then start to work on some of the more edge cases, nice to have or harder features.

I now officially support the sandwich case holes in the plate. I still have not started working on building the other layers of the sandwich case, but I may do that next as it is pretty relevant to this addition.

This first render is using 6mm of space around the board outside the caps with a 3mm fillet on the corners. It has 14 holes that are 2mm in diameter. Each hole is about 5cm apart.(https://dl.dropboxusercontent.com/u/1392076/swillkb/swill60_holes_1.png)

This second render is more of the 'bomb proof' version. In this render I have 8mm of space outside the keycaps all the way around the board with a 4mm fillet on the corners. I am using 30 holes that are 3mm in diameter and about 2.5cm apart.(https://dl.dropboxusercontent.com/u/1392076/swillkb/swill60_holes_2.png)

Here is the code to generate the second render to give you an idea how this is being configured...

p = Plate() # init the platep.set_x_pad(8) # 8mm of extra space on the top and bottomp.set_y_pad(8) # 8mm of extra space on the left and rightp.set_fillet(4) # 4mm fillet on the corners of the platep.set_case_holes(30, 3) # draw 30 holes with a 3mm diameterp.draw(input_str) # do magic!!! :)

Starting to feel like we are getting there. I still need to finish the other layers of the case to let people build a whole case with the tool. That was not my original goal, but it makes total sense to do it, so why not... Once I do that, the next big hurdle for this to be 'game ready' is adding support for vertical keys (as well as stabilizing them). If we are lucky I will get there by new years... :) Oh and I need to get a sample plate cut so I can verify all my cutouts work as expected...

Cool, thanks... On my laptop I have dedicated 2 cores and 4GB of ram to the system running this and it is taking about 2 minutes to build that relatively simple layout. I am spinning up a new machine in our cloud which has 4 cores and 16GB of ram to start running my code on that. Hopefully that will reduce the build time to something closer to a minute. I think people won't mind waiting for a minute or two to get everything drawn for them. :P Doesn't mean I don't want to try to speed it up though...

Cool, thanks... On my laptop I have dedicated 2 cores and 4GB of ram to the system running this and it is taking about 2 minutes to build that relatively simple layout. I am spinning up a new machine in our cloud which has 4 cores and 16GB of ram to start running my code on that. Hopefully that will reduce the build time to something closer to a minute. I think people won't mind waiting for a minute or two to get everything drawn for them. :P Doesn't mean I don't want to try to speed it up though...

Any chance there would be a possibility for a downloadable app? Granted it would probably need to support 3 major OS's. Just curious.

Cool, thanks... On my laptop I have dedicated 2 cores and 4GB of ram to the system running this and it is taking about 2 minutes to build that relatively simple layout. I am spinning up a new machine in our cloud which has 4 cores and 16GB of ram to start running my code on that. Hopefully that will reduce the build time to something closer to a minute. I think people won't mind waiting for a minute or two to get everything drawn for them. :P Doesn't mean I don't want to try to speed it up though...

Any chance there would be a possibility for a downloadable app? Granted it would probably need to support 3 major OS's. Just curious.

Not likely since FreeCAD is a dependency and it is a total PITA to setup and get working. I am actually installing this on a server right now so once it is setup and working correctly I can just snapshot the VM and not have to deal with the setup again if I have to move the box or give it more resources.

I am working on exposing the controls through a web UI right now which will allow you to download the resulting cad files that are created. Basically you will specify your layout (or a enter the permalink to the keyboard-layout-editor.com layout) and set a bunch of things like type of switch, mount holes, padding, etc, etc, and then you will hit a button something like 'draw cad' and it will process for a couple minutes and it will give you links to download the cad files as well as show you a preview of the cad. The preview is because I expect that you may realize once it is generated that you might want different size padding or that sort of thing and instead of making you enter everything again, you can just tweak the settings and regenerate and it will then show you the result as well as give you the download links for the updated run. Thats the idea anyway...

Cool, thanks... On my laptop I have dedicated 2 cores and 4GB of ram to the system running this and it is taking about 2 minutes

Is it multithreaded? .. and is it actually using that much RAM?

No it is currently not multithreaded. Right now I am just making it work. I am giving it a lot of resources because I have not profiled it or anything yet so I am just throwing resources at it right now to see if it speeds things up. I work at a cloud computing company, so I have lots of resources at my fingertips for free, so I have the luxury of being able to do that. :) Once I get the functionality in place I will start to worry about performance and such. For now I just want to focus on shortest path to something useful...

No it is currently not multithreaded. Right now I am just making it work. I am giving it a lot of resources because I have not profiled it or anything yet so I am just throwing resources at it right now to see if it speeds things up.

Cool, thanks... On my laptop I have dedicated 2 cores and 4GB of ram to the system running this and it is taking about 2 minutes to build that relatively simple layout. I am spinning up a new machine in our cloud which has 4 cores and 16GB of ram to start running my code on that. Hopefully that will reduce the build time to something closer to a minute. I think people won't mind waiting for a minute or two to get everything drawn for them. :P Doesn't mean I don't want to try to speed it up though...

Any chance there would be a possibility for a downloadable app? Granted it would probably need to support 3 major OS's. Just curious.

Not likely since FreeCAD is a dependency and it is a total PITA to setup and get working. I am actually installing this on a server right now so once it is setup and working correctly I can just snapshot the VM and not have to deal with the setup again if I have to move the box or give it more resources.

I am working on exposing the controls through a web UI right now which will allow you to download the resulting cad files that are created. Basically you will specify your layout (or a enter the permalink to the keyboard-layout-editor.com layout) and set a bunch of things like type of switch, mount holes, padding, etc, etc, and then you will hit a button something like 'draw cad' and it will process for a couple minutes and it will give you links to download the cad files as well as show you a preview of the cad. The preview is because I expect that you may realize once it is generated that you might want different size padding or that sort of thing and instead of making you enter everything again, you can just tweak the settings and regenerate and it will then show you the result as well as give you the download links for the updated run. Thats the idea anyway...

Cool, thanks... On my laptop I have dedicated 2 cores and 4GB of ram to the system running this and it is taking about 2 minutes to build that relatively simple layout. I am spinning up a new machine in our cloud which has 4 cores and 16GB of ram to start running my code on that. Hopefully that will reduce the build time to something closer to a minute. I think people won't mind waiting for a minute or two to get everything drawn for them. :P Doesn't mean I don't want to try to speed it up though...

Any chance there would be a possibility for a downloadable app? Granted it would probably need to support 3 major OS's. Just curious.

Not likely since FreeCAD is a dependency and it is a total PITA to setup and get working. I am actually installing this on a server right now so once it is setup and working correctly I can just snapshot the VM and not have to deal with the setup again if I have to move the box or give it more resources.

I am working on exposing the controls through a web UI right now which will allow you to download the resulting cad files that are created. Basically you will specify your layout (or a enter the permalink to the keyboard-layout-editor.com layout) and set a bunch of things like type of switch, mount holes, padding, etc, etc, and then you will hit a button something like 'draw cad' and it will process for a couple minutes and it will give you links to download the cad files as well as show you a preview of the cad. The preview is because I expect that you may realize once it is generated that you might want different size padding or that sort of thing and instead of making you enter everything again, you can just tweak the settings and regenerate and it will then show you the result as well as give you the download links for the updated run. Thats the idea anyway...

Have you looked at generating .dxf or other types directly?

Yes, the tool currently exports into the following 3 formats; SVG, DFX and DWG. I posted some example exports about 7-10 posts ago. I also listed other export formats which are 'theoretically' possible. Let me know if there are others in that list that you think would be valuable to export.

Cool, thanks... On my laptop I have dedicated 2 cores and 4GB of ram to the system running this and it is taking about 2 minutes to build that relatively simple layout. I am spinning up a new machine in our cloud which has 4 cores and 16GB of ram to start running my code on that. Hopefully that will reduce the build time to something closer to a minute. I think people won't mind waiting for a minute or two to get everything drawn for them. :P Doesn't mean I don't want to try to speed it up though...

Any chance there would be a possibility for a downloadable app? Granted it would probably need to support 3 major OS's. Just curious.

Not likely since FreeCAD is a dependency and it is a total PITA to setup and get working. I am actually installing this on a server right now so once it is setup and working correctly I can just snapshot the VM and not have to deal with the setup again if I have to move the box or give it more resources.

I am working on exposing the controls through a web UI right now which will allow you to download the resulting cad files that are created. Basically you will specify your layout (or a enter the permalink to the keyboard-layout-editor.com layout) and set a bunch of things like type of switch, mount holes, padding, etc, etc, and then you will hit a button something like 'draw cad' and it will process for a couple minutes and it will give you links to download the cad files as well as show you a preview of the cad. The preview is because I expect that you may realize once it is generated that you might want different size padding or that sort of thing and instead of making you enter everything again, you can just tweak the settings and regenerate and it will then show you the result as well as give you the download links for the updated run. Thats the idea anyway...

Have you looked at generating .dxf or other types directly?

Yes, the tool currently exports into the following 3 formats; SVG, DFX and DWG. I posted some example exports about 7-10 posts ago. I also listed other export formats which are 'theoretically' possible. Let me know if there are others in that list that you think would be valuable to export.

Cool, thanks... On my laptop I have dedicated 2 cores and 4GB of ram to the system running this and it is taking about 2 minutes to build that relatively simple layout. I am spinning up a new machine in our cloud which has 4 cores and 16GB of ram to start running my code on that. Hopefully that will reduce the build time to something closer to a minute. I think people won't mind waiting for a minute or two to get everything drawn for them. Doesn't mean I don't want to try to speed it up though...

Any chance there would be a possibility for a downloadable app? Granted it would probably need to support 3 major OS's. Just curious.

Not likely since FreeCAD is a dependency and it is a total PITA to setup and get working. I am actually installing this on a server right now so once it is setup and working correctly I can just snapshot the VM and not have to deal with the setup again if I have to move the box or give it more resources.

I am working on exposing the controls through a web UI right now which will allow you to download the resulting cad files that are created. Basically you will specify your layout (or a enter the permalink to the keyboard-layout-editor.com layout) and set a bunch of things like type of switch, mount holes, padding, etc, etc, and then you will hit a button something like 'draw cad' and it will process for a couple minutes and it will give you links to download the cad files as well as show you a preview of the cad. The preview is because I expect that you may realize once it is generated that you might want different size padding or that sort of thing and instead of making you enter everything again, you can just tweak the settings and regenerate and it will then show you the result as well as give you the download links for the updated run. Thats the idea anyway...

Have you looked at generating .dxf or other types directly?

Yes, the tool currently exports into the following 3 formats; SVG, DFX and DWG. I posted some example exports about 7-10 posts ago. I also listed other export formats which are 'theoretically' possible. Let me know if there are others in that list that you think would be valuable to export.

Sorry, I meant generating dxf without going via FreeCAD.

How? I am using the fact that freecad is built on python and has an accessible API which I can code against. Everything about this tool is automated. Basically it can parse any layout (in theory, not finished) and build the corresponding cad file(s). How else would I do this? Do you know of other options for programmatically building cad that may be better?

How? I am using the fact that freecad is built on python and has an accessible API which I can code against. Everything about this tool is automated. Basically it can parse any layout (in theory, not finished) and build the corresponding cad file(s). How else would I do this? Do you know of other options for programmatically building cad that may be better?

I haven't looked, but I was assuming there might be sosom Python libraries for generating dxf.

I think you can generate SVG files much like html files, by printing the drawing out to a file on the server and then allowing the user to download it.

Yes. SVG is easier to generate. DXF and DWG are harder because you need special libs to export them.

Last night I spent like 3-4 hours on the exporting stuff and I am still not where I want to be. The export depended on the UI libs in freecad in my old env, but now that I am running this on a server I don't have that UI env. I will sort it out, but it is being a pita. I may have to export to svg and then convert the file to dfx and dwg. We will see...

DWG is such an ugly beast. Its alive. It mutates constantly. The Open Design Alliance (http://www.opendesign.com/) intended to create a library to give "open" access to read and create DWG files (now called Teigha)...but somewhere along the line "open" became "for members" and the cheapest membership is $250 to join and $100 a year. There are a few other libraries of decent quality, but non are free...that I know of.

DWG is such an ugly beast. Its alive. It mutates constantly. The Open Design Alliance (http://www.opendesign.com/) intended to create a library to give "open" access to read and create DWG files (now called Teigha)...but somewhere along the line "open" became "for members" and the cheapest membership is $250 to join and $100 a year. There are a few other libraries of decent quality, but non are free...that I know of.

Interesting, thanks for the info. I am actually using some teigha libs which integrate into freecad. Apparently freecad has some not-so-pythonic practices going on though because I have to have the GUI installed to use those libs (even though everything is supposed to be able to be run through the core interpreter).

Unfortunately I have spent like 6-8 hours working on getting things to work (aka - export) again since I moved the code to my server and off my Ubuntu VM (with xorg). I will spend a few more hours trying to make it work natively, after that I will explore exporting to something like STEP and then converting to the other types with another tool.

Anyone know what formats are good 'transitional' formats which are good for converting to other formats? I know that STL is a lossy format, so that is out right away. I am pretty sure that I can easily export to STEP or BREP, but I don't know cad formats that well. I am totally a CAD noob (which is probably why I am building this tool since I am more comfortable in code and the command line). :). I'm learning slowly.

Thanks to everyone who has been active in this process, your feedback and thoughts are really appreciated.

Just for reference but for the padding, what does it measure from? Would it be possible to allow just to be able to enter edge to edge dimensions and just have the tool center the stuff inside those dimensions? The reason I ask is I want to make a plate and stuff for the wifes GH36 and it will be very easy for me to get the outside dimensions and not have to do maths to figure "padding".

Just for reference but for the padding, what does it measure from? Would it be possible to allow just to be able to enter edge to edge dimensions and just have the tool center the stuff inside those dimensions? The reason I ask is I want to make a plate and stuff for the wifes GH36 and it will be very easy for me to get the outside dimensions and not have to do maths to figure "padding".

After I get the first iteration built where you can specify a padding and have mount holes for the sandwich case drilled in that space, I will then start working on exactly what you just specified. I am going to have to do this anyway because I want to support existing cases. In order to support existing cases, I have to work within the dimensions of those cases and their mount holes. That is very much on my radar and is something I will have to tackle soon, but I have not gotten around to it yet. Hopefully I can really progress this software over the holidays, we will see...

I should call the local laser shops tomorrow and see what my lead time and cost will be for getting a simple plate cut with all my different cutouts on it so I can validate that all my cutouts work before I release this into the wild. I wanted to get everything drawn for my first case so I could get it cut at the same time (hoping everything works as expected) because it will bring down the cost if I get it cut at the same time. I think I will probably target the first week or so of january for getting prototypes cut (since I don't think its realistic to get stuff done before then due to the holidays). Hopefully I can be at the point where I can implement what you are looking for and test it on a 60% plate when I get the prototypes cut so I can validate it against another hammer plate I have here...

I was hoping to be a bit farther along to be honest, I had a really good run there for a bit, but now I have been stalled for a few days on the export stuff now that I moved from a desktop ubuntu setup to a server ubuntu setup. Apparently the SVG, DWG and DFX export libraries depend on global variables that are set in the GUI runtime (which is ****ing retarded), so they do not work now that I have moved to my server. I have successfully gotten the BREP and IGES formats to export from the server environment, so I may be getting closer to getting out of the woods. I am learning all this CAD stuff, but the BREP format seems to be relatively promising based on how it builds the objects. I still have not checked to see if there is an easy way to convert a BREP file to an SVG, DFX or DWG yet...

I am slowly hashing my way through this crap. I apologize for being a bit slow to get something out that you guys can play with. Getting this working on my server is the first step because then it is a much smaller step to get something served over HTTP for you guys to start messing with. I need exporting to be working in a way I am happy with first though...

Just for reference but for the padding, what does it measure from? Would it be possible to allow just to be able to enter edge to edge dimensions and just have the tool center the stuff inside those dimensions? The reason I ask is I want to make a plate and stuff for the wifes GH36 and it will be very easy for me to get the outside dimensions and not have to do maths to figure "padding".

I just realized that I did not answer your question. I calculate each switch as being 19.05mm square. Obviously, the switch hole itself is only 14mm square, so it is centered in that 19.05mm space. I am using the 19.05mm size as the edges of my plate if there is zero padding. This means that there is about 2.5mm of space between the switch opening and the edge of the plate when you select zero padding (obviously changes a bit depending on the switch opening you select since the ability to open the switch eats into that space). Make sense?

I just checked a couple keycaps with a caliper. An SA cap is 18.3mm square and a GMK cap is 18.2mm square, so they are pretty consistent. So with a padding of zero, the edge of the plate will be about 0.35mm outside of the edge of the keycap. So just looking at my board here, it looks like the edge will be pretty much in line with the edge of the angle produced by an SA keycap. Not sure if any of that is helpful for you...

In my reading, it appears that the STEP format does not allow for the drawing to be edited since it does not have the tree of changes (or something along those lines). I want to make sure that whatever format I export into it can be edited by someone in a standard CAD program in case they want to tweak things in the design (if I don't support 100% of what they want). What formats should I be looking at?

Theoretically FreeCAD supports the following formats, however the following modules do not seem to work from the command line without the GUI; importDXF, FreeCADGui, importSVG. I have not tested many, but I know that all of the 'Part' formats export fine...

Edit: So I have been doing a bunch of testing tonight. I have been able to export using the following modules: Mesh, Part. I have been able to export the following formats (so far, I expect all the Mesh types to work): BRP (BREP), IGS (IGES), SCAD, STL, STP (STEP) I am starting to feel like I am getting somewhere. Hopefully one of these formats will be easy to convert to an SVG and the other formats I am not able to export natively...

So I have been battling with the different export formats and different ways to present the plates on the screen once the export is completed.

I have had some good success with the Threejs javascript library and have been able to export into a json format which gives a nice visual representation of the plate in the UI. Here are some screenshots to give you an idea. This is a perspective view, so you can see that the plate is 3D. You can rotate the plate and move it around as well as zoom all in the browser. I think this is a nice visualization for the generated plate and it seems to work pretty well.

[attachimg=1]

[attachimg=2]

[attachimg=3]

On the other hand, the export formats have been a total PITA. I have been able successfully export into a bunch of formats which work well in cad, however, they do not export with all of the components which make up the drawing, so they are not editable once they are imported into the cad software. If my tool works perfectly and the result is exactly what the end user wants, then fine, we dont have a problem. I suspect though that some people will use my tool as a starting point and they may want to make small modifications to the drawing after. If this is the case none of these formats will work. With all of these 'drawing as one object' formats, I have had pretty good success with the BREP or BRP format. It has been rock solid for me and seems to be a pretty standard format, so I will probably offer that format regardless. It exports quickly, it shows all the segments and anchor points even if they are not split out into their own tree, so it seems to be a pretty nice format to work with.

Here is a BRP format cad file which is pretty solid.

[attachimg=5]

And here is an example measurement in on this BRP model. All the anchor points and such work, so it is very easy to do measurements and that sort of thing...

[attachimg=6]

Luckily since FreeCAD and it supporting libraries are open source I have been able to have a poke through their code and have been able to 'fix' the issues with the SVG export and the DXF export for the most part. Neither of them are working as well as I would like unfortunately. The SVG will only import as a drawing instead of a geometry, so it is pretty useless in my opinion.

The DXF format imports correctly as a cad file, but for some reason it messes up "some" of the fillets. WTF? Why would it mess up some and not others? If I just export the drawing from the FreeCAD UI and reimport it does the same thing, so something is messed up with the import/export functionality for this library. So close... :( Even still, it only imports as a final drawing, not with the tree of the different components that make up the drawing, so that is annoying...

[attachimg=4]

So long story short. I have not forgotten about this project, actually, I have spent WAY too much time on it recently. The exporting stuff is pretty frustrating if I am honest. I will probably just say 'enough with it' for now and just offer the BRP drawings to start with and we will go from there. I need to change the air a bit or I will get too frustrated with the project and that will not help me move things forward...

On the bright side, I have been working a lot on the web UI and should have something together soon. I have taken this opportunity to dig into Tornado a non-blocking IO python web framework. If this tool becomes popular I need to have something in place which will allow me to scale the processing across multiple cores as well as not block requests when the plates are being processed. Since all the code is in python I wanted to keep it in python (for now), so I figured I would give Tornado a shot. I like its approach and I have worked with these types of frameworks enough that I should be able to pick it up in a day or two.

Anyway, thats my status update for today. Don't tell my wife I am working over the holiday or she will have my head. :P

Regarding the export, I would really recommend figuring out when you can on how to export to SVG and DWG/DXF as a bare minimum as those are the two most popular, even if it is one single drawing and not in different components.

Regarding the export, I would really recommend figuring out when you can on how to export to SVG and DWG/DXF as a bare minimum as those are the two most popular, even if it is one single drawing and not in different components.

I know. Which is why I have been battling with this for almost 2 weeks now. :(

Hmmm. I've only just begun Python, so I don't know how much I can help. Are there other python developers here who could perhaps have a look.

Give it a break for a while, enjoy the holidays, if you must work on this project, then work on the frontend as you have.

Ya. I am going to focus on the front end and getting everything in place. I can export about 6 or so types successfully, so I can always just start with that.

I am looking to see if I can find other cad related command line conversion tools. I think openscad has some command line conversion functionality and I can export to native scad format, so that might be a way for me to get the files in those formats.

I will move on for now and revisit it with a fresh set of eyes once everything else is in place.

Alright, making progress on the web UI for making this public. Some of this is implemented, but right now most of it is just themed on the page and not wired into the actual plate builder yet. One step at a time...

Speaking of steps, here are the steps so far...

Step 1. Load the page and see what your options are...

[attachimg=1]

Step 2. Fill in the form according to the plate you want to generate and kick off the build...

[attachimg=2]

Step 3. View the resulting CAD drawing and download it... All of your settings will remain on the page, so if it is not perfect, you just expand the configure section, tweak the settings and rebuild...

[attachimg=3]

Yes, I know, I am only offering the BRP format for download right now. I will work on adding additional download formats once I have everything else working.

If you are curious, this plate is for this layout: http://www.keyboard-layout-editor.com/#/layouts/091af7581f5647094c35386ccdf55d0d

I will be adding the drawings for the additional layers of the sandwich case as well, so the bottom plate as well as closed and open layers. An open layer is a layer that will allow a usb plug to go through the layer. The location and size will be configurable. You will need to determine how many of each layer you want to use for the sandwich case based on the thickness of the material and the look you are going for. More to come...

Looks great. One suggestion, would be to add a note that the padding is extra space from the edge of the caps, not from the switch hole.

Is there going to be an option down the road to be able to input dimensions as decimal inches? While I do understand that the vast majority of the world deals with metric, there are still some of us that do not.

I think it would be nice to add areas to "remove outside" for making KMAC and skeldon plates and suchlike.Here's halverson's broken KMAC plate. Had he not got a new one, he may have found your tool useful to generate a file to bring to a local cutter.(http://i.imgur.com/0dKVa.jpg)I prefer steel plates anyway, so I'd replace it on a KMAC if I still had one.

Looks great. One suggestion, would be to add a note that the padding is extra space from the edge of the caps, not from the switch hole.

Is there going to be an option down the road to be able to input dimensions as decimal inches? While I do understand that the vast majority of the world deals with metric, there are still some of us that do not.

My tool is written only in metric. I may be able to take in decimal inches and then immediately convert them to metric and work from there. I had not thought of that. Yes, this is probably possible down the road.

Yes, I hope to support alps. I already have one alps switch cutout available (the MX and alps compatible cutout). I do not yet have anything in place for stabilizing alps keys. I only have the MX stabilizers developed so far.

I think it would be nice to add areas to "remove outside" for making KMAC and skeldon plates and suchlike.Here's halverson's broken KMAC plate. Had he not got a new one, he may have found your tool useful to generate a file to bring to a local cutter.

Show Image

(http://i.imgur.com/0dKVa.jpg)

I prefer steel plates anyway, so I'd replace it on a KMAC if I still had one.

UI looks great though! I am really impressed by the regular updates.

This is a nice idea and I do have a concept in place that will help support this. What I am currently calling the "mount type", which I think I will rename to "case type", is a dropdown of different supported cases. The other options below will change based on the case selected. So for example the "poker" case you would not have the mount holes option because those options would be defined by the selected case.

The cases you are talking about will take a lot of work, but I can look into them once I have gotten the easier cases worked out.

It is worth pointing out that I have 4 different switch cutout options drawn and you will be able to select which switch cutout you want to use. 3 of the 4 have cutouts for the switch top to be removed without desoldering.

It is worth pointing out that I have 4 different switch cutout options drawn and you will be able to select which switch cutout you want to use. 3 of the 4 have cutouts for the switch top to be removed without desoldering.

I though notched meant top was removable without desoldering . Thanks for the answer , now I have some project in mind !

really small update while my son was napping. i added the ability to choose which switch opening type you want in the UI. the tool already supports this, i just forgot to add it to the UI when i was building it.

It is worth pointing out that I have 4 different switch cutout options drawn and you will be able to select which switch cutout you want to use. 3 of the 4 have cutouts for the switch top to be removed without desoldering.

I though notched meant top was removable without desoldering . Thanks for the answer , now I have some project in mind !

Just keep in mind that the hole types will get more expensive as you move from the left to the right as they are pictured in swills latest post. The reason is it just takes longer to cut. Especially with waterjet.

It is worth pointing out that I have 4 different switch cutout options drawn and you will be able to select which switch cutout you want to use. 3 of the 4 have cutouts for the switch top to be removed without desoldering.

I though notched meant top was removable without desoldering . Thanks for the answer , now I have some project in mind !

Just keep in mind that the hole types will get more expensive as you move from the left to the right as they are pictured in swills latest post. The reason is it just takes longer to cut. Especially with waterjet.

Yes. I want to add a little question mark type icon next to each row of options to show an overlay giving more info (like this valuable piece of knowledge).

Hoping to have a beta available in a week or two. I need to verify that all my cutouts work by getting a sample cut with all the openings before I really let people go nuts with it without a disclaimer. Make sense?

Hoping to have a beta available in a week or two. I need to verify that all my cutouts work by getting a sample cut with all the openings before I really let people go nuts with it without a disclaimer. Make sense?

Quick question, I don't think I saw this answered hey but since this uses the text output from the keyboard layout editor, how do you input a 2x1 key such as the enter or + on a numpad? Thanks for all of your hard work on this, looks great!

Quick question, I don't think I saw this answered hey but since this uses the text output from the keyboard layout editor, how do you input a 2x1 key such as the enter or + on a numpad? Thanks for all of your hard work on this, looks great!

Quick question, I don't think I saw this answered hey but since this uses the text output from the keyboard layout editor, how do you input a 2x1 key such as the enter or + on a numpad? Thanks for all of your hard work on this, looks great!

Quick question, I don't think I saw this answered hey but since this uses the text output from the keyboard layout editor, how do you input a 2x1 key such as the enter or + on a numpad? Thanks for all of your hard work on this, looks great!

Quick question, I don't think I saw this answered hey but since this uses the text output from the keyboard layout editor, how do you input a 2x1 key such as the enter or + on a numpad? Thanks for all of your hard work on this, looks great!

You can specify vertical dimension of each key in that tool.

Yes, this is correct. The layout editor can handle it already. My tool in its current state does not yet handle keys that are more than 1 unit tall. This is one of the features I want to add before I put this into beta.

Features before beta:1. Add the ability to have keys with heights > 1 unit. I may write a special case for the ISO enter, but we will see...2. Add the drawing of the additional layers of the layered sandwich case. This would include; the switch plate, an open layer (a ring with a cutout for a usb), a closed layer (a ring without a cutout) and the bottom plate. I also want to allow you to specify a different size hole in the bottom plate so you can make it a little smaller and actually tap the bottom plate (so you don't need nuts on the bottom of the sandwich plate). This is how I will be making my sandwich plates...

Once I get everything wired up in my UI so all the current functionality has been addressed, I will start working on these two features and getting them integrated into the UI. Once I have these two features built and have had a chance to verify that all my cutouts work, I will make it publically available for people to start playing with and testing...

I work two jobs and I have a 18 month old, so my free time has been pretty limited. For about the last month, I have put pretty much every minute of my free time into this. Getting everything off the ground is the hardest part. Once I have something live, it is easier to take on one feature at a time. I am targeting to get something live in a week or two, but that is assuming I can keep finding a little time every day. I have been getting about an hour every night between midnight and 1am recently, but I can't do that forever. :P

Hoping to have a beta available in a week or two. I need to verify that all my cutouts work by getting a sample cut with all the openings before I really let people go nuts with it without a disclaimer. Make sense?

Very quick!

I recommend getting some acrylic lasercut to test. It's very cheap and you can see if it works or not by popping in some switches. Once you're "more sure" you can get a metal plate made but by then you should be pretty sure the switches will fit and then you can use the more expensive metal test to make sure tolerances are where you want.

If you like to test out edges, I'd love to try it out to make a new skeldon plate. ;)

Hoping to have a beta available in a week or two. I need to verify that all my cutouts work by getting a sample cut with all the openings before I really let people go nuts with it without a disclaimer. Make sense?

Very quick!

I recommend getting some acrylic lasercut to test. It's very cheap and you can see if it works or not by popping in some switches. Once you're "more sure" you can get a metal plate made but by then you should be pretty sure the switches will fit and then you can use the more expensive metal test to make sure tolerances are where you want.

If you like to test out edges, I'd love to try it out to make a new skeldon plate. ;)

I have a few things on my plate before I get to the removed excess edge space for your skeldon plate. :) I will try to get to that once I cover more of the 90% use case situations. :)

Good suggestions on the laser cutting though. I may just get my sample plate cut in both acrylic and aluminum at the same time to speed up the process of testing. I need to call those guys tomorrow to see how much it is going to cost me to get it cut.

1. Add the ability to have keys with heights > 1 unit. I may write a special case for the ISO enter, but we will see...

If you look at the code, the way he does the ISO enter key (and just about any 2 height key with different thicknesses on each row like the AT model F enter key) is really awkward.

Yes, it is really awkward, but I have to work with it since that is what he defined. It ain't going to be pretty, but it should be functional. For keys that are > 1 unit high and are an odd shape, I may just handle them on a case by case basis and if I hit them, I will just put the switch cutout where it needs to be for that situation. It will be pretty impossible for me to know where to actually draw the cutout if I don't do it that way. Like for example, here is the ISO code: {x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter"From that, how would I know where to actually make my cuts? If I can determine, "hey this is an ISO enter" and I code for handling an ISO enter as its own entity, then I think I will have a better chance of creating consistent results for people.

Speaking of which. Does anyone know where the ISO enter cutout is placed? I am guessing it has a 2unit vertical stabilizer? I have never actually seen an ISO enter IRL with the cap off.

Thanks. :) I have to admit that you guys being active in this thread and cheering me on is helping me stay motivated to get this thing finished. The scope has grown a bit since I started (every project is like that), but I think the ideas have been really good and when this thing is finished it is going to be pretty epic. :)

Yes, it is really awkward, but I have to work with it since that is what he defined. It ain't going to be pretty, but it should be functional. For keys that are > 1 unit high and are an odd shape, I may just handle them on a case by case basis and if I hit them, I will just put the switch cutout where it needs to be for that situation. It will be pretty impossible for me to know where to actually draw the cutout if I don't do it that way. Like for example, here is the ISO code: {x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter"From that, how would I know where to actually make my cuts? If I can determine, "hey this is an ISO enter" and I code for handling an ISO enter as its own entity, then I think I will have a better chance of creating consistent results for people.

I spent some time figuring it out, I never got the hang of the little GUI for modifying the keycap, so I instead learned how to modify the raw code and it was easier and faster anyway. Here's the relevant code for the "enter" key and the keys surrounding it

["}\n]",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter",""],[{x:0.25},"~\n#",{x:1.25},""]Now this is as expected, but if you start playing with the parameters of that "enter" key, you start to see how it was constructed. Here's the example of my differently shaped "enter" key for the displaywriterhttps://geekhack.org/index.php?topic=59973.10

["{\n[","}\n]"],[{x:0.25},"\"\n'",{a:7,f:2,w:2,w2:1.25,h2:2,x2:0.75,y2:-1},"RET"]Note I had to use the parameters w,w2,h2,x2 and y2 (I think it's assumed that h1,x1 and y1 are all 1)

So it's like you're putting 2 keycaps together into one. I think I spent about a half an hour trynig to make it work. From what I remember, you have to define it from either the top or the bottom (depending on what style you have), and the "second" part of the keycap overlaps the first in such a way that they look like one. Keys that are 2 height that are the same on each level (like numpad enter) are much easier with just an "{h:2} parameter.

Yes, it is really awkward, but I have to work with it since that is what he defined. It ain't going to be pretty, but it should be functional. For keys that are > 1 unit high and are an odd shape, I may just handle them on a case by case basis and if I hit them, I will just put the switch cutout where it needs to be for that situation. It will be pretty impossible for me to know where to actually draw the cutout if I don't do it that way. Like for example, here is the ISO code: {x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter"From that, how would I know where to actually make my cuts? If I can determine, "hey this is an ISO enter" and I code for handling an ISO enter as its own entity, then I think I will have a better chance of creating consistent results for people.

I spent some time figuring it out, I never got the hang of the little GUI for modifying the keycap, so I instead learned how to modify the raw code and it was easier and faster anyway. Here's the relevant code for the "enter" key and the keys surrounding it

["}\n]",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter",""],[{x:0.25},"~\n#",{x:1.25},""]Now this is as expected, but if you start playing with the parameters of that "enter" key, you start to see how it was constructed. Here's the example of my differently shaped "enter" key for the displaywriterhttps://geekhack.org/index.php?topic=59973.10

["{\n[","}\n]"],[{x:0.25},"\"\n'",{a:7,f:2,w:2,w2:1.25,h2:2,x2:0.75,y2:-1},"RET"]Note I had to use the parameters w,w2,h2,x2 and y2 (I think it's assumed that h1,x1 and y1 are all 1)

So it's like you're putting 2 keycaps together into one. I think I spent about a half an hour trynig to make it work. From what I remember, you have to define it from either the top or the bottom (depending on what style you have), and the "second" part of the keycap overlaps the first in such a way that they look like one. Keys that are 2 height that are the same on each level (like numpad enter) are much easier with just an "{h:2} parameter.

Thanks for doing this write up. Yes, I also go straight to the Raw Data and just code what I want because it makes more sense to me that way.

For me, the 'shape' of the key is less important than the actual location of the cutout. So for example, after further review I have realized that just supporting keys that are more than one unit tall with the basic logic for supporting 'x' and 'y' will actually take care of the ISO key. That is kind of lucky. This is because you can basically describe where the switch needs to be cut and what the stab will look like with the following code (which the iso key has): {x:0.25,w:1.25,h:2}Yes, the ISO enter key has more details than that to describe the shape, but these details are enough for me to know where to draw the switch cutout.

Now as you have shown in your examples, it depends on which row the person defines the 2 unit key on. In the following example I have defined them on the first and fourth rows (to illustrate my point). The one on the first row overlaps down, while the one on the fourth row overlaps up.

Now what is interesting about this one is how it is stabilized. It is both two units wide (at the bottom) and two units tall. So which way is it stabilized? For this one, I am not entirely sure where the switch cutout should be. Do you know?

I forgot about the fact that you could have a key with height > 1 described on or after the rows it affects. I was originally thinking that I was going to be able to process my plate from the top left corner across and down and know how to place all the keys. This is not actually the case though because if someone uses the {y:-1} format, then I don't see the height formatting (which affects the previous row) until after I have already cut the switches for that row. I was thinking I was going to be able to basically 'keep track' of where the heights affect the other rows and account for them with {x:--} when I draw that row. Since I can draw a row before I realize that it is affected by a height > 1 key, I have to change the way I am going to do this.

I think I will have to rewrite the way I draw the plate to account for this. I think I need to do a first pass to locate all the centers of the cutouts and record them. If I encounter height > 1 keys which affect other rows, I will need to modify where the centers are in the row that is affected to account for the height > 1 key.

I am going to have to think about this a little more because it does make things a little tricker. I should be able to figure out a realistic solution though...

[{y:2.5}],["",""],["","",{h:2,y:-1},""],["",""],["","",{h:2,y:-1},""]The first two work but the third does not. Though this may just be my own complaints as an end-user, I have no programming experience so maybe I'm missing something.

Still, it might be prudent to contact the athour to make sure that only "legal" code be supported by your tool as well.

[{y:2.5}],["",""],["","",{h:2,y:-1},""],["",""],["","",{h:2,y:-1},""]The first two work but the third does not. Though this may just be my own complaints as an end-user, I have no programming experience so maybe I'm missing something.

Still, it might be prudent to contact the athour to make sure that only "legal" code be supported by your tool as well.

Ok, that third one is just messing with my head. As soon as you specify the -y value in that one the whole row just disappears other than the offset of the y. Ummm, what??? I think thats a bug...

I have tried to contact the author, but he has not gotten back to me. His code is open source and available on github, so I just go review the code if I have questions about how something works.

Hopefully, as long as someone can make it work in his UI and I can support those use cases, I think we are good. I think ISO support and the vertical enter keys are possible without too much issue. Using a vertical enter key with a -y value and then putting keys to the right of it is where things get a little tricky because I currently don't have any way to know about the space the vertical key will take up in the line above it when I draw the line above it. I need to rebuild my system so I initially go through all the openings and 'place' them and if the placement affects other rows, it makes the change to the placement of those rows in the placement phase. Once all the keys have been placed, then it loops through and cuts the switches at each placement. I think this approach will get around this additional 'feature' of the keyboard-layout-editor.

Thanks for bringing this to my attention. It would have sucked to have built everything only to realize that I had missed a major use case. :)

Stupid question that may have already been answered, but have you thought about having "standard" plate options pre-made for people to select and download? Like ISO and ANSI Phantom, ISO and ANSI 60%, and so on.

Stupid question that may have already been answered, but have you thought about having "standard" plate options pre-made for people to select and download? Like ISO and ANSI Phantom, ISO and ANSI 60%, and so on.

IIRC those are already availablehttps://geekhack.org/index.php?topic=47744.0

Stupid question that may have already been answered, but have you thought about having "standard" plate options pre-made for people to select and download? Like ISO and ANSI Phantom, ISO and ANSI 60%, and so on.

I will also be doing preset cases, so like a filco case or a poker case or such and it will predefine the dimensions of the plate and where the mount holes go. You will also have the option to build a sandwich case for any of the layouts as well. So just because you choose a Phantom plate does not mean you want to put it in a phantom compatible case, you might want to make your own sandwich case. My sandwich case will give you the cad for every layer of the case as well. I will also make the top layer hole size independent of the bottom layer hole size so you can make the bottom layer holes smaller and then tap the bottom layer and remove the need for nuts completely...

I have been making slow and steady progress on this tool. It has been a little more work than I was expecting and I am not really at a point where I can release it yet, but I do have a working prototype.

Here you go...

Items I want to resolve before I put it live for people to play with:1. Support vertical empty space (like between a fn and number row on a TKL).2. Support keys with height > 1 unit.3. Add the additional layers of the cad drawing so you have all the layers you need to build a sandwich case.

I am a little behind the schedule I was hoping to hit, so I probably won't launch anything for another couple weeks. Also, my wife is going into a very hard period of her school for the next two months, so my time may be more limited for the next little while. I will keep chugging along and give you guys updates... :)

Thanks for the update swill. Don't stress yourself over it, take it easy. I know more than a few projects where I burnt out due to the exhaustion, and tying to work in the small time I had between my busy schedule.

Haha. This isn't a clack sale. :). Unfortunately I have been too busy working on this to even pay attention to that f5 clack sale. Oh well. Dose priorities.

I won't put anything on that URL till I have it ready. I will let you know when its live. :). That was just an /etc/hosts entry to hide the real IP where it is running since I don't want people messing with my testing.

I'm not sure if this has been asked so i will ask it and hope it hasn't

Will this support big-ass enter as well?

What is the big-ass enter? Do you know the size and the location of the cutout and stabilizers? I don't think I have ever seen a keycap set with this option.

Sadly I don't have any information to contribute as to layout for the bag-ass enter. I myself I'm planning to do a build that will need one at some point though is why i asked. The keyboard layout generator you are using has a preset for big-ass enter but I don't think it has a common layout from what I have seen in images every one I see seems a little different for stab layout.

"Big-Ass" Enter is a J-Shape Enter key. It's as if the |\ key and the Enter key of a standard ANSI keyboard were fused. 1.5u on top and 2.25u on bottom, 2u tall.

I don't have stem spacing. :(

Ahh, yes, I know what you are talking about. You are referring to this enter key: http://www.keyboard-layout-editor.com/#/layouts/d659e7a2631608f7639c8b2963f53701

This is a very common enter key on the old ALPS boards from what I can tell. dorkvader and I have discussed this key quite a bit about 10-15 posts ago when discussing the 'height > 1' keys being defined in the top or bottom row. Most of the 'height > 1' keys are defined in the top row they occupy where as this key actually is defined in the bottom row it occupies and is then shifted up. This is due to the way the keyboard-layout-editor handles 'fused' keys.

My biggest problem with supporting this key right now is that I have no information at all regarding the cutout placement or what the stabilization situation is like for this key. I am going to have to rewrite my cutout logic to handle 'height > 1' keys, so I will try to rewrite it in a way that I 'could' support this key once I understand what the cutout would be for it, but this may be in a much later iteration of the code...

Haha. This isn't a clack sale. :). Unfortunately I have been too busy working on this to even pay attention to that f5 clack sale. Oh well. Dose priorities.

I won't put anything on that URL till I have it ready. I will let you know when its live. :). That was just an /etc/hosts entry to hide the real IP where it is running since I don't want people messing with my testing.

As I mentioned a few posts earlier, that key has many different stem/stab configs, there really is no standard.

I guess as far as MX goes, the SteelSeries 7G would be the standard to look at. It's probably the most common, outside of Asia, anyway.

Ya, this key is not a priority for me. The ISO is much more of a priority because people actually use it. Luckily the code to produce it is consistent with other 'height > 1' keys, so I will not have to do any funny shenanigans to support it. :)

Not a "core" feature, but there appears to be a bug in the code not allowing you to set the height of the first key to be anything less than 1x.

This is not a huge deal as most users will be using "standard" 1x or greater key spacing in all directions, but cherry keyboards with the switches jammed in together as tight as possible do exist and keycaps shorter than 1x in height exist as well.

I can't imagine anyone wanting this layout in cherry MX (much more likely for ALPS) but it is in theory possible and making sure the output works correctly possibly will be important to someone eventually.

Example (note F1 key: specified as 0.6x height like the rest but rendered at 1x height):http://www.keyboard-layout-editor.com/#/layouts/5418d327ed8ee812432bc489c5099ed6

Oh I think you said your current test hardware is not very fast: do you have sufficient hardware to quickly render these or should we run up a donation drive? I think TP4 has some servers he's not using.

Ya, this key is not a priority for me. The ISO is much more of a priority because people actually use it. Luckily the code to produce it is consistent with other 'height > 1' keys, so I will not have to do any funny shenanigans to support it. :)

Yeah, I think the code just recognizing that "hey, there's an ISO enter here" and rendering the proper stabilizer/switch holes for it is plenty for almost everyone and a fully featured first release.

I hope that my posting all the time in this topic is not distracting or annoying. It's hard to contain my excitement, but sometimes I wonder if I'm not being helpful, what with my lack of programming experience.

Not a "core" feature, but there appears to be a bug in the code not allowing you to set the height of the first key to be anything less than 1x.

This is not a huge deal as most users will be using "standard" 1x or greater key spacing in all directions, but cherry keyboards with the switches jammed in together as tight as possible do exist and keycaps shorter than 1x in height exist as well.

I can't imagine anyone wanting this layout in cherry MX (much more likely for ALPS) but it is in theory possible and making sure the output works correctly possibly will be important to someone eventually.

Example (note F1 key: specified as 0.6x height like the rest but rendered at 1x height):http://www.keyboard-layout-editor.com/#/layouts/5418d327ed8ee812432bc489c5099ed6

Oh I think you said your current test hardware is not very fast: do you have sufficient hardware to quickly render these or should we run up a donation drive? I think TP4 has some servers he's not using.

Ya, this key is not a priority for me. The ISO is much more of a priority because people actually use it. Luckily the code to produce it is consistent with other 'height > 1' keys, so I will not have to do any funny shenanigans to support it. :)

Yeah, I think the code just recognizing that "hey, there's an ISO enter here" and rendering the proper stabilizer/switch holes for it is plenty for almost everyone and a fully featured first release.

I hope that my posting all the time in this topic is not distracting or annoying. It's hard to contain my excitement, but sometimes I wonder if I'm not being helpful, what with my lack of programming experience.

Still: I'm happy to help in any way I can, just let me know!

I really appreciate how active you have been in this thread. You have spent a lot of time with the keyboard-layout-editor, so your experience is invaluable. Its not all about the code, its also about what users want, how we expect them to use it and general help with the expected/useful functionality.

I think you have found a bug regarding the first key not rendering the correct height in the keyboard-layout-editor. When I have some time I will look into the code for that and open an issue for him and submit a pull request to fix it. Thats the beauty of open source code... :)

The switch cutout for a key that is only 60% height of a regular key has to be the same as regular (because that is determined by the switch), but how close can you put that key to the row below it? I think you only have about 3-4 mm between the switches, so you cant put them so the keycaps would touch or the cutout would not work for both switches. Do you know more details on that or will I just have to figure out what the minimum distance is and if they specify something that I don't think will actually work, I just put it at the minimum distance? I guess the minimum distance is relative to the type of material being used. Hmmm...

Oh I think you said your current test hardware is not very fast: do you have sufficient hardware to quickly render these or should we run up a donation drive? I think TP4 has some servers he's not using.

Oh, about the servers... No I don't need any funding. I have the perk of working for a cloud computing company and we have our own gated public cloud which I am 'testing'. :P We need to actually put it through its paces and test all the edge cases and stuff as we start to put customers on it, so I am taking advantage of that and have access to as much resources as I need. Right now I am running my server with 4 cores and 16GB of ram. FreeCAD is not super fast when it comes to drawing, rendering and exporting the cad which is why it is a little slow, its not really a lack of resources. I think that people can chill out and wait for 30 seconds while their cad is drawn for them. It is going to be a hell of a lot faster than if they were to do it by hand, so people will learn patience... :P

Just keep in mind that the hole types will get more expensive as you move from the left to the right as they are pictured in swills latest post. The reason is it just takes longer to cut. Especially with waterjet.

Just keep in mind that the hole types will get more expensive as you move from the left to the right as they are pictured in swills latest post. The reason is it just takes longer to cut. Especially with waterjet.

I think you have found a bug regarding the first key not rendering the correct height in the keyboard-layout-editor. When I have some time I will look into the code for that and open an issue for him and submit a pull request to fix it. Thats the beauty of open source code... :)

The switch cutout for a key that is only 60% height of a regular key has to be the same as regular (because that is determined by the switch), but how close can you put that key to the row below it? I think you only have about 3-4 mm between the switches, so you cant put them so the keycaps would touch or the cutout would not work for both switches. Do you know more details on that or will I just have to figure out what the minimum distance is and if they specify something that I don't think will actually work, I just put it at the minimum distance? I guess the minimum distance is relative to the type of material being used. Hmmm...

Credit where it's due, Jacobolus found that bug.

As far as the switch cutout for a 0.6 height key, all the ones I have seen (https://www.flickr.com/photos/dork_vader/sets/72157641884809274/) have a smaller keycap that is centered on the switch. It's an odd case, as you could do it differently. I suppose asking people to do things for really odd stuff like that can do their own cad file or input workable switches in the the tool yielding the cutouts they want.

Still, you can place the switches right up next to eachother if you have smaller keycaps like that. But in such a case you can't have a plate in that area.

I will do some measuring to get the minimum distance but I believe it's 15mm

I think you have found a bug regarding the first key not rendering the correct height in the keyboard-layout-editor. When I have some time I will look into the code for that and open an issue for him and submit a pull request to fix it. Thats the beauty of open source code... :)

The switch cutout for a key that is only 60% height of a regular key has to be the same as regular (because that is determined by the switch), but how close can you put that key to the row below it? I think you only have about 3-4 mm between the switches, so you cant put them so the keycaps would touch or the cutout would not work for both switches. Do you know more details on that or will I just have to figure out what the minimum distance is and if they specify something that I don't think will actually work, I just put it at the minimum distance? I guess the minimum distance is relative to the type of material being used. Hmmm...

Credit where it's due, Jacobolus found that bug.

As far as the switch cutout for a 0.6 height key, all the ones I have seen (https://www.flickr.com/photos/dork_vader/sets/72157641884809274/) have a smaller keycap that is centered on the switch. It's an odd case, as you could do it differently. I suppose asking people to do things for really odd stuff like that can do their own cad file or input workable switches in the the tool yielding the cutouts they want.

Still, you can place the switches right up next to each other if you have smaller keycaps like that. But in such a case you can't have a plate in that area.

I will do some measuring to get the minimum distance but I believe it's 15mm

Cool thanks. I will think about how to best handle this. Luckily there is a live preview of your plate before you download, so if you see that cutouts are overlapping you can easily adjust your layout and try again, so its not the end of the world. I could try to put something in place to make sure that the combination of height and y and such do not put the cutouts too close. I will think about it. For now I think people will just have to check their work before they send it to be manufactured. :P

Cool thanks. I will think about how to best handle this. Luckily there is a live preview of your plate before you download, so if you see that cutouts are overlapping you can easily adjust your layout and try again, so its not the end of the world. I could try to put something in place to make sure that the combination of height and y and such do not put the cutouts too close. I will think about it. For now I think people will just have to check their work before they send it to be manufactured. :P

Yeah, or if they need something that the tool can't handle, there's at least one person active in the forum who considers himself pretty good at designing keyboard plates. I hear that guy is usually pretty responsive to custom requests, if you ask him nicely.

Cool thanks. I will think about how to best handle this. Luckily there is a live preview of your plate before you download, so if you see that cutouts are overlapping you can easily adjust your layout and try again, so its not the end of the world. I could try to put something in place to make sure that the combination of height and y and such do not put the cutouts too close. I will think about it. For now I think people will just have to check their work before they send it to be manufactured. :P

Yeah, or if they need something that the tool can't handle, there's at least one person active in the forum who considers himself pretty good at designing keyboard plates. I hear that guy is usually pretty responsive to custom requests, if you ask him nicely.

I feel the pain, ain't nobody going to PM me now for case building. :/

Just throwing an idea around , but could be interesting for it to generate a CAD based on 2+ keyboard layouts .

For my personnal use , I switch between 2.75u rShift and 1.75u rShift +1u key. Having my own "Universal" plate with cut-outs for both rShift configuration would be fantastic .

I don't think I am going to be committing to this at this point. Especially since I think those two cutouts will actually overlap (if I remember correctly) and one uses a stabilizer and the other doesnt. I see this being a mess. I have not tried it, but you might be able to just code both keys in the layout editor and superimpose them on top of each other with the correct negative x setting to have the tool cut both cutouts. I have never tried this and I will not vouch for it working, but it 'might' be possible to do it that way...

Just throwing an idea around , but could be interesting for it to generate a CAD based on 2+ keyboard layouts .

For my personnal use , I switch between 2.75u rShift and 1.75u rShift +1u key. Having my own "Universal" plate with cut-outs for both rShift configuration would be fantastic .

I don't think I am going to be committing to this at this point. Especially since I think those two cutouts will actually overlap (if I remember correctly) and one uses a stabilizer and the other doesnt. I see this being a mess. I have not tried it, but you might be able to just code both keys in the layout editor and superimpose them on top of each other with the correct negative x setting to have the tool cut both cutouts. I have never tried this and I will not vouch for it working, but it 'might' be possible to do it that way...

Another use case for a human to draw your plate. While this tool is actually nothing short of AMAZEBALLS, and automates things for the vast majority of what people want, there will always be a need for skilled people to be involved when more custom options are required.

Cool thanks. I will think about how to best handle this. Luckily there is a live preview of your plate before you download, so if you see that cutouts are overlapping you can easily adjust your layout and try again, so its not the end of the world. I could try to put something in place to make sure that the combination of height and y and such do not put the cutouts too close. I will think about it. For now I think people will just have to check their work before they send it to be manufactured. :P

Yeah, or if they need something that the tool can't handle, there's at least one person active in the forum who considers himself pretty good at designing keyboard plates. I hear that guy is usually pretty responsive to custom requests, if you ask him nicely.

I feel the pain, ain't nobody going to PM me now for case building. :/

Cool thanks. I will think about how to best handle this. Luckily there is a live preview of your plate before you download, so if you see that cutouts are overlapping you can easily adjust your layout and try again, so its not the end of the world. I could try to put something in place to make sure that the combination of height and y and such do not put the cutouts too close. I will think about it. For now I think people will just have to check their work before they send it to be manufactured. :P

Yeah, or if they need something that the tool can't handle, there's at least one person active in the forum who considers himself pretty good at designing keyboard plates. I hear that guy is usually pretty responsive to custom requests, if you ask him nicely.

I am sorry guys. It was not my intention to replace the need for your services with this. To be totally honest it didn't even really cross my mind that this tool would actually affect the type of services you guys offer. :( I feel really bad because both of you have been very supportive of my work on this, I didn't even consider the fact that I would be taking work away from you guys.

Maybe I can introduce some limitations in the tool and in the help I can send the users to you guys. :P

I was really expecting this tool to just cater to builders who were prototyping different plates. It has since grown to potentially supporting different cases and so on... My initial motivation for doing this was because I thought "it would be awesome if I could just create this layout in the keyboard-layout-editor and then have it automatically draw the plate for me" because I wanted to prototype a new potential 60% layout with my Enabler PCBs. This is the layout that started it all: http://www.keyboard-layout-editor.com/#/layouts/091af7581f5647094c35386ccdf55d0d

In reality, I am going to get the basic functionality up and it will not be complete for what everyone wants. I will slowly add features, but I will be doing that at a much slower pace once I get things up. I have basically spent ALL of my spare time on this for pretty much two months and I still don't have it live yet. The scale of this project if I actually do everything that everyone wants is much bigger than I would like to admit. I will try to take little bites out of it, but this tool will never capture the whole plate and case building market. I bet half the community won't even know it exists for at least a year or two...

Just throwing an idea around , but could be interesting for it to generate a CAD based on 2+ keyboard layouts .

For my personnal use , I switch between 2.75u rShift and 1.75u rShift +1u key. Having my own "Universal" plate with cut-outs for both rShift configuration would be fantastic .

I don't think I am going to be committing to this at this point. Especially since I think those two cutouts will actually overlap (if I remember correctly) and one uses a stabilizer and the other doesnt. I see this being a mess. I have not tried it, but you might be able to just code both keys in the layout editor and superimpose them on top of each other with the correct negative x setting to have the tool cut both cutouts. I have never tried this and I will not vouch for it working, but it 'might' be possible to do it that way...

Another use case for a human to draw your plate. While this tool is actually nothing short of AMAZEBALLS, and automates things for the vast majority of what people want, there will always be a need for skilled people to be involved when more custom options are required.

Absolutely... I have no intention of supporting the 'universal' type layouts. If you can't draw it in the keyboard-layout-editor, I won't support it, end of story.

I am sorry guys. It was not my intention to replace the need for your services with this. To be totally honest it didn't even really cross my mind that this tool would actually affect the type of services you guys offer. :( I feel really bad because both of you have been very supportive of my work on this, I didn't even consider the fact that I would be taking work away from you guys.

No need to apologize at all. I am usually really busy, and anything that can help people with getting the plate designs they want on their schedule is a good thing. Please don't think I'm upset about losing any income or anything from this. I don't normally charge anything for my help with plates, anyway. Standard (and custom) designs that this tool will generate should be in the public domain, anyway. The only time I hesitate to release something for wide dissemination is when I have spent a lot of time drawing up a proprietary design, and I think the person requesting a copy of it only wants it to sell for profit or something.

I am sorry guys. It was not my intention to replace the need for your services with this. To be totally honest it didn't even really cross my mind that this tool would actually affect the type of services you guys offer. :( I feel really bad because both of you have been very supportive of my work on this, I didn't even consider the fact that I would be taking work away from you guys.

No need to apologize at all. I am usually really busy, and anything that can help people with getting the plate designs they want on their schedule is a good thing. Please don't think I'm upset about losing any income or anything from this. I don't normally charge anything for my help with plates, anyway. Standard (and custom) designs that this tool will generate should be in the public domain, anyway. The only time I hesitate to release something for wide dissemination is when I have spent a lot of time drawing up a proprietary design, and I think the person requesting a copy of it only wants it to sell for profit or something.

Ya, I did not intend to step on anyone's toes with this, so I am glad this isn't conflicting with one of your revenue streams.

BTW, I have no problem promoting skilled community members in my UI.

I could put something like the following in the footer.

"This tool solves for a variety of common layouts, but it does have its limitations. For help on custom projects consider contacting the following geekhack members:Custom plate design: jdcarpe, ...Custom case design: MOZ, nudeCNC, ..."

If people are struggling with my tool and need a specialist, it might be a good way to advertise the skilled people in our community.

Anyone who offers services in these areas who want to be featured, just let me know and I can add that section with your name.

I get nothing from people using the tool, so it is not a competition for me. If they have made it to my tool they are serious about building something, so it seems like a perfect place to promote our other skilled people.

I love what you are doing here. I am an intermediate-ish python programmer and would like to see the code if it is available but I didn't see a link to source? If you don't want to release it that's totally fine BTW.

I love what you are doing here. I am an intermediate-ish python programmer and would like to see the code if it is available but I didn't see a link to source? If you don't want to release it that's totally fine BTW.

My plan is to open source it once I get the initial launch finished. That being said, some very valid concerns have been raised about me open sourcing the code without putting thought into the license I plan to associate with the project. I need to be a bit careful how I open source it because I need to ensure that companies dont just gack the code and embed it in their websites for profit. I want it to be free to use for people who are using it for non-commercial reasons and I need to figure out some sort of licensing for people who want to use it for commercial reasons. This is obviously not my area of expertise as I completely neglected to think about this until it was brought up in this thread. I am a little too altruistic and maybe even naive when it comes to that sort of thing, so I do need to put some thought into it before I release the code... Make sense?

Hahahahah, I'm not going to lie, it was fun reading you (swill) feel bad for me (I'm a saddist, :P).

Like JDCarpe, I have no issues at all. I was just having some fun. As I mentioned when this project started that I wanted to do something like myself, but never found the time, I'm so happy that someone actually got to doing this.

You'd know from my works, I am always up for building stuff and it being open-source, and never charge anything, for the most simplest of reasons, that I got to learn so much on this community from members like regack (I can't ever thank this man enough, I love him), jdcarpe, WFD, bpiphany, litster, haata and probably more that I can't remember and never paid a dime to them and hence see no reason to charge myself.

Hence you aren't stepping on my toes at the very least, or harming any source of income as there never was. As a matter of fact you are helping me, often I get requests and I'm unable to help much due to my own laziness/busy-ness. :)

Just throwing an idea around , but could be interesting for it to generate a CAD based on 2+ keyboard layouts .

For my personnal use , I switch between 2.75u rShift and 1.75u rShift +1u key. Having my own "Universal" plate with cut-outs for both rShift configuration would be fantastic .

I don't think I am going to be committing to this at this point. Especially since I think those two cutouts will actually overlap (if I remember correctly) and one uses a stabilizer and the other doesnt. I see this being a mess. I have not tried it, but you might be able to just code both keys in the layout editor and superimpose them on top of each other with the correct negative x setting to have the tool cut both cutouts. I have never tried this and I will not vouch for it working, but it 'might' be possible to do it that way...

Another use case for a human to draw your plate. While this tool is actually nothing short of AMAZEBALLS, and automates things for the vast majority of what people want, there will always be a need for skilled people to be involved when more custom options are required.

Absolutely... I have no intention of supporting the 'universal' type layouts. If you can't draw it in the keyboard-layout-editor, I won't support it, end of story.

These aren't 3D drawings. It's a 3D solid. It looks like a parasolid and it's not parametric. In other words, I can't go in and tweak anything in the .stl file. I just get this 3D representation. Typically you can alter 3D models and change the dimensions. If you can't alter the dimensions, it's called a parasolid or just 3D solid. A drawing is a blueprint with dimensions and tolerances the shop can use to make your parts. Just thought I'd point that out.

Second, I can't open any of the files you sent me in the email other than the .stl file in Autodesk Inventor. Not sure if that's a limitation of Inventor but I thought I'd share.

I couldn't get Inventor to create a drawing with it. Some shops ask for a .dwg file because you can see the dimensions.

What I thought of today is that I'm worried about tolerances. If they aren't accounted for, the plate might not work. Your tool doesn't seem to account for tolerances in the machining process. Have you talked to JD or another person who has made plates to see how they dealt with this? Is it a non-issue? I'm not sure but you should find out if you envision this tool being used by a lot of people. Tolerance build up can turn your drawing, which is "perfect", into a plate in real life that may not work. I assume that what you're using is ok....but I wouldn't want to assume if I were you. Just a thought.

What I thought of today is that I'm worried about tolerances. If they aren't accounted for, the plate might not work. Your tool doesn't seem to account for tolerances in the machining process. Have you talked to JD or another person who has made plates to see how they dealt with this? Is it a non-issue? I'm not sure but you should find out if you envision this tool being used by a lot of people. Tolerance build up can turn your drawing, which is "perfect", into a plate in real life that may not work. I assume that what you're using is ok....but I wouldn't want to assume if I were you. Just a thought.

He actually addressed this earlier in the thread, when he was deciding which dimensions to use for his holes. The "standard" is 14mm, or 0.551 inches, but most drawings I've seen and made have 13.97mm hole dimensions.

It's actually good to keep bringing this up, so that after testing is done, the topic can be revisited. :)

Ok good. I just wanted to be thorough and I was too lazy to read the whole thread again. Apologies for being lazy but I think understanding tolerances is important to translating a design from CAD to an actual part in real life.

These aren't 3D drawings. It's a 3D solid. It looks like a parasolid and it's not parametric. In other words, I can't go in and tweak anything in the .stl file. I just get this 3D representation. Typically you can alter 3D models and change the dimensions. If you can't alter the dimensions, it's called a parasolid or just 3D solid. A drawing is a blueprint with dimensions and tolerances the shop can use to make your parts. Just thought I'd point that out.

Second, I can't open any of the files you sent me in the email other than the .stl file in Autodesk Inventor. Not sure if that's a limitation of Inventor but I thought I'd share.

I couldn't get Inventor to create a drawing with it. Some shops ask for a .dwg file because you can see the dimensions.

What I thought of today is that I'm worried about tolerances. If they aren't accounted for, the plate might not work. Your tool doesn't seem to account for tolerances in the machining process. Have you talked to JD or another person who has made plates to see how they dealt with this? Is it a non-issue? I'm not sure but you should find out if you envision this tool being used by a lot of people. Tolerance build up can turn your drawing, which is "perfect", into a plate in real life that may not work. I assume that what you're using is ok....but I wouldn't want to assume if I were you. Just a thought.

Thank you for the clarification. The STL format is the most lossy of the formats I sent you. It is troubling that the STL was the only one you were able to open. Hmmm...

With the STP and BRP files, I know that the dimensions are included in the file because I can measure and add dimensions to the solid once it is imported into FreeCAD (the only cad program I have). Were you getting errors when you tried to open them or did your software just not support opening that format? Do you know which formats you can open so I can try to get you a file for you to check that is not as lossy as the STL format? Maybe IGS or OBJ?

As for tolerances, are you talking about tolerances in the actual drawing? My drawings are within the tolerances according to the cherry spec, but I have not specified anything specific in my application. In my application I work with tolerances down to 0.005mm, but I think the cherry spec only has tolerances of 0.05mm. We will revisit this once I get some test stuff cut...

Ok good. I just wanted to be thorough and I was too lazy to read the whole thread again. Apologies for being lazy but I think understanding tolerances is important to translating a design from CAD to an actual part in real life.

Are you talking about tolerances in the actual drawing or tolerances in the CAD engine itself?

Ok good. I just wanted to be thorough and I was too lazy to read the whole thread again. Apologies for being lazy but I think understanding tolerances is important to translating a design from CAD to an actual part in real life.

Are you talking about tolerances in the actual drawing or tolerances in the CAD engine itself?

Thank you for the clarification. The STL format is the most lossy of the formats I sent you. It is troubling that the STL was the only one you were able to open. Hmmm...

With the STP and BRP files, I know that the dimensions are included in the file because I can measure and add dimensions to the solid once it is imported into FreeCAD (the only cad program I have). Were you getting errors when you tried to open them or did your software just not support opening that format? Do you know which formats you can open so I can try to get you a file for you to check that is not as lossy as the STL format? Maybe IGS or OBJ?

As for tolerances, are you talking about tolerances in the actual drawing? My drawings are within the tolerances according to the cherry spec, but I have not specified anything specific in my application. In my application I work with tolerances down to 0.005mm, but I think the cherry spec only has tolerances of 0.05mm. We will revisit this once I get some test stuff cut...

I was able to open .stl in Inventor. That's it. I tried the other files you sent (.brp, .igs, .stp) all didn't open. Here is a list of part files I'm able to open in Inventor.

Ok good. I just wanted to be thorough and I was too lazy to read the whole thread again. Apologies for being lazy but I think understanding tolerances is important to translating a design from CAD to an actual part in real life.

Are you talking about tolerances in the actual drawing or tolerances in the CAD engine itself?

Laser/WJ kerf and part fitment, I believe.

What JD said. CAD engine tolerances are tolerances that you would build into the drawing. I'm worried about fit and function of the actual part. But it seems like you've already covered a lot of that with JD.

If you recall we discussed CADs and I could not find anything useful and cheap. At the end, I found Cubify Design for 150€ (it is a striped down version of Geomagic Design (which is about 2000€ IIRC)). I believe they were called Alibre before ... or something like that.

I have a pretty good knowledge about FreeCAD and Cubify Design. Long story short: Cubify is more limited as for as what you can do (what modeling options are available), but it can replay history properly (at least I did not catch it failing yet). Probably the biggest problem with it is that it cannot export to STEP (only STL). FreeCAD has a lot of modeling tools and options which mostly work, it can be scripted in python (this is actually pretty useful), but its history replay and editing sucks.

Edit: Cubify Design could be much more useful if they would allow using constants / variables / expressions on more places.

If you recall we discussed CADs and I could not find anything useful and cheap. At the end, I found Cubify Design for 150€ (it is a striped down version of Geomagic Design (which is about 2000€ IIRC)). I believe they were called Alibre before ... or something like that.

I have a pretty good knowledge about FreeCAD and Cubify Design. Long story short: Cubify is more limited as for as what you can do (what modeling options are available), but it can replay history properly (at least I did not catch it failing yet). Probably the biggest problem with it is that it cannot export to STEP (only STL). FreeCAD has a lot of modeling tools and options which mostly work, it can be scripted in python (this is actually pretty useful), but its history replay and editing sucks.

Edit: Cubify Design could be much more useful if they would allow using constants / variables / expressions on more places.

My scripting engine is currently written using FreeCAD.

@cptn: I am surprised you were not able to open the igs or STP files I sent you. Hmmm.

you're protected by copyright. anyone who uses your code without permission is in violation and liable to be sued.

i think the only weird issue would be how to handle contributions; i suspect each contribution will have it's own copyright and each contributor has legal leverage to block usage of the software.

No, I don't think that is realistic for software licensing. I think I have to go with something more like creative commons where it is free for people for personal use, but not for commercial use. I have to review the links that were sent to me when we were discussing this a few pages back because others did suggest some potential licenses and I have not had a chance to research them.

As for contributions, they would be falling under the same licence. They would not have ownership of the code but would be able to use it for non-commercial uses. For commercial uses, they would have to contact me and we would have to work out a licensing deal of some kind. Once I release this and get this sorted out, I will be putting the code on github and people will be able to contribute by submitting pull requests...

you're protected by copyright. anyone who uses your code without permission is in violation and liable to be sued.

i think the only weird issue would be how to handle contributions; i suspect each contribution will have it's own copyright and each contributor has legal leverage to block usage of the software.

No, I don't think that is realistic for software licensing. I think I have to go with something more like creative commons where it is free for people for personal use, but not for commercial use. I have to review the links that were sent to me when we were discussing this a few pages back because others did suggest some potential licenses and I have not had a chance to research them.

As for contributions, they would be falling under the same licence. They would not have ownership of the code but would be able to use it for non-commercial uses. For commercial uses, they would have to contact me and we would have to work out a licensing deal of some kind. Once I release this and get this sorted out, I will be putting the code on github and people will be able to contribute by submitting pull requests...

I don't know how copyright works, but couldn't you make a terms and agreement that you automatically agree to buy using it?

you're protected by copyright. anyone who uses your code without permission is in violation and liable to be sued.

i think the only weird issue would be how to handle contributions; i suspect each contribution will have it's own copyright and each contributor has legal leverage to block usage of the software.

No, I don't think that is realistic for software licensing. I think I have to go with something more like creative commons where it is free for people for personal use, but not for commercial use. I have to review the links that were sent to me when we were discussing this a few pages back because others did suggest some potential licenses and I have not had a chance to research them.

As for contributions, they would be falling under the same licence. They would not have ownership of the code but would be able to use it for non-commercial uses. For commercial uses, they would have to contact me and we would have to work out a licensing deal of some kind. Once I release this and get this sorted out, I will be putting the code on github and people will be able to contribute by submitting pull requests...

I don't know how copyright works, but couldn't you make a terms and agreement that you automatically agree to buy using it?

Honestly I don't know, I need to do a bunch of reading before I will know anything on this subject. I have never had to worry about this before.

you're protected by copyright. anyone who uses your code without permission is in violation and liable to be sued.

i think the only weird issue would be how to handle contributions; i suspect each contribution will have it's own copyright and each contributor has legal leverage to block usage of the software.

No, I don't think that is realistic for software licensing. I think I have to go with something more like creative commons where it is free for people for personal use, but not for commercial use. I have to review the links that were sent to me when we were discussing this a few pages back because others did suggest some potential licenses and I have not had a chance to research them.

As for contributions, they would be falling under the same licence. They would not have ownership of the code but would be able to use it for non-commercial uses. For commercial uses, they would have to contact me and we would have to work out a licensing deal of some kind. Once I release this and get this sorted out, I will be putting the code on github and people will be able to contribute by submitting pull requests...

I don't know how copyright works, but couldn't you make a terms and agreement that you automatically agree to buy using it?

Honestly I don't know, I need to do a bunch of reading before I will know anything on this subject. I have never had to worry about this before.

I just am excited to play around with it, but it would be scummy to use it for commercial use

I love what you are doing here. I am an intermediate-ish python programmer and would like to see the code if it is available but I didn't see a link to source? If you don't want to release it that's totally fine BTW.

My plan is to open source it once I get the initial launch finished. That being said, some very valid concerns have been raised about me open sourcing the code without putting thought into the license I plan to associate with the project. I need to be a bit careful how I open source it because I need to ensure that companies dont just gack the code and embed it in their websites for profit. I want it to be free to use for people who are using it for non-commercial reasons and I need to figure out some sort of licensing for people who want to use it for commercial reasons. This is obviously not my area of expertise as I completely neglected to think about this until it was brought up in this thread. I am a little too altruistic and maybe even naive when it comes to that sort of thing, so I do need to put some thought into it before I release the code... Make sense?

Thats a fair concern. Not a lawyer but I believe This (http://creativecommons.org/licenses/by-nc-sa/4.0/) will cover that.

Dammit. I always used CC on my programs, and assumed you could do that. So, I found this (http://vizsage.com/license/Vizsage-Deed-BY-NC-SA.html) that seems to apply to software but I have never heard of it before. It seems strange, but there seem to be no software equivalents (http://stackoverflow.com/questions/6785153/software-license-equivalent-to-cc-attribution-noncommercial-sharealike-3-0) to the previously linked creative commons license.

Alright, I have done a bunch of research on this on the train on my way home.

If I am going to "open source" the software, I can not treat any groups of people differently. This means that I can not treat commercial and noncommercial differently.

That being said, there are some interesting licenses out there that make it harder for commercial users to just gack the code for profit.

I will most likely be launching this with the AGPL (http://www.gnu.org/licenses/agpl-3.0.html) license. Basically this is an open source license that allows for the code to be modified and republished, but it requires that the source code of the republished work be downloadable.

This is good for us as a community because any work that is done on the tool is required to be made available. It also makes it less likely that a company will just come along and take the code for commercial use and embed it in their app because they would then have to make their app's source code available. This will likely be enough of a deterrent for most companies unless they are very serious.

Interestingly, this license does not restrict a company from contacting me, the author, and requesting to purchase rights to the application under a different license. That's what I read anyway. If that is the case, it still gives a serious company a way to embed the application without releasing their source assuming we can come to an agreement.

Alright, I have done a bunch of research on this on the train on my way home.

If I am going to "open source" the software, I can not treat any groups of people differently. This means that I can not treat commercial and noncommercial differently.

That being said, there are some interesting licenses out there that make it harder for commercial users to just gack the code for profit.

I will most likely be launching this with the AGPL (http://www.gnu.org/licenses/agpl-3.0.html) license. Basically this is an open source license that allows for the code to be modified and republished, but it requires that the source code of the republished work be downloadable.

This is good for us as a community because any work that is done on the tool is required to be made available. It also makes it less likely that a company will just come along and take the code for commercial use and embed it in their app because they would then have to make their app's source code available. This will likely be enough of a deterrent for most companies unless they are very serious.

Interestingly, this license does not restrict a company from contacting me, the author, and requesting to purchase rights to the application under a different license. That's what I read anyway. If that is the case, it still gives a serious company a way to embed the application without releasing their source assuming we can come to an agreement.

So far this seems to be the best option.

If my understanding of your understanding is correct, this sounds like a pretty good setup for it.

Alright, I have done a bunch of research on this on the train on my way home.

If I am going to "open source" the software, I can not treat any groups of people differently. This means that I can not treat commercial and noncommercial differently.

That being said, there are some interesting licenses out there that make it harder for commercial users to just gack the code for profit.

I will most likely be launching this with the AGPL (http://www.gnu.org/licenses/agpl-3.0.html) license. Basically this is an open source license that allows for the code to be modified and republished, but it requires that the source code of the republished work be downloadable.

This is good for us as a community because any work that is done on the tool is required to be made available. It also makes it less likely that a company will just come along and take the code for commercial use and embed it in their app because they would then have to make their app's source code available. This will likely be enough of a deterrent for most companies unless they are very serious.

Interestingly, this license does not restrict a company from contacting me, the author, and requesting to purchase rights to the application under a different license. That's what I read anyway. If that is the case, it still gives a serious company a way to embed the application without releasing their source assuming we can come to an agreement.

So far this seems to be the best option.

If my understanding of your understanding is correct, this sounds like a pretty good setup for it.

yep, this is looking pretty good. i finally got through the whole license and i am pretty comfortable with it. i would hold the copyright to the code and as such would have control of the license. by holding the copyright I would be able to add 'additional permissions' to the license if i need to. this means that i can wave the need for a specific company to require the publishing of their code if we can come to an agreement and this license will uphold those terms.

i am pretty happy with this license. i think i can officially say that i will be making the source available under this license. sweet! one less thing to worry about... :)

swill, did you check to see that you're not violating the freecad licenses?

it specifically mentions that gpl is valid, as is reusung lgpl. i've only knowingly seen agpl once before and i'm not sure how it relates to those 2 mentioned ones.

No, we are good. AGPL is basically a GPL license with one additional clause to handle code that is run on a server (like mine). FreeCAD by design is not networked and can not be used over a network, so they only mention GPL since that is really the only aspect that applies to them.

There is provisions between the GPL licenses that basically says that they respect the authority of the other GPL type licenses (or something along those lines). Also, I am not modifying any of those core libraries, so I do not have to worry about their licenses for the most part. I am just using the libraries.

All things considered, this is pretty much the perfect license for this...

Edit:FreeCAD actually goes so far as to wave some of the conditions of the license right off the top:

"Commercial developers can use FreeCAD as the groundwork for their own extension modules for special purposes and are not forced to make their modules open source."

Stupid question, but will this work with making acrylic plates and other plastics? I seem to like acrylic and plastic plates better, and this would be awesome if they work.

Yes it will, but I have to do some tests with my cutouts because I know the kerf with metals and plastics are different so I need to make sure that my cutouts will work with everything. All my cutouts are drawn to cherry spec, but that does not mean that they will be perfect first shot...

Stupid question, but will this work with making acrylic plates and other plastics? I seem to like acrylic and plastic plates better, and this would be awesome if they work.

Yes it will, but I have to do some tests with my cutouts because I know the kerf with metals and plastics are different so I need to make sure that my cutouts will work with everything. All my cutouts are drawn to cherry spec, but that does not mean that they will be perfect first shot...

Stupid question, but will this work with making acrylic plates and other plastics? I seem to like acrylic and plastic plates better, and this would be awesome if they work.

Yes it will, but I have to do some tests with my cutouts because I know the kerf with metals and plastics are different so I need to make sure that my cutouts will work with everything. All my cutouts are drawn to cherry spec, but that does not mean that they will be perfect first shot...

I've mentioned common acrylic kerf for the thickness used somewhere in the start of the thread. My experience, has been that using the Cherry spec results in slightly loose cutouts, and slight compenstion in CAD is required.

Stupid question, but will this work with making acrylic plates and other plastics? I seem to like acrylic and plastic plates better, and this would be awesome if they work.

Yes it will, but I have to do some tests with my cutouts because I know the kerf with metals and plastics are different so I need to make sure that my cutouts will work with everything. All my cutouts are drawn to cherry spec, but that does not mean that they will be perfect first shot...

I've mentioned common acrylic kerf for the thickness used somewhere in the start of the thread. My experience, has been that using the Cherry spec results in slightly loose cutouts, and slight compenstion in CAD is required.

Ya, I need to figure out how to automate that modification to the cutouts so I can have someone specify their material and it will adjust the tolerances according to what the expected kerf will be. I have not done that yet and I need to think about how I am going to handle that...

just swinging by this thread to say this is a brilliant idea and would be a really helpful tool for a lot of people including myself. i'll keep an eye on this thread, good luck with the development! sorry i don't have anything useful to contribute as i know nothing about CAD...

Just a quick update since I have not given you guys an update in a little while. I got put a little behind because my server got hacked and was basically getting bot farmed. Teaches me for having a short dictionary word as my root password. Anyway, I am rebuilding my server environment and I am writing documentation for it at the same time (figured I would take this opportunity to make sure the setup is easily reproducible).

More delays and more work, but I am slowly making progress. I also have not had as much time the last couple days because our nights have been a bit tough with the baby and I have been exhausted. Hopefully I can get the server rebuilt tonight and I can start working on fun stuff again.

Hi everyone, I'm the author of this reddit post. I had been toying with the idea for a while, but unfortunately never saw this thread. I had a lot of spare time during my Christmas break, so I did some research and wrote some python code.My script will probably be annoying to use for most people, but it works. Some things are wrong with it (such as the cherry stab holes) but I'll be making a few improvements to it shortly.Please let me know if you have any questions. Thanks.

Hi everyone, I'm the author of this reddit post. I had been toying with the idea for a while, but unfortunately never saw this thread. I had a lot of spare time during my Christmas break, so I did some research and wrote some python code.My script will probably be annoying to use for most people, but it works. Some things are wrong with it (such as the cherry stab holes) but I'll be making a few improvements to it shortly.Please let me know if you have any questions. Thanks.

Thanks for jumping into this conversation. I am sure the two of us can give valuable feedback to each other. :) The guys who have been contributing to this thread have added a lot of very interesting insight that will probably help both of us.

Alright, so this update has been a long time in coming. I have been slowly chugging away at this, but the problem that I could not draw two CAD drawings at the same time really threw a wrench into my plans of having this available as a web application.

I am happy to announce that I have solved the problem and I now have a working application which can handle drawing more than one CAD at a time.

I will attach a flow diagram at the end, but here is the basic idea:- On my server I have a Tornado application which acts as my webserver. It basically hosts the website.- When new drawing requests come in, the Tornado server will automatically spin up a new LXC container (which is basically running the exact same Tornado application) as a worker for that request and the parent server directs the LXC worker to actually draw the CAD.- When the CAD is finished being drawn, the LXC worker will upload all the files into an AWS S3 bucket and will return to the parent server the metadata and where to find the files in S3.- When the client requests to download the CAD files, the request is sent directly to S3 and the files are retrieved from S3 without ever actually hitting my server.- In addition, if subsequent requests are made for the exact same layout (including holes, padding, etc, etc...) the server will see that the CAD has already been drawn, and it will return the request directly referencing the existing S3 files for that drawing. For a cache hit, the two have to be identical, so even if legends on the layout changes (which does not affect the resulting CAD), it will miss the cache and redraw from scratch.- Once an LXC worker has finished doing its work, it will automatically be destroyed.

That is basically it. Here is a graphic to illustrate what I specified above...

Alright, so this update has been a long time in coming. I have been slowly chugging away at this, but the problem that I could not draw two CAD drawings at the same time really threw a wrench into my plans of having this available as a web application.

I am happy to announce that I have solved the problem and I now have a working application which can handle drawing more than one CAD at a time.

I will attach a flow diagram at the end, but here is the basic idea:- On my server I have a Tornado application which acts as my webserver. It basically hosts the website.- When new drawing requests come in, the Tornado server will automatically spin up a new LXC container (which is basically running the exact same Tornado application) as a worker for that request and the parent server directs the LXC worker to actually draw the CAD.- When the CAD is finished being drawn, the LXC worker will upload all the files into an AWS S3 bucket and will return to the parent server the metadata and where to find the files in S3.- When the client requests to download the CAD files, the request is sent directly to S3 and the files are retrieved from S3 without ever actually hitting my server.- In addition, if subsequent requests are made for the exact same layout (including holes, padding, etc, etc...) the server will see that the CAD has already been drawn, and it will return the request directly referencing the existing S3 files for that drawing. For a cache hit, the two have to be identical, so even if legends on the layout changes (which does not affect the resulting CAD), it will miss the cache and redraw from scratch.- Once an LXC worker has finished doing its work, it will automatically be destroyed.

That is basically it. Here is a graphic to illustrate what I specified above...

Alright, so this update has been a long time in coming. I have been slowly chugging away at this, but the problem that I could not draw two CAD drawings at the same time really threw a wrench into my plans of having this available as a web application.

I am happy to announce that I have solved the problem and I now have a working application which can handle drawing more than one CAD at a time.

I will attach a flow diagram at the end, but here is the basic idea:- On my server I have a Tornado application which acts as my webserver. It basically hosts the website.- When new drawing requests come in, the Tornado server will automatically spin up a new LXC container (which is basically running the exact same Tornado application) as a worker for that request and the parent server directs the LXC worker to actually draw the CAD.- When the CAD is finished being drawn, the LXC worker will upload all the files into an AWS S3 bucket and will return to the parent server the metadata and where to find the files in S3.- When the client requests to download the CAD files, the request is sent directly to S3 and the files are retrieved from S3 without ever actually hitting my server.- In addition, if subsequent requests are made for the exact same layout (including holes, padding, etc, etc...) the server will see that the CAD has already been drawn, and it will return the request directly referencing the existing S3 files for that drawing. For a cache hit, the two have to be identical, so even if legends on the layout changes (which does not affect the resulting CAD), it will miss the cache and redraw from scratch.- Once an LXC worker has finished doing its work, it will automatically be destroyed.

That is basically it. Here is a graphic to illustrate what I specified above...

Soon™. I still have a lot of little things to take care of, so hopefully I can get through them quickly. The next couple months are a bit crazy around here because my wife is finishing osteo school. I have the baby a lot so she can study, so my time is pretty limited right now. As long as I don't hit any more show stoppers like this I should be able to get this out the door in the next couple weeks.

Sorry for the delays and all the #hype. I am excited about this too, but it has been slower progress than I was hoping.

Alright, so this update has been a long time in coming. I have been slowly chugging away at this, but the problem that I could not draw two CAD drawings at the same time really threw a wrench into my plans of having this available as a web application.

I am happy to announce that I have solved the problem and I now have a working application which can handle drawing more than one CAD at a time.

I will attach a flow diagram at the end, but here is the basic idea:- On my server I have a Tornado application which acts as my webserver. It basically hosts the website.- When new drawing requests come in, the Tornado server will automatically spin up a new LXC container (which is basically running the exact same Tornado application) as a worker for that request and the parent server directs the LXC worker to actually draw the CAD.- When the CAD is finished being drawn, the LXC worker will upload all the files into an AWS S3 bucket and will return to the parent server the metadata and where to find the files in S3.- When the client requests to download the CAD files, the request is sent directly to S3 and the files are retrieved from S3 without ever actually hitting my server.- In addition, if subsequent requests are made for the exact same layout (including holes, padding, etc, etc...) the server will see that the CAD has already been drawn, and it will return the request directly referencing the existing S3 files for that drawing. For a cache hit, the two have to be identical, so even if legends on the layout changes (which does not affect the resulting CAD), it will miss the cache and redraw from scratch.- Once an LXC worker has finished doing its work, it will automatically be destroyed.

That is basically it. Here is a graphic to illustrate what I specified above...

Soon. I still have a lot of little things to take care of, so hopefully I can get through them quickly. The next couple months are a bit crazy around here because my wife is finishing osteo school. I have the baby a lot so she can study, so my time is pretty limited right now. As long as I don't hit any more show stoppers like this I should be able to get this out the door in the next couple weeks.

Sorry for the delays and all the #hype. I am excited about this too, but it has been slower progress than I was hoping.

Bro, pretty much every project any of us does around here (including me) hits unforeseen snags and delays. I think it's awesome that you saw a need, said "I can do that", and got 'er done.

Alright, so this update has been a long time in coming. I have been slowly chugging away at this, but the problem that I could not draw two CAD drawings at the same time really threw a wrench into my plans of having this available as a web application.

I am happy to announce that I have solved the problem and I now have a working application which can handle drawing more than one CAD at a time.

I will attach a flow diagram at the end, but here is the basic idea:- On my server I have a Tornado application which acts as my webserver. It basically hosts the website.- When new drawing requests come in, the Tornado server will automatically spin up a new LXC container (which is basically running the exact same Tornado application) as a worker for that request and the parent server directs the LXC worker to actually draw the CAD.- When the CAD is finished being drawn, the LXC worker will upload all the files into an AWS S3 bucket and will return to the parent server the metadata and where to find the files in S3.- When the client requests to download the CAD files, the request is sent directly to S3 and the files are retrieved from S3 without ever actually hitting my server.- In addition, if subsequent requests are made for the exact same layout (including holes, padding, etc, etc...) the server will see that the CAD has already been drawn, and it will return the request directly referencing the existing S3 files for that drawing. For a cache hit, the two have to be identical, so even if legends on the layout changes (which does not affect the resulting CAD), it will miss the cache and redraw from scratch.- Once an LXC worker has finished doing its work, it will automatically be destroyed.

That is basically it. Here is a graphic to illustrate what I specified above...

Soon. I still have a lot of little things to take care of, so hopefully I can get through them quickly. The next couple months are a bit crazy around here because my wife is finishing osteo school. I have the baby a lot so she can study, so my time is pretty limited right now. As long as I don't hit any more show stoppers like this I should be able to get this out the door in the next couple weeks.

Sorry for the delays and all the #hype. I am excited about this too, but it has been slower progress than I was hoping.

Bro, pretty much every project any of us does around here (including me) hits unforeseen snags and delays. I think it's awesome that you saw a need, said "I can do that", and got 'er done.

haha, ya... i need to get this launched soon so i can start on my actual build projects. :P

Should a switch opening be rotated if (height > width)? I am going to be doing this for vertical keys (with or without stabilizers). Also, does the direction the switch is rotated matter? I know for normal switch opens it doesn't, but for ones with stabilizers, that may be a different story. I am currently planning to rotate clockwise, but I could change that...

Should a switch opening be rotated if (height > width)? I am going to be doing this for vertical keys (with or without stabilizers). Also, does the direction the switch is rotated matter? I know for normal switch opens it doesn't, but for ones with stabilizers, that may be a different story. I am currently planning to rotate clockwise, but I could change that...

Different keyboards (PCBs) do it different ways. I don't know that there is a best practice on which way to orient the stabilizer holes. :(

Also, some PCBs have the vertical switch aligned to the orientation of the stabilizer, and some keep the switch aligned with all the other switches in direction.

With my tool, users can specify that a switch should be rotated by 90 degrees by putting !r! in the key's label in the layout editor. I figured it would be an important option if they're using H cut outs with cherry stabilizers or if they are using Alps-like switches.

Btw, has anyone here tried my tool? I know you are all anxious to see swill's progress, but I'd like to know if mine is getting used atm.Would there be enough people to discuss it with if I made a separate thread?

With my tool, users can specify that a switch should be rotated by 90 degrees by putting !r! in the key's label in the layout editor. I figured it would be an important option if they're using H cut outs with cherry stabilizers or if they are using Alps-like switches.

Btw, has anyone here tried my tool? I know you are all anxious to see swill's progress, but I'd like to know if mine is getting used atm.Would there be enough people to discuss it with if I made a separate thread?

Thanks dude... I have already added the ability to use a {t:<0-3>} to keys to override the switch cutout type (not yet documented feature). I will just add additional options for people to override different features on a key by key basis. I may change it to be {_t:<0-3>} and then use {_r:<degrees>} for rotating. I will have to do two different rotation parameters though, one for switch and one for stabilizer so they can be rotated (or not) independently.

I think it would be a good idea to start a thread here for your tool. I know a lot of people are eager for my tool to be ready, but my code is taking longer than I was hoping. When you get an OP setup, link it in this thread so everyone here sees it too. Lots of people with good ideas in this thread and I am sure a bunch will be interested in playing with your tool too. :)

Edit: I just noticed you are from Ottawa. I am in Montreal. Ya Canada... :P

My tool now supports vertical keys (defaults to rotating the switch and stabilizer cutout 90º CW) as well as extra vertical spacing.

Here is a standard ISO layout without any modifications to the rotations:

[attachimg=1]

I have added support for some 'hidden' options by manually editing the resulting output from the keyboard-layout-editor:{_t:<0-3>} => change the switch cutout to use for the switch. Useful if you want to use the H cutout + one alps switch or something like that.{_r:<angle>} => rotate the switch cutout (does not rotate the stabilizer cutout){_rs:<angle>} => rotate the stabilizer cutout (does not rotate the switch cutout)

Here is a modified 50% ISO layout. I have changed the default rotation of the switch cutout for the ISO enter as well as flipping the default stabilizer cutout the other way. I used this code for the Enter: {x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25,_r:90,_rs:180},"Enter"

In addition I changed the switch cutout of the spacebar to have an Alps compatible switch opening using the following code: {w:6.25,_t:1},""

I have one more 'feature' I want to add before I get test plates cut. Basically, I want to add the concept of 'kerf' variable. I would like to have a dropdown of plate materials (probably combined with thickness), which will modify the kerf for the cutout. I am pretty sure the combination of material and thickness will dictate the kerf. Yes???

Also, will the kerf apply to all edges of the cutout. Yes right?

With a configurable kerf field we should be able to make the same cutouts work for all materials. I will be getting a test plate cut (hopefully in a couple materials) which will have all of my cutouts, orientations and sizes so I can verify that everything works as expected. I would also like to test 3-4 different kerf settings with each switch cutout as well so I can determine the best kerf settings for each material with my cutouts.

So just as an example, lets say I just have a square cutout and I have a kerf set to something stupid like .05mm. So then my 14mm square hole will be 13.9mm square since it will have taken .05mm off each edge. Make sense? Anything I am not thinking about here?

I found this which is kind of interesting for showing some basic kerf numbers for acrylic: http://www.redtorope.com/2011/07/laser-cutter-kerf-measurement/

For the switch openings I think it is pretty easy to do the kerf because I can just shrink the hole by <kerf>. This can be done by just subtracting the <kerf> from each cartesian coordinate (relative to center). It gets a little trickier with the stabilizer openings because the center of the stabilizer holes needs to stay at exactly <X> from switch center. I will need subtract kerf from some areas and add kerf to other areas to shrink the 'opening' while still keeping the centers of each of the major components in the right place. I will look into this tonight when my brain is not so foggy and I have a piece of paper in front of me so I can draw it...

I found this which is kind of interesting for showing some basic kerf numbers for acrylic: http://www.redtorope.com/2011/07/laser-cutter-kerf-measurement/

For the switch openings I think it is pretty easy to do the kerf because I can just shrink the hole by <kerf>. This can be done by just subtracting the <kerf> from each cartesian coordinate (relative to center). It gets a little trickier with the stabilizer openings because the center of the stabilizer holes needs to stay at exactly <X> from switch center. I will need subtract kerf from some areas and add kerf to other areas to shrink the 'opening' while still keeping the centers of each of the major components in the right place. I will look into this tonight when my brain is not so foggy and I have a piece of paper in front of me so I can draw it...

With regards to the kerf on the locations of the stab cutouts, just take half from every edge in relation to the center line. IE if the edges are 3mm from center line, 6mm apart, and the kerf is .05mm, then your distances would be 2.975mm from center or 5.95mm from each other but location of the hole is unchanged. This is one advantage of working from center lines as opposed to pitch.

I found this which is kind of interesting for showing some basic kerf numbers for acrylic: http://www.redtorope.com/2011/07/laser-cutter-kerf-measurement/

For the switch openings I think it is pretty easy to do the kerf because I can just shrink the hole by <kerf>. This can be done by just subtracting the <kerf> from each cartesian coordinate (relative to center). It gets a little trickier with the stabilizer openings because the center of the stabilizer holes needs to stay at exactly <X> from switch center. I will need subtract kerf from some areas and add kerf to other areas to shrink the 'opening' while still keeping the centers of each of the major components in the right place. I will look into this tonight when my brain is not so foggy and I have a piece of paper in front of me so I can draw it...

With regards to the kerf on the locations of the stab cutouts, just take half from every edge in relation to the center line. IE if the edges are 3mm from center line, 6mm apart, and the kerf is .05mm, then your distances would be 2.975mm from center or 5.95mm from each other but location of the hole is unchanged. This is one advantage of working from center lines as opposed to pitch.

Ya, this is basically how I have it setup. I am working from center lines, but it is an equation so I can use the same code for all center stem space bars.

So that brings up another question. So kerf is measured to be the width of the cut. If I am using both sides of the cut, I care about the whole kerf. Since I am only using one side of the cut, I really only care about half of the kerf. So... I am guessing that I should collect the kerf value from the UI as the real kerf (which a laser cutter will probably quote) and then divide that number by 2 to get the relative kerf associated with my (keep) side of the cut line. Yes?

I am guessing this makes the most sense from an input perspective.

Also, I am guessing I should make the plate outside edge to be the kerf size bigger than the dimensions given so once the plate is cut, its outside dimensions are actually the right size. Same with the mount holes. I should shrink them by 1/2 the kerf. Basically everything I cut should be corrected for kerf.

Accounting for kerf is like accounting for the width of a saw when cutting wood so if you want the outside edge to be cut to dimension (switch cut out), then I would imagine you'd bring in each cut by kerf/2

Just wondering but what are the chances that the files this app pukes out will be editable with SolidWorks?

The export formats result in a 3D solid. You could theoretically modify it after, but it will not do you any favours. You will not be able to modify what I produce other than to add (more likely remove) material.

Just wondering but what are the chances that the files this app pukes out will be editable with SolidWorks?

The export formats result in a 3D solid. You could theoretically modify it after, but it will not do you any favours. You will not be able to modify what I produce other than to add (more likely remove) material.

Yeah it would be to make holes bigger and then combine certain holes as well.

Just wondering but what are the chances that the files this app pukes out will be editable with SolidWorks?

The export formats result in a 3D solid. You could theoretically modify it after, but it will not do you any favours. You will not be able to modify what I produce other than to add (more likely remove) material.

Yeah it would be to make holes bigger and then combine certain holes as well.

Let me know if you see any problems with my calculations. I have implemented kerf for all my cutouts. Also, let me know if you think I should change the UI at all for this feature. I am considering adding a default kerf of something like 0.05, but I am not sure about that yet. Do we know what the kerf is for 1.6mm aluminum? Thx guys...

Let me know if you see any problems with my calculations. I have implemented kerf for all my cutouts. Also, let me know if you think I should change the UI at all for this feature. I am considering adding a default kerf of something like 0.05, but I am not sure about that yet. Do we know what the kerf is for 1.6mm aluminum? Thx guys...

I think a good choice for UI would be just to have the drop down select what the plate material will be, which will dictate what the kerf will be for the calculations on the back end. What those numbers are for different materials I can't tell ya, but I wouldn't think that it would vary to much from fab shop to fab shop.

Let me know if you see any problems with my calculations. I have implemented kerf for all my cutouts. Also, let me know if you think I should change the UI at all for this feature. I am considering adding a default kerf of something like 0.05, but I am not sure about that yet. Do we know what the kerf is for 1.6mm aluminum? Thx guys...

I think a good choice for UI would be just to have the drop down select what the plate material will be, which will dictate what the kerf will be for the calculations on the back end. What those numbers are for different materials I can't tell ya, but I wouldn't think that it would vary to much from fab shop to fab shop.

I was thinking of doing that, but then I would require the thickness field if they specify the material because the thickness affects the kerf value. I will talk to a couple shops and see what they quote me for kerf for the different materials and thicknesses.

Last night I spent a bunch of time trying to get the processes to be parallelized. I have been able to get the actual cad drawing to be done in sub processes and that is working great. However I still have not been able to figure out how to make the setup of the LXC containers no block my thread. All in all, I think this aspect of the code is good enough...

I did a test to build 5 plates at the same time with the following results. It definitely affects the build time of each plate, but it is still within reason. All the plates were built within about 2 minutes, so thats not too bad. Thats not too bad considering there was about 110 seconds of blocked time where only one plate is being worked on in that period.

Last night I spent a bunch of time trying to get the processes to be parallelized. I have been able to get the actual cad drawing to be done in sub processes and that is working great. However I still have not been able to figure out how to make the setup of the LXC containers no block my thread. All in all, I think this aspect of the code is good enough...

I did a test to build 5 plates at the same time with the following results. It definitely affects the build time of each plate, but it is still within reason. All the plates were built within about 2 minutes, so thats not too bad. Thats not too bad considering there was about 110 seconds of blocked time where only one plate is being worked on in that period.

Last night I spent a bunch of time trying to get the processes to be parallelized. I have been able to get the actual cad drawing to be done in sub processes and that is working great. However I still have not been able to figure out how to make the setup of the LXC containers no block my thread. All in all, I think this aspect of the code is good enough...

I did a test to build 5 plates at the same time with the following results. It definitely affects the build time of each plate, but it is still within reason. All the plates were built within about 2 minutes, so thats not too bad. Thats not too bad considering there was about 110 seconds of blocked time where only one plate is being worked on in that period.

They are all building the same hash because I was building the same layout on all machines. I currently have caching turned off for testing purposes...

Surely 10 seconds on the main thread isn't too bad? Or does this stop any user from using the tool?

From a UI perspective, a user will not notice anything. The UI will function as expected. This is not actually how it works, but this is the basic idea to illustrate the point.

You can think of the problem like this. Every request to build a CAD that gets sent to the server in the first 10 seconds while you are seeing the following 'processing' will delay your response by 10 seconds...

[attachimg=1]

That is the basic idea. It is actually based on the requests that have been submitted before your request and your 'create LXC worker' process is queued until their workers have been created, but the timing details are harder to understand if explained that way...

In short, it will only affect the build time of the CAD, not the functionality of the actual app...

Starting to get a test plate together for testing all the different cutouts and configuration options. I am planning to get a plate cut in 1.5mm aluminum and one in 5mm acrylic. I think this should give us a pretty good idea where we are at.

Below is the layout I am looking to do (I will add a bunch of different holes as well in both 2 and 3 mm (ish) so I can get a feel for how kerf affects them as well.

[attachimg=1]

Here is how I am rendering it. I am rendering it with all combinations of options that I can think of. I am also verifying the width of all the keys is actually correct.

[attachimg=2]

I am not cutting every single spacebar size. They all use the same formula, so as long as the Deskthority wiki is correct on spacing details, they should all be good. I don't actually have the spacebars to actually test those other random sized spacebars, so that is just going to have to be the way it is.

Here is the code I am using to generate the plate (so far, this will get customized a bit because I still need to draw a bunch of rows of holes):

Let me know if you guys have comments. If you notice something that I am missing, please let me know. Most of the layout keys I only did it two kerf values just to make sure I got at least one working version so I could test the actual layout of the keys. I am hoping I can get a good idea what kerf values will be ideal for the different materials with this.

Starting to get a test plate together for testing all the different cutouts and configuration options. I am planning to get a plate cut in 1.5mm aluminum and one in 5mm acrylic. I think this should give us a pretty good idea where we are at.

Below is the layout I am looking to do (I will add a bunch of different holes as well in both 2 and 3 mm (ish) so I can get a feel for how kerf affects them as well.

I am not cutting every single spacebar size. They all use the same formula, so as long as the Deskthority wiki is correct on spacing details, they should all be good. I don't actually have the spacebars to actually test those other random sized spacebars, so that is just going to have to be the way it is.

Here is the code I am using to generate the plate (so far, this will get customized a bit because I still need to draw a bunch of rows of holes):

Let me know if you guys have comments. If you notice something that I am missing, please let me know. Most of the layout keys I only did it two kerf values just to make sure I got at least one working version so I could test the actual layout of the keys. I am hoping I can get a good idea what kerf values will be ideal for the different materials with this.

What size space bars would you need?

I ordered the space bar pack on the toxic buy so I can loan you a few for testing.

8, 9 and 10 all have the same stem spacing, so if we have any of them, we can verify the stem spacing for all of them.

I know a lot of those are obscure, but I figured that if I had the specs for them I would add them. I am considering picking up a 4 unit space bar from the R5 leftovers (http://deskthority.net/wiki/File:HONEY_SPACE400_BLACK.png) just so I have one and can play with that for some interesting bottom row layouts with the enabler PCBs.

Starting to get a test plate together for testing all the different cutouts and configuration options. I am planning to get a plate cut in 1.5mm aluminum and one in 5mm acrylic. I think this should give us a pretty good idea where we are at.

snip

Let me know if you guys have comments. If you notice something that I am missing, please let me know. Most of the layout keys I only did it two kerf values just to make sure I got at least one working version so I could test the actual layout of the keys. I am hoping I can get a good idea what kerf values will be ideal for the different materials with this.

Starting to get a test plate together for testing all the different cutouts and configuration options. I am planning to get a plate cut in 1.5mm aluminum and one in 5mm acrylic. I think this should give us a pretty good idea where we are at.

snip

Let me know if you guys have comments. If you notice something that I am missing, please let me know. Most of the layout keys I only did it two kerf values just to make sure I got at least one working version so I could test the actual layout of the keys. I am hoping I can get a good idea what kerf values will be ideal for the different materials with this.

Nice! Where do you plan on getting it cut?

One of my local laser cutters. There are a few in Montreal. I have not used any of them yet, so I will try to compare them a bit and see which is best for small jobs.

Do you know if the kerf values for carbon fiber would be different? I'm guessing somewhere between aluminum and acrylic but I have no idea.

I may be wrong but I don't think carbon fibre cuts with laser due to catching on fire and other properties. It is also very hard on milling cutters, but cuts well but loose fibres from machining pose a health and environmental hazard to be dealt with. Water jet is pretty popular from my experience.

Do you know if the kerf values for carbon fiber would be different? I'm guessing somewhere between aluminum and acrylic but I have no idea.

I may be wrong but I don't think carbon fibre cuts with laser due to catching on fire and other properties. It is also very hard on milling cutters, but cuts well but loose fibres from machining pose a health and environmental hazard to be dealt with. Water jet is pretty popular from my experience.

Thanks guys. I can mold it, but I'm a total idiot when it comes to milling it.

Should, but the kerf for waterjet is much larger than laser so that would need to be compensated for.

Luckily we have fully configurable kerf settings now.

On that note, everything has been updated in my tool to reflect the kerf settings. Tonight I added the kerf setting calculation to the overall outside dimensions of the plate as well as the mount holes and their placement. The kerf settings are now addressed on all cutout edges supported by the tool.

I am traveling for work all week next week. I am going to see if I can get the sample plate cut completely remotely while I am out of town, but we will see. I just saw on the companies website I was planning to use that they don't laser metal (only CNC). I could get the acrylic done there though. I will check with other shops before I decide what I will do. I may put up what I have so people can play and I will just put a disclaimer that the cutouts are untested.

Should, but the kerf for waterjet is much larger than laser so that would need to be compensated for.

Luckily we have fully configurable kerf settings now.

On that note, everything has been updated in my tool to reflect the kerf settings. Tonight I added the kerf setting calculation to the overall outside dimensions of the plate as well as the mount holes and their placement. The kerf settings are now addressed on all cutout edges supported by the tool.

I am traveling for work all week next week. I am going to see if I can get the sample plate cut completely remotely while I am out of town, but we will see. I just saw on the companies website I was planning to use that they don't laser metal (only CNC). I could get the acrylic done there though. I will check with other shops before I decide what I will do. I may put up what I have so people can play and I will just put a disclaimer that the cutouts are untested.

You should put it up. I'd like to play with it, even if it might not actually be accurate.

It will take 24-48 hours for the DNS to propagate to make this link work for everyone, but the DNS has been changed to point to the tool.

I have added a disclaimer at the top noting that the switch cutouts are still untested, so be aware of that... If you cut a plate before I remove that disclaimer, you are doing so at your own risk. Haha, if you do, please let us know how it went. :P

It will take 24-48 hours for the DNS to propagate to make this link work for everyone, but the DNS has been changed to point to the tool.

I have added a disclaimer at the top noting that the switch cutouts are still untested, so be aware of that... If you cut a plate before I remove that disclaimer, you are doing so at your own risk. Haha, if you do, please let us know how it went. :P

It will take 24-48 hours for the DNS to propagate to make this link work for everyone, but the DNS has been changed to point to the tool.

I have added a disclaimer at the top noting that the switch cutouts are still untested, so be aware of that... If you cut a plate before I remove that disclaimer, you are doing so at your own risk. Haha, if you do, please let us know how it went. :P

I think I have finished building my test plate. I am going to try to get it cut next week.

Basically the only addition is the 2mm and 3mm holes at the bottom. They start with 0.0 kerf and each section increases the kerf by 0.05mm for a final of 0.35mm kerf. Hopefully this will give me enough data for both aluminum and acrylic for normal holes as well as holes that I can tap.

It will take 24-48 hours for the DNS to propagate to make this link work for everyone, but the DNS has been changed to point to the tool.

I have added a disclaimer at the top noting that the switch cutouts are still untested, so be aware of that... If you cut a plate before I remove that disclaimer, you are doing so at your own risk. Haha, if you do, please let us know how it went. :P

Let me know if you have any questions, problems, etc...

Sweet..... i'm already fiddling with it =)Thanks so much for doing this.

It will take 24-48 hours for the DNS to propagate to make this link work for everyone, but the DNS has been changed to point to the tool.

I have added a disclaimer at the top noting that the switch cutouts are still untested, so be aware of that... If you cut a plate before I remove that disclaimer, you are doing so at your own risk. Haha, if you do, please let us know how it went. :P

Let me know if you have any questions, problems, etc...

Sweet..... i'm already fiddling with it =)Thanks so much for doing this.

when building a 104-key plate, it doesn't truncate the plate at the top (above the numpad, to the right of the Pause key)

This is a specific use case, where the plate isn't wanted to be exactly rectangular.

I had not thought of this use case. Is there a specific case you are referring to that has that setup?

Most 104-key keyboards, Filco, Rosewill, etc, have this area of the plate cut out. It's where the controller electronics are normally located, instead of, as in a TKL, the area above the cursor arrows.

when building a 104-key plate, it doesn't truncate the plate at the top (above the numpad, to the right of the Pause key)

This is a specific use case, where the plate isn't wanted to be exactly rectangular.

I had not thought of this use case. Is there a specific case you are referring to that has that setup?

Most 104-key keyboards, Filco, Rosewill, etc, have this area of the plate cut out. It's where the controller electronics are normally located, instead of, as in a TKL, the area above the cursor arrows.

Ahhh. Gotcha. I have not taken apart a full sized, so I did not realize that. Yes, when I do the mount hole support for existing full sized cases, I will add this cutout to that case type. I will slowly add case types with specific mount hole locations and static sized plates and you will basically be able to work in those constraints.

I am realizing that people will probably want to share their build links on my site. I need to do a bit of work, but once a plate has been drawn, I should be able to support that with my caching feature since it is a persistent server side cache.

Haha, ergodox is not (yet) supported as you just found out. I have not even looked at solving for rotated groups (although I do have the building blocks in place to handle it when I do look at it). I also have spend some more time looking into the 'absolute positioning' stuff that the keyboard layout editor can do because right now I am building everything using relative positioning (how most of the keyboard-layout-editor works), but that tool also allows for keys to be absolute positioned, which I need to spend some time figuring out how to support. Both of the thumb clusters of the ergodox layout are absolute positioned, so you can see how poorly I am handling that right now. :)

Other than the initial switch cutout in the top left of both hands, I am actually very surprised how well the alphas are supported. Thats makes me happy. It should not be too difficult for me to get the alphas working well for the dox. Then I just need to add rotational groups and absolute positioning and I will be rollin.

Apart from the crazy non-rectangular stuff, it seems the tool is very robust. This should help people get started with their plate designs.

Thanks for all your hard work, swill!

Awesome. :) BTW, if you can break it (like Evo_Spec did with the ergodox layout), let me know and I will try to get any problems resolved.

I have a few things I would like to get added in the near future:- for the sandwich case, make all the different layers available. switch plate, closed layer, open layer (for usb plug) and bottom plate.- add the ability for people to link to their build with all of the metadata filled in and the plate already built. - break out the x and y padding values into 4 values for top, bottom, left, right... this will allow for you to put more padding on say the bottom of the plate, but keep the other 3 sides consistent with a padding value. i have to modify the way I place my sandwhich case holes though if I do this since I am putting the holes in the center of the padding and that won't look good.- start adding support for more case types with their respective mount holes. I will probably start with the smaller cases like the poker case to get started and then work my way up through TKL and such... for the TKL, I may just do a universal one that handles all the different mount holes, but we will see...

Make sure you are using FreeCAD from source to do this because there is a bug with 'fillets' in FreeCAD 14 for this. Basically, the fillets in opposing corners are actually drawn inside the plate when you export to .dxf. You will need to build FreeCAD from source because this issue has been fixed upstream, but it has not been released in a package yet. When it is released in a package I will allow for exporting of .dxf. It is slated for the end of Feb right now that it would be released...

The three files are all the same file, but just in different formats. As JD mentioned, you can use FreeCAD, but you will have to build from source since there is a fix to an issue with fillets upstream that is not available yet which fixes the rounded corners.

If you don't use rounded corners, then yes just using FreeCAD 14 is the easiest way...

So I've been lurking and signed up because of this thread. Awesome resources man, really appreciate the website. With that said I want to be the test dummy for this CAD file. Any suggestions on an online company that can cut aluminum?

So I've been lurking and signed up because of this thread. Awesome resources man, really appreciate the website. With that said I want to be the test dummy for this CAD file. Any suggestions on an online company that can cut aluminum?

I think BigBlueSaw will? You could always check around your area for shops or makerspaces as well.

So I've been lurking and signed up because of this thread. Awesome resources man, really appreciate the website. With that said I want to be the test dummy for this CAD file. Any suggestions on an online company that can cut aluminum?

I think BigBlueSaw will? You could always check around your area for shops or makerspaces as well.

Well i sent it out to bigbluesaw. Just waiting for a response back with price.

I forgot to mention this earlier. I would recommend putting at least a kerf value of 0.05mm. I would ask them what the expected kerf value is for cutting and adjust according to that. If they say that kerf is about 0.1mm, then maybe set it to 0.075mm or something like that. You should definitely account for kerf in the drawing though. Sorry I don't have real numbers for you yet...

So I've been lurking and signed up because of this thread. Awesome resources man, really appreciate the website. With that said I want to be the test dummy for this CAD file. Any suggestions on an online company that can cut aluminum?

Glad my work has brought someone out of lurker status. :) Welcome...

This is a great community, but hold on tight to your wallet. Wallethack is real...

So I've been lurking and signed up because of this thread. Awesome resources man, really appreciate the website. With that said I want to be the test dummy for this CAD file. Any suggestions on an online company that can cut aluminum?

Glad my work has brought someone out of lurker status. :) Welcome...

This is a great community, but hold on tight to your wallet. Wallethack is real...

Why are you selecting the last item from wants? I think surely you should buy the item you've wanted the longest, i.e. the item at index[0]. Also, surely if the pay period is 10 days but it is 1 day before your pay period, you wouldn't be able to buy more keyboards and stuff for a whole 9 days after your pay packet. The travesty! Why am I code reviewing a piece of joke code... je suis bored.

I actually 3D printed the layout here,http://www.keyboard-layout-editor.com/#/layouts/41278b39d92833e044007ab46bb8a9f8 (http://www.keyboard-layout-editor.com/#/layouts/41278b39d92833e044007ab46bb8a9f8)but it staggered the top function row to the left, instead of the columnar arrangement I had designed in the layout designer. The right side is also cut off prematurely.

What can I do to remedy this? Thanks for the excellent tool, by the way. With a little tweaking, this will be the greatest prototyping tool ever!

So I've been lurking and signed up because of this thread. Awesome resources man, really appreciate the website. With that said I want to be the test dummy for this CAD file. Any suggestions on an online company that can cut aluminum?

Glad my work has brought someone out of lurker status. :) Welcome...

This is a great community, but hold on tight to your wallet. Wallethack is real...

Why are you selecting the last item from wants? I think surely you should buy the item you've wanted the longest, i.e. the item at index[0]. Also, surely if the pay period is 10 days but it is 1 day before your pay period, you wouldn't be able to buy more keyboards and stuff for a whole 9 days after your pay packet. The travesty! Why am I code reviewing a piece of joke code... je suis bored.

haha, there are a few things 'wrong' with that code from a correctness perspective. I actually wrote it very quickly to illustrate a point. :)

technically i should be looping through all of the 'wants' from the first item in the list and checking if i can afford anything. however, the problem with this is if i want to buy something that costs more than what i get paid for in a single pay period i will never afford it because i will be reducing my funds on little things every month and not actually accumulating enough funds for my big ticket item. hmm, working in a budget into my wallethack algorithm seems a bit disingenuous to the actual problem. the reason wallethack exists is because we buy things without always budgeting for them... oh the paradox of geekhack... :P

I actually 3D printed the layout here,http://www.keyboard-layout-editor.com/#/layouts/41278b39d92833e044007ab46bb8a9f8 (http://www.keyboard-layout-editor.com/#/layouts/41278b39d92833e044007ab46bb8a9f8)but it staggered the top function row to the left, instead of the columnar arrangement I had designed in the layout designer. The right side is also cut off prematurely.

What can I do to remedy this? Thanks for the excellent tool, by the way. With a little tweaking, this will be the greatest prototyping tool ever!

Yes, I am aware of some issues when working with layouts that do not have rows of keys one below the next. I have to look at the code to understand why the layout is failing on these layouts.

I actually 3D printed the layout here,http://www.keyboard-layout-editor.com/#/layouts/41278b39d92833e044007ab46bb8a9f8 (http://www.keyboard-layout-editor.com/#/layouts/41278b39d92833e044007ab46bb8a9f8)but it staggered the top function row to the left, instead of the columnar arrangement I had designed in the layout designer. The right side is also cut off prematurely.

What can I do to remedy this? Thanks for the excellent tool, by the way. With a little tweaking, this will be the greatest prototyping tool ever!

I modified the 'x' and 'y' offsets on the first column and row to put them up to the edge. I then tested it and it worked better. You can adding that padding using the actual padding feature in my tool if you want it.

Here is my version of your layout: http://www.keyboard-layout-editor.com/#/layouts/b90aac02cbfd2217364f2ad8b55a600d

Here is the result:[attachimg=1]

I will look into why the 'x' at the start of the line is not working correctly.

So I've been lurking and signed up because of this thread. Awesome resources man, really appreciate the website. With that said I want to be the test dummy for this CAD file. Any suggestions on an online company that can cut aluminum?

Glad my work has brought someone out of lurker status. :) Welcome...

This is a great community, but hold on tight to your wallet. Wallethack is real...

Why are you selecting the last item from wants? I think surely you should buy the item you've wanted the longest, i.e. the item at index[0]. Also, surely if the pay period is 10 days but it is 1 day before your pay period, you wouldn't be able to buy more keyboards and stuff for a whole 9 days after your pay packet. The travesty! Why am I code reviewing a piece of joke code... je suis bored.

haha, there are a few things 'wrong' with that code from a correctness perspective. I actually wrote it very quickly to illustrate a point. :)

technically i should be looping through all of the 'wants' from the first item in the list and checking if i can afford anything. however, the problem with this is if i want to buy something that costs more than what i get paid for in a single pay period i will never afford it because i will be reducing my funds on little things every month and not actually accumulating enough funds for my big ticket item. hmm, working in a budget into my wallethack algorithm seems a bit disingenuous to the actual problem. the reason wallethack exists is because we buy things without always budgeting for them... oh the paradox of geekhack... :P

Yeah, I wasn't criticising you for writing bad code when it was just for a joke. I thought it was pretty funny, but I was just bored enough to nit-pick it :)

Though I can tell you're a hardcore pythoner, those pythonic 'and' statements :D

So I've been lurking and signed up because of this thread. Awesome resources man, really appreciate the website. With that said I want to be the test dummy for this CAD file. Any suggestions on an online company that can cut aluminum?

Glad my work has brought someone out of lurker status. :) Welcome...

This is a great community, but hold on tight to your wallet. Wallethack is real...

Why are you selecting the last item from wants? I think surely you should buy the item you've wanted the longest, i.e. the item at index[0]. Also, surely if the pay period is 10 days but it is 1 day before your pay period, you wouldn't be able to buy more keyboards and stuff for a whole 9 days after your pay packet. The travesty! Why am I code reviewing a piece of joke code... je suis bored.

haha, there are a few things 'wrong' with that code from a correctness perspective. I actually wrote it very quickly to illustrate a point. :)

technically i should be looping through all of the 'wants' from the first item in the list and checking if i can afford anything. however, the problem with this is if i want to buy something that costs more than what i get paid for in a single pay period i will never afford it because i will be reducing my funds on little things every month and not actually accumulating enough funds for my big ticket item. hmm, working in a budget into my wallethack algorithm seems a bit disingenuous to the actual problem. the reason wallethack exists is because we buy things without always budgeting for them... oh the paradox of geekhack... :P

Yeah, I wasn't criticising you for writing bad code when it was just for a joke. I thought it was pretty funny, but I was just bored enough to nit-pick it :)

Though I can tell you're a hardcore pythoner, those pythonic 'and' statements :D

I know. I was just playing. :) I love the 'and' and 'in' statements. So easy to read...

It's crazy how hard of a time I'm having getting any of these companies to contact me back with pricing. Some folks just don't want to make money i suppose.

Which companies?

Most metal shops do NOT want to deal with one-offs for a first time customer. 90% of them won't even respond to you. It's not about making money for them, they feel like they are wasting their time if you're not ordering multiple units, and on a regular basis.

I take back what I said. Bigbluesaw got back in touch with me and even made the CAD file with a blank bottom plate with just the 3mm holes for a sandwich style case. for 1 set of both parts its $92 If I get 5 sets of both plates though its only 44.92 So its either order one for the price I could get 2 for if I order 5 to test out the tool, or I get 5 sets and pray that its all right and then have materials to build 5 keyboards if I want. Also let me add that this is using 6061 aluminum .063" thick. I'm waiting back to find out how much kerf will be expected so I can adjust accordingly.

I take back what I said. Bigbluesaw got back in touch with me and even made the CAD file with a blank bottom plate with just the 3mm holes for a sandwich style case. for 1 set of both parts its $92 If I get 5 sets of both plates though its only 44.92 So its either order one for the price I could get 2 for if I order 5 to test out the tool, or I get 5 sets and pray that its all right and then have materials to build 5 keyboards if I want. Also let me add that this is using 6061 aluminum .063" thick. I'm waiting back to find out how much kerf will be expected so I can adjust accordingly.

Man they are quick getting back. He said they automatically adjust for kerf when cutting parts.

Awesome... Did you tell them that you designed your plate using my tool? About 20 minutes ago I got a small donation through the plate building tool from Big Blue Saw. Apparently they know my plate building too exists now. :)

So did you leave the kerf value as 0.0 when you built the plate and you will just let them to adjust as needed?

Alright cool, thanks. And yeah I love the FC660 but it seems massdrop is the only way to get it, and I'd rather spend 8 weeks building my own instead of waiting for it to ship from them. After this it will be time to do a fullsize kb for work.

Man they are quick getting back. He said they automatically adjust for kerf when cutting parts.

I'd be careful about that. I just had big blue saw cut a case for my keyboard out of acrylic (3mm top, .75" mid, 3mm bottom) and it came out pretty far off which I assume is because of kerf issues. It's like they cut the inside cutout on the outside of my line so the opening for the keyboard top plate was much larger than I expected. I also tried to use .75" acrylic for the center layer and it varied in thickness across a 6" span from 3/4" to 3/4+3/32 which is insane. It turned into a big waste of money.

I expect thin metal will be better but I wouldn't discount kerf issues and peoples understanding of what the plans are trying to convey...

Man they are quick getting back. He said they automatically adjust for kerf when cutting parts.

I'd be careful about that. I just had big blue saw cut a case for my keyboard out of acrylic (3mm top, .75" mid, 3mm bottom) and it came out pretty far off which I assume is because of kerf issues. It's like they cut the inside cutout on the outside of my line so the opening for the keyboard top plate was much larger than I expected. I also tried to use .75" acrylic for the center layer and it varied in thickness across a 6" span from 3/4" to 3/4+3/32 which is insane. It turned into a big waste of money.

I expect thin metal will be better but I wouldn't discount kerf issues and peoples understanding of what the plans are trying to convey...

Thanks for sharing your experience. I think kerf is a bit tricker of an issue with complex cuts than people expect. The kerf does not always behave the same depending on where the different cutout and such is around the shape. Sometimes you add kerf/2 and other times you delete kerf/2. I built this tool to account for kerf so we can try to mitigate these problems, but I still have to get my test plates cut to know for sure. I will get them cut in acrylic first since I think I can find a shop to do that for me. Unfortunately I need my stuff done in aluminum or stainless steel because I will be using the enabler pcbs.

If you are testing cutouts from the tool I would suggest either stainless or aluminum if the purpose is to test the accuracy of the tool. Laser cutting acrylic is not near as precise as aluminum or stainless.

I actually 3D printed the layout here,http://www.keyboard-layout-editor.com/#/layouts/41278b39d92833e044007ab46bb8a9f8 (http://www.keyboard-layout-editor.com/#/layouts/41278b39d92833e044007ab46bb8a9f8)but it staggered the top function row to the left, instead of the columnar arrangement I had designed in the layout designer. The right side is also cut off prematurely.

What can I do to remedy this? Thanks for the excellent tool, by the way. With a little tweaking, this will be the greatest prototyping tool ever!

I modified the 'x' and 'y' offsets on the first column and row to put them up to the edge. I then tested it and it worked better. You can adding that padding using the actual padding feature in my tool if you want it.

Here is my version of your layout: http://www.keyboard-layout-editor.com/#/layouts/b90aac02cbfd2217364f2ad8b55a600d

I will look into why the 'x' at the start of the line is not working correctly.

Thanks for pointing this out to me...

Thanks a bunch, man! I really appreciate developers interfacing so quickly with their communities. My 3-D printed prototypes have been a big hit here at the office, and I can't wait to get the final product finished.

If you are testing cutouts from the tool I would suggest either stainless or aluminum if the purpose is to test the accuracy of the tool. Laser cutting acrylic is not near as precise as aluminum or stainless.

Ya my goal is to test with both acrylic and aluminum, but I need to find a local shop who does aluminum who will return my emails. :)

Alright so I'm going to pull the trigger with big blue saw and have faith in this mans ability to do this right. It'd be best for him if it works out because he'd be able to drum up some more business.

Alright so I'm going to pull the trigger with big blue saw and have faith in this mans ability to do this right. It'd be best for him if it works out because he'd be able to drum up some more business.

Maybe mention to him that my tool will automatically account for kerf if we know how big it is. He may not be used to that.

So I've been going back and forth with Simon over at bigbluesaw to make sure we can make this happen. I sent him the data sheet on cherry switches (with tolerances allowed) and I'm also going to send a few spare plate mount switches his way so they can do a test fit before they cut out an entire plate and adjust accordingly. He's definitely going way out of his way to help me out.

So I've been going back and forth with Simon over at bigbluesaw to make sure we can make this happen. I sent him the data sheet on cherry switches (with tolerances allowed) and I'm also going to send a few spare plate mount switches his way so they can do a test fit before they cut out an entire plate and adjust accordingly. He's definitely going way out of his way to help me out.

Ya. I have also been in touch with him as well. I think he sees value in catering to our needs here at GH, which is pretty awesome. If we can get the details sorted out so we can confidently use their services and know what settings and such to build our cads with, they will be a great resource for us.

So I've been going back and forth with Simon over at bigbluesaw to make sure we can make this happen. I sent him the data sheet on cherry switches (with tolerances allowed) and I'm also going to send a few spare plate mount switches his way so they can do a test fit before they cut out an entire plate and adjust accordingly. He's definitely going way out of his way to help me out.

That's great! Sounds like they could be a valuable resource in the future :)

I'd be careful about that. I just had big blue saw cut a case for my keyboard out of acrylic (3mm top, .75" mid, 3mm bottom) and it came out pretty far off which I assume is because of kerf issues. It's like they cut the inside cutout on the outside of my line so the opening for the keyboard top plate was much larger than I expected. I also tried to use .75" acrylic for the center layer and it varied in thickness across a 6" span from 3/4" to 3/4+3/32 which is insane. It turned into a big waste of money.

I'd be careful about that. I just had big blue saw cut a case for my keyboard out of acrylic (3mm top, .75" mid, 3mm bottom) and it came out pretty far off which I assume is because of kerf issues. It's like they cut the inside cutout on the outside of my line so the opening for the keyboard top plate was much larger than I expected. I also tried to use .75" acrylic for the center layer and it varied in thickness across a 6" span from 3/4" to 3/4+3/32 which is insane. It turned into a big waste of money.

What's this problem I've been having? Here's (http://www.keyboard-layout-editor.com/#/layouts/d2ac55b0ee0df352b8b09e236c2bb6bc) the layout

Geez dude, read the instructions... :P Haha, I am totally joking and just messing with you. Yes, like phishy said, you need to paste in the Raw Data for your layout. You can then modify the raw data if you need to. Click the "?" next to that field to get more details of what types of things you can change by modifying the raw data in my tool... Let me know if you have questions. I am not actually an ass and will do my best to answer any questions. :)

What's this problem I've been having? Here's (http://www.keyboard-layout-editor.com/#/layouts/d2ac55b0ee0df352b8b09e236c2bb6bc) the layout

Geez dude, read the instructions... :P Haha, I am totally joking and just messing with you. Yes, like phishy said, you need to paste in the Raw Data for your layout. You can then modify the raw data if you need to. Click the "?" next to that field to get more details of what types of things you can change by modifying the raw data in my tool... Let me know if you have questions. I am not actually an ass and will do my best to answer any questions. :)

So I got this email back from big blue saw regarding a quote using this:"Hi Harwood,

The keyboard plate building tool should have vector export soon; let's wait for that. It makes it much easier to give a quote/make the part."

I quickly searched through the thread and couldn't find anything about this, is that in progress now?

Yes, I am working on this. I should be able to support the DXF format as long as you don't use rounded corners on the plate. Currently there is a bug in the DXF export lib which draws two of the 4 rounded corners correctly and two as circle cutouts in the corner of the plate. I am doing some testing with the nightly builds of the cad core to see if I can get this working. Hopefully I will have this out soon. There are complications with the fact that I am not using a GUI as well, so I have to patch the DXF library just to be able to use it. In short, I am working on it... :)

For now, if you create a layout without rounded corners in my builder and then open it in FreeCAD and export as DXF it will work.

I believe swill and bigbluesaw have been having conversations behind the scenes. Curious to see what comes out of this collaboration. ^_^

Now this is now hype I can get on board with.

:) Yes, bigbluesaw and I have been exchanging emails to try to simplify the process for everyone from design to finished product. We have been focusing mainly on finding ways for us to have predictable and repeatable results that are within our tolerances. The main complication with this is the nozzle wear in the waterjet process. The same design could produce different results because the kerf size will be different depending on the nozzle wear.

At this point we have not come up with a definitive solution, but he is able to make parts to fit if he has the mating piece. I may just have to stock him with both MX and Alps switches and some stabilizers that he can use for reference.

The laser cutting process is more predictable, but that process is only available for acrylic in this case.

We are working to try to make sure that people using the tool and their services will get the expected results without having to break their brains over it. :)

I believe swill and bigbluesaw have been having conversations behind the scenes. Curious to see what comes out of this collaboration. ^_^

Now this is now hype I can get on board with.

:) Yes, bigbluesaw and I have been exchanging emails to try to simplify the process for everyone from design to finished product. We have been focusing mainly on finding ways for us to have predictable and repeatable results that are within our tolerances. The main complication with this is the nozzle wear in the waterjet process. The same design could produce different results because the kerf size will be different depending on the nozzle wear.

At this point we have not come up with a definitive solution, but he is able to make parts to fit if he has the mating piece. I may just have to stock him with both MX and Alps switches and some stabilizers that he can use for reference.

The laser cutting process is more predictable, but that process is only available for acrylic in this case.

We are working to try to make sure that people using the tool and their services will get the expected results without having to break their brains over it. :)

I'm heading to the post office today to send out 5-10 MX switches to him. Hopefully this well help in the whole process. I didn't even think about stabilizers though. Have yet to order any for my own build so maybe I'll grab a few extra and get those over aswell.

I believe swill and bigbluesaw have been having conversations behind the scenes. Curious to see what comes out of this collaboration. ^_^

Now this is now hype I can get on board with.

:) Yes, bigbluesaw and I have been exchanging emails to try to simplify the process for everyone from design to finished product. We have been focusing mainly on finding ways for us to have predictable and repeatable results that are within our tolerances. The main complication with this is the nozzle wear in the waterjet process. The same design could produce different results because the kerf size will be different depending on the nozzle wear.

At this point we have not come up with a definitive solution, but he is able to make parts to fit if he has the mating piece. I may just have to stock him with both MX and Alps switches and some stabilizers that he can use for reference.

The laser cutting process is more predictable, but that process is only available for acrylic in this case.

We are working to try to make sure that people using the tool and their services will get the expected results without having to break their brains over it. :)

I'm heading to the post office today to send out 5-10 MX switches to him. Hopefully this well help in the whole process. I didn't even think about stabilizers though. Have yet to order any for my own build so maybe I'll grab a few extra and get those over aswell.

really looking forward to seeing how this turns out. What hole style are you using.

I believe swill and bigbluesaw have been having conversations behind the scenes. Curious to see what comes out of this collaboration. ^_^

Now this is now hype I can get on board with.

:) Yes, bigbluesaw and I have been exchanging emails to try to simplify the process for everyone from design to finished product. We have been focusing mainly on finding ways for us to have predictable and repeatable results that are within our tolerances. The main complication with this is the nozzle wear in the waterjet process. The same design could produce different results because the kerf size will be different depending on the nozzle wear.

At this point we have not come up with a definitive solution, but he is able to make parts to fit if he has the mating piece. I may just have to stock him with both MX and Alps switches and some stabilizers that he can use for reference.

The laser cutting process is more predictable, but that process is only available for acrylic in this case.

We are working to try to make sure that people using the tool and their services will get the expected results without having to break their brains over it. :)

I'm heading to the post office today to send out 5-10 MX switches to him. Hopefully this well help in the whole process. I didn't even think about stabilizers though. Have yet to order any for my own build so maybe I'll grab a few extra and get those over aswell.

really looking forward to seeing how this turns out. What hole style are you using.

Ok, thats ****ing awesome. Well done dude. Thanks for sharing back your experience. This is really cool to see. :) Love that people are already trying 3d printing of this stuff. :) Did you use the STP file?

Ok, thats ****ing awesome. Well done dude. Thanks for sharing back your experience. This is really cool to see. :) Love that people are already trying 3d printing of this stuff. :) Did you use the STP file?

I believe swill and bigbluesaw have been having conversations behind the scenes. Curious to see what comes out of this collaboration. ^_^

Now this is now hype I can get on board with.

:) Yes, bigbluesaw and I have been exchanging emails to try to simplify the process for everyone from design to finished product. We have been focusing mainly on finding ways for us to have predictable and repeatable results that are within our tolerances. The main complication with this is the nozzle wear in the waterjet process. The same design could produce different results because the kerf size will be different depending on the nozzle wear.

At this point we have not come up with a definitive solution, but he is able to make parts to fit if he has the mating piece. I may just have to stock him with both MX and Alps switches and some stabilizers that he can use for reference.

The laser cutting process is more predictable, but that process is only available for acrylic in this case.

We are working to try to make sure that people using the tool and their services will get the expected results without having to break their brains over it. :)

I'm heading to the post office today to send out 5-10 MX switches to him. Hopefully this well help in the whole process. I didn't even think about stabilizers though. Have yet to order any for my own build so maybe I'll grab a few extra and get those over aswell.

Are you having him ship back the switches after? I am going to desolder some alps switches from one of my boards and send them to him as well as some different stabilizers for him to keep so he can verify mating on all subsequent orders from us. If he is sending back your switches, I will also send him some MX switches.

Just out of curiosity. What would you estimate the cost of that prototype was? I don't know why, but I am obsessed with bringing down the cost of prototyping. That was one of the main motivations of my 'minimal case'. It probably stems from my big imagination and small amount of disposable income I can justify for this hobby.

I believe swill and bigbluesaw have been having conversations behind the scenes. Curious to see what comes out of this collaboration. ^_^

Now this is now hype I can get on board with.

:) Yes, bigbluesaw and I have been exchanging emails to try to simplify the process for everyone from design to finished product. We have been focusing mainly on finding ways for us to have predictable and repeatable results that are within our tolerances. The main complication with this is the nozzle wear in the waterjet process. The same design could produce different results because the kerf size will be different depending on the nozzle wear.

At this point we have not come up with a definitive solution, but he is able to make parts to fit if he has the mating piece. I may just have to stock him with both MX and Alps switches and some stabilizers that he can use for reference.

The laser cutting process is more predictable, but that process is only available for acrylic in this case.

We are working to try to make sure that people using the tool and their services will get the expected results without having to break their brains over it. :)

I'm heading to the post office today to send out 5-10 MX switches to him. Hopefully this well help in the whole process. I didn't even think about stabilizers though. Have yet to order any for my own build so maybe I'll grab a few extra and get those over aswell.

Are you having him ship back the switches after? I am going to desolder some alps switches from one of my boards and send them to him as well as some different stabilizers for him to keep so he can verify mating on all subsequent orders from us. If he is sending back your switches, I will also send him some MX switches.

No I'm going to let him keep them. I'm sending 10 switches, which is like 4 bucks worth. This way he has plenty around to spot check the cuts for everyone going forward. Do you know when you plan on sending some stabilizers? If not before I place an order for my plate, maybe I'll just buy a few extra and send them out to him.

I believe swill and bigbluesaw have been having conversations behind the scenes. Curious to see what comes out of this collaboration. ^_^

Now this is now hype I can get on board with.

:) Yes, bigbluesaw and I have been exchanging emails to try to simplify the process for everyone from design to finished product. We have been focusing mainly on finding ways for us to have predictable and repeatable results that are within our tolerances. The main complication with this is the nozzle wear in the waterjet process. The same design could produce different results because the kerf size will be different depending on the nozzle wear.

At this point we have not come up with a definitive solution, but he is able to make parts to fit if he has the mating piece. I may just have to stock him with both MX and Alps switches and some stabilizers that he can use for reference.

The laser cutting process is more predictable, but that process is only available for acrylic in this case.

We are working to try to make sure that people using the tool and their services will get the expected results without having to break their brains over it. :)

I'm heading to the post office today to send out 5-10 MX switches to him. Hopefully this well help in the whole process. I didn't even think about stabilizers though. Have yet to order any for my own build so maybe I'll grab a few extra and get those over aswell.

Are you having him ship back the switches after? I am going to desolder some alps switches from one of my boards and send them to him as well as some different stabilizers for him to keep so he can verify mating on all subsequent orders from us. If he is sending back your switches, I will also send him some MX switches.

No I'm going to let him keep them. I'm sending 10 switches, which is like 4 bucks worth. This way he has plenty around to spot check the cuts for everyone going forward. Do you know when you plan on sending some stabilizers? If not before I place an order for my plate, maybe I'll just buy a few extra and send them out to him.

I should be able to get them out in the next couple days. I have to find some time to desolder some switches from my alps board to give him since I don't have any loose alps switches.

I have some PCB and plate mounted cherry stabs, but I will have to take apart my QFR and steal some costar stabs from it to send him since I don't have any of them available either.

As you guys know, I have been back and forth with BigBlueSaw quite a bit recently. They have been great to work with. They have been very responsive and are genuinely interested in working with us and solving our specific problems. I have pointed them to some MX and Alps switches as well as Costar stabilizers which they have purchased so they have units to do spot checking and validation of cutouts. I will be sending them both Plate and PCB mounted Cherry stabilizers so they have a complete set of components as reference when working on our projects.

I love that they are proactive and are purchasing the mating components that we rely on so they can guarantee a quality service for us. That is above and beyond in my opinion and it really shows that they are serious about working together.

We have also been discussing pricing quite a bit and we are trying to find ways to reduce costs wherever we can. I have shared my back-of-the-napkin calculations for the cost of the different switch cutouts [1], and he agrees that it seems pretty acurate as a relative cost of the different cutouts. It is good to get some validation on those assumptions. He suggested that we could potentially save some cost by linking the switches together (not stopping cutting and moving from one switch cutout to the next while continuing to cut). This will reduce the machining time because, as he says, "having the cutting head shut off, traverse to the next hole, switch back on to pierce the hole, then move to the cutting edge all takes time". I commented that we may be able to do that between switches on the same row, but I was concerned that we may lose some structure and rigidity if we did that. I think it also depends a bit on the material. He agreed that it is probably not realistic for a whole row. We will have to run some tests to see how many switches in a row we can link and not compromise structure. We still do not know what the cost savings will be, but we do expect to be able save on costs by doing this.

I think thats pretty much it. It has been great working with them, very proactive and engaged. Good news for everyone... :)

On my side. I am still working on getting the DXF format supported. I have run into a couple bugs in the core software. I am continuing to patch and develop workarounds for the problems, so hopefully I will have some good news on that soon... (back at it...)

Wow, great to hear swill! It is good news that BigBlueSaw is happy to work with you in making a more efficient process. It will hopefully turn out great if we can create a positive relationship with them, and hopefully have them as a go-to shop for plates!

As you guys know, I have been back and forth with BigBlueSaw quite a bit recently. They have been great to work with. They have been very responsive and are genuinely interested in working with us and solving our specific problems. I have pointed them to some MX and Alps switches as well as Costar stabilizers which they have purchased so they have units to do spot checking and validation of cutouts. I will be sending them both Plate and PCB mounted Cherry stabilizers so they have a complete set of components as reference when working on our projects.

I love that they are proactive and are purchasing the mating components that we rely on so they can guarantee a quality service for us. That is above and beyond in my opinion and it really shows that they are serious about working together.

We have also been discussing pricing quite a bit and we are trying to find ways to reduce costs wherever we can. I have shared my back-of-the-napkin calculations for the cost of the different switch cutouts [1], and he agrees that it seems pretty acurate as a relative cost of the different cutouts. It is good to get some validation on those assumptions. He suggested that we could potentially save some cost by linking the switches together (not stopping cutting and moving from one switch cutout to the next while continuing to cut). This will reduce the machining time because, as he says, "having the cutting head shut off, traverse to the next hole, switch back on to pierce the hole, then move to the cutting edge all takes time". I commented that we may be able to do that between switches on the same row, but I was concerned that we may lose some structure and rigidity if we did that. I think it also depends a bit on the material. He agreed that it is probably not realistic for a whole row. We will have to run some tests to see how many switches in a row we can link and not compromise structure. We still do not know what the cost savings will be, but we do expect to be able save on costs by doing this.

I think thats pretty much it. It has been great working with them, very proactive and engaged. Good news for everyone... :)

On my side. I am still working on getting the DXF format supported. I have run into a couple bugs in the core software. I am continuing to patch and develop workarounds for the problems, so hopefully I will have some good news on that soon... (back at it...)

Awesome update man. Good to hear this is all going so well. I guess I need to get in touch with him and figure out what the plan will actually be with these plates I want cut. Was going to place the order Friday to see how it goes.

As you guys know, I have been back and forth with BigBlueSaw quite a bit recently. They have been great to work with. They have been very responsive and are genuinely interested in working with us and solving our specific problems. I have pointed them to some MX and Alps switches as well as Costar stabilizers which they have purchased so they have units to do spot checking and validation of cutouts. I will be sending them both Plate and PCB mounted Cherry stabilizers so they have a complete set of components as reference when working on our projects.

I love that they are proactive and are purchasing the mating components that we rely on so they can guarantee a quality service for us. That is above and beyond in my opinion and it really shows that they are serious about working together.

We have also been discussing pricing quite a bit and we are trying to find ways to reduce costs wherever we can. I have shared my back-of-the-napkin calculations for the cost of the different switch cutouts [1], and he agrees that it seems pretty acurate as a relative cost of the different cutouts. It is good to get some validation on those assumptions. He suggested that we could potentially save some cost by linking the switches together (not stopping cutting and moving from one switch cutout to the next while continuing to cut). This will reduce the machining time because, as he says, "having the cutting head shut off, traverse to the next hole, switch back on to pierce the hole, then move to the cutting edge all takes time". I commented that we may be able to do that between switches on the same row, but I was concerned that we may lose some structure and rigidity if we did that. I think it also depends a bit on the material. He agreed that it is probably not realistic for a whole row. We will have to run some tests to see how many switches in a row we can link and not compromise structure. We still do not know what the cost savings will be, but we do expect to be able save on costs by doing this.

I think thats pretty much it. It has been great working with them, very proactive and engaged. Good news for everyone... :)

On my side. I am still working on getting the DXF format supported. I have run into a couple bugs in the core software. I am continuing to patch and develop workarounds for the problems, so hopefully I will have some good news on that soon... (back at it...)

Awesome update man. Good to hear this is all going so well. I guess I need to get in touch with him and figure out what the plan will actually be with these plates I want cut. Was going to place the order Friday to see how it goes.

I am confident that if he has the switches and stabs that everything will work out well.

I think the more complicated stuff like determining what machining processes we can tweak to bring down costs will happen a bit more slowly since we will have to do some testing.

As you guys know, I have been back and forth with BigBlueSaw quite a bit recently. They have been great to work with. They have been very responsive and are genuinely interested in working with us and solving our specific problems. I have pointed them to some MX and Alps switches as well as Costar stabilizers which they have purchased so they have units to do spot checking and validation of cutouts. I will be sending them both Plate and PCB mounted Cherry stabilizers so they have a complete set of components as reference when working on our projects.

I love that they are proactive and are purchasing the mating components that we rely on so they can guarantee a quality service for us. That is above and beyond in my opinion and it really shows that they are serious about working together.

We have also been discussing pricing quite a bit and we are trying to find ways to reduce costs wherever we can. I have shared my back-of-the-napkin calculations for the cost of the different switch cutouts [1], and he agrees that it seems pretty acurate as a relative cost of the different cutouts. It is good to get some validation on those assumptions. He suggested that we could potentially save some cost by linking the switches together (not stopping cutting and moving from one switch cutout to the next while continuing to cut). This will reduce the machining time because, as he says, "having the cutting head shut off, traverse to the next hole, switch back on to pierce the hole, then move to the cutting edge all takes time". I commented that we may be able to do that between switches on the same row, but I was concerned that we may lose some structure and rigidity if we did that. I think it also depends a bit on the material. He agreed that it is probably not realistic for a whole row. We will have to run some tests to see how many switches in a row we can link and not compromise structure. We still do not know what the cost savings will be, but we do expect to be able save on costs by doing this.

I think thats pretty much it. It has been great working with them, very proactive and engaged. Good news for everyone... :)

On my side. I am still working on getting the DXF format supported. I have run into a couple bugs in the core software. I am continuing to patch and develop workarounds for the problems, so hopefully I will have some good news on that soon... (back at it...)

Awesome update man. Good to hear this is all going so well. I guess I need to get in touch with him and figure out what the plan will actually be with these plates I want cut. Was going to place the order Friday to see how it goes.

I am confident that if he has the switches and stabs that everything will work out well.

I think the more complicated stuff like determining what machining processes we can tweak to bring down costs will happen a bit more slowly since we will have to do some testing.

As you guys know, I have been back and forth with BigBlueSaw quite a bit recently. They have been great to work with. They have been very responsive and are genuinely interested in working with us and solving our specific problems. I have pointed them to some MX and Alps switches as well as Costar stabilizers which they have purchased so they have units to do spot checking and validation of cutouts. I will be sending them both Plate and PCB mounted Cherry stabilizers so they have a complete set of components as reference when working on our projects.

I love that they are proactive and are purchasing the mating components that we rely on so they can guarantee a quality service for us. That is above and beyond in my opinion and it really shows that they are serious about working together.

We have also been discussing pricing quite a bit and we are trying to find ways to reduce costs wherever we can. I have shared my back-of-the-napkin calculations for the cost of the different switch cutouts [1], and he agrees that it seems pretty acurate as a relative cost of the different cutouts. It is good to get some validation on those assumptions. He suggested that we could potentially save some cost by linking the switches together (not stopping cutting and moving from one switch cutout to the next while continuing to cut). This will reduce the machining time because, as he says, "having the cutting head shut off, traverse to the next hole, switch back on to pierce the hole, then move to the cutting edge all takes time". I commented that we may be able to do that between switches on the same row, but I was concerned that we may lose some structure and rigidity if we did that. I think it also depends a bit on the material. He agreed that it is probably not realistic for a whole row. We will have to run some tests to see how many switches in a row we can link and not compromise structure. We still do not know what the cost savings will be, but we do expect to be able save on costs by doing this.

I think thats pretty much it. It has been great working with them, very proactive and engaged. Good news for everyone... :)

On my side. I am still working on getting the DXF format supported. I have run into a couple bugs in the core software. I am continuing to patch and develop workarounds for the problems, so hopefully I will have some good news on that soon... (back at it...)

Awesome update man. Good to hear this is all going so well. I guess I need to get in touch with him and figure out what the plan will actually be with these plates I want cut. Was going to place the order Friday to see how it goes.

I am confident that if he has the switches and stabs that everything will work out well.

I think the more complicated stuff like determining what machining processes we can tweak to bring down costs will happen a bit more slowly since we will have to do some testing.

As you guys know, I have been back and forth with BigBlueSaw quite a bit recently. They have been great to work with. They have been very responsive and are genuinely interested in working with us and solving our specific problems. I have pointed them to some MX and Alps switches as well as Costar stabilizers which they have purchased so they have units to do spot checking and validation of cutouts. I will be sending them both Plate and PCB mounted Cherry stabilizers so they have a complete set of components as reference when working on our projects.

I love that they are proactive and are purchasing the mating components that we rely on so they can guarantee a quality service for us. That is above and beyond in my opinion and it really shows that they are serious about working together.

We have also been discussing pricing quite a bit and we are trying to find ways to reduce costs wherever we can. I have shared my back-of-the-napkin calculations for the cost of the different switch cutouts [1], and he agrees that it seems pretty acurate as a relative cost of the different cutouts. It is good to get some validation on those assumptions. He suggested that we could potentially save some cost by linking the switches together (not stopping cutting and moving from one switch cutout to the next while continuing to cut). This will reduce the machining time because, as he says, "having the cutting head shut off, traverse to the next hole, switch back on to pierce the hole, then move to the cutting edge all takes time". I commented that we may be able to do that between switches on the same row, but I was concerned that we may lose some structure and rigidity if we did that. I think it also depends a bit on the material. He agreed that it is probably not realistic for a whole row. We will have to run some tests to see how many switches in a row we can link and not compromise structure. We still do not know what the cost savings will be, but we do expect to be able save on costs by doing this.

I think thats pretty much it. It has been great working with them, very proactive and engaged. Good news for everyone... :)

On my side. I am still working on getting the DXF format supported. I have run into a couple bugs in the core software. I am continuing to patch and develop workarounds for the problems, so hopefully I will have some good news on that soon... (back at it...)

Awesome update man. Good to hear this is all going so well. I guess I need to get in touch with him and figure out what the plan will actually be with these plates I want cut. Was going to place the order Friday to see how it goes.

I am confident that if he has the switches and stabs that everything will work out well.

I think the more complicated stuff like determining what machining processes we can tweak to bring down costs will happen a bit more slowly since we will have to do some testing.

Scraps from the back of the shear make great test plates.

Good tip. Thx. :)

Not a problem, that is how I got my stainless for less than a dollar a pound when anywhere I was looking at was going to charge me over 3 per pound.

As you guys know, I have been back and forth with BigBlueSaw quite a bit recently. They have been great to work with. They have been very responsive and are genuinely interested in working with us and solving our specific problems. I have pointed them to some MX and Alps switches as well as Costar stabilizers which they have purchased so they have units to do spot checking and validation of cutouts. I will be sending them both Plate and PCB mounted Cherry stabilizers so they have a complete set of components as reference when working on our projects.

I love that they are proactive and are purchasing the mating components that we rely on so they can guarantee a quality service for us. That is above and beyond in my opinion and it really shows that they are serious about working together.

We have also been discussing pricing quite a bit and we are trying to find ways to reduce costs wherever we can. I have shared my back-of-the-napkin calculations for the cost of the different switch cutouts [1], and he agrees that it seems pretty acurate as a relative cost of the different cutouts. It is good to get some validation on those assumptions. He suggested that we could potentially save some cost by linking the switches together (not stopping cutting and moving from one switch cutout to the next while continuing to cut). This will reduce the machining time because, as he says, "having the cutting head shut off, traverse to the next hole, switch back on to pierce the hole, then move to the cutting edge all takes time". I commented that we may be able to do that between switches on the same row, but I was concerned that we may lose some structure and rigidity if we did that. I think it also depends a bit on the material. He agreed that it is probably not realistic for a whole row. We will have to run some tests to see how many switches in a row we can link and not compromise structure. We still do not know what the cost savings will be, but we do expect to be able save on costs by doing this.

I think thats pretty much it. It has been great working with them, very proactive and engaged. Good news for everyone... :)

On my side. I am still working on getting the DXF format supported. I have run into a couple bugs in the core software. I am continuing to patch and develop workarounds for the problems, so hopefully I will have some good news on that soon... (back at it...)

Awesome update man. Good to hear this is all going so well. I guess I need to get in touch with him and figure out what the plan will actually be with these plates I want cut. Was going to place the order Friday to see how it goes.

I am confident that if he has the switches and stabs that everything will work out well.

I think the more complicated stuff like determining what machining processes we can tweak to bring down costs will happen a bit more slowly since we will have to do some testing.

Scraps from the back of the shear make great test plates.

Good tip. Thx. :)

Not a problem, that is how I got my stainless for less than a dollar a pound when anywhere I was looking at was going to charge me over 3 per pound.

If the user specifies a background color in the editor and uses the raw data that contains that, your tool interprets that as a key and adds it.It would be wise to only parse the arrays from the raw data, basically ignoring objects (unless of course they are values of an array).

If the user specifies a background color in the editor and uses the raw data that contains that, your tool interprets that as a key and adds it.It would be wise to only parse the arrays from the raw data, basically ignoring objects (unless of course they are values of an array).

If the user specifies a background color in the editor and uses the raw data that contains that, your tool interprets that as a key and adds it.It would be wise to only parse the arrays from the raw data, basically ignoring objects (unless of course they are values of an array).

After all the JD40 hype you created I'm probably going to make a 40% as my next project, here's the layout I've been messing with: http://www.keyboard-layout-editor.com/#/layouts/509067fc6168ffee7a5dc185b2c9b732

After all the JD40 hype you created I'm probably going to make a 40% as my next project, here's the layout I've been messing with: http://www.keyboard-layout-editor.com/#/layouts/509067fc6168ffee7a5dc185b2c9b732

Cool. :) Won't your upper and lower be bound to the same key? Wouldn't lower be accessed with just the lower key press and the upper would be accessed with 'lower + shift'? Not sure it is even possible to split those key presses because I think they are registered as the same key. Unless you program upper to be a macro which is actually 'lower + shift'.

JD will probably have a better idea on this, but that was my understanding. Which complicated the 40% layout I wanted to do a bit...

Cool. :) Won't your upper and lower be bound to the same key? Wouldn't lower be accessed with just the lower key press and the upper would be accessed with 'lower + shift'? Not sure it is even possible to split those key presses because I think they are registered as the same key. Unless you program upper to be a macro which is actually 'lower + shift'.

After all the JD40 hype you created I'm probably going to make a 40% as my next project, here's the layout I've been messing with: http://www.keyboard-layout-editor.com/#/layouts/509067fc6168ffee7a5dc185b2c9b732

Cool. :) Won't your upper and lower be bound to the same key? Wouldn't lower be accessed with just the lower key press and the upper would be accessed with 'lower + shift'? Not sure it is even possible to split those key presses because I think they are registered as the same key. Unless you program upper to be a macro which is actually 'lower + shift'.

JD will probably have a better idea on this, but that was my understanding. Which complicated the 40% layout I wanted to do a bit...

I was planning to have them as two layers and everything on "upper" would be a modified version of the same key on the lower layer (ACTION_MODS_KEY in tmk).But if that works it would be amazing!

It's great to have a 'community service' in bbs. Just a shame that it is US based. Still, I look forward to see what people do now that it is easier to prototype and build new designs. This will really make it easier for someone with no CAD experience to try out their ideas. I think this will lead to a 'renaissance' of keyboard design now that it is so much easier to try out something radical and new.

It's great to have a 'community service' in bbs. Just a shame that it is US based. Still, I look forward to see what people do now that it is easier to prototype and build new designs. This will really make it easier for someone with no CAD experience to try out their ideas. I think this will lead to a 'renaissance' of keyboard design now that it is so much easier to try out something radical and new.

Technically it is Canadian based. :P You can use the tool from anywhere and take the plates to any local shop to get the work done. Hopefully the lessons we learn working closely with companies like BigBlueSaw (US based) will help people who are getting work done at their local shops by giving them a head start in knowing what to ask for and what to look out for.

I hope this leads to a 'renaissance' of sorts when it comes to custom builds and unique ideas for new build projects. With the number of Enabler PCBs out there in the wild, I expect to see some very cool builds this year. If my work can help lower the bar for people to get involved and feel comfortable to start prototyping and building their ideas, that is fantastic. :)

It's great to have a 'community service' in bbs. Just a shame that it is US based. Still, I look forward to see what people do now that it is easier to prototype and build new designs. This will really make it easier for someone with no CAD experience to try out their ideas. I think this will lead to a 'renaissance' of keyboard design now that it is so much easier to try out something radical and new.

Technically it is Canadian based. :P You can use the tool from anywhere and take the plates to any local shop to get the work done. Hopefully the lessons we learn working closely with companies like BigBlueSaw (US based) will help people who are getting work done at their local shops by giving them a head start in knowing what to ask for and what to look out for.

I hope this leads to a 'renaissance' of sorts when it comes to custom builds and unique ideas for new build projects. With the number of Enabler PCBs out there in the wild, I expect to see some very cool builds this year. If my work can help lower the bar for people to get involved and feel comfortable to start prototyping and building their ideas, that is fantastic. :)

Sure, any shop will get it cut, but because BBS has the experience in this area surely that will help out their clients greatly.

Also, I was referring to BBS when I said US based. But the US and Canada are basically the same thing anyway, right...

It's great to have a 'community service' in bbs. Just a shame that it is US based. Still, I look forward to see what people do now that it is easier to prototype and build new designs. This will really make it easier for someone with no CAD experience to try out their ideas. I think this will lead to a 'renaissance' of keyboard design now that it is so much easier to try out something radical and new.

Technically it is Canadian based. :P You can use the tool from anywhere and take the plates to any local shop to get the work done. Hopefully the lessons we learn working closely with companies like BigBlueSaw (US based) will help people who are getting work done at their local shops by giving them a head start in knowing what to ask for and what to look out for.

I hope this leads to a 'renaissance' of sorts when it comes to custom builds and unique ideas for new build projects. With the number of Enabler PCBs out there in the wild, I expect to see some very cool builds this year. If my work can help lower the bar for people to get involved and feel comfortable to start prototyping and building their ideas, that is fantastic. :)

Sure, any shop will get it cut, but because BBS has the experience in this area surely that will help out their clients greatly.

Also, I was referring to BBS when I said US based. But the US and Canada are basically the same thing anyway, right...

runs and hides :D

Sorry I did not make the connection between 'BBS' and 'BigBlueSaw'. I have seen bbs as a shorthand for bulletin boards (aka - forums), so I did not understand your statement as you meant it. :)

I do think that it is helpful for everyone to see the types of problems we are trying to solve with BBS. It will help guide other collaboration (potentially in your country). :)

Ok, thats ****ing awesome. Well done dude. Thanks for sharing back your experience. This is really cool to see. :) Love that people are already trying 3d printing of this stuff. :) Did you use the STP file?

I used the STL file, which my 3D Printing buddy then chopped into pieces on another program. When I asked him what he used, he sent the following reply:

"Spaceclaim for opening and modifying the STEP and converting to STL (this is probably what he wants to know), Repetier Host for running the printer, Slic3r for slicing. If he wants to play with a program similar to Spaceclaim for free he should look into DesignSpark Mechanical - it does not have the full functionality but will import step files and has the basic features and workflow (note that I haven't actually used it myself, I just know it's using the Spaceclaim kernel)."

It's great to have a 'community service' in bbs. Just a shame that it is US based. Still, I look forward to see what people do now that it is easier to prototype and build new designs. This will really make it easier for someone with no CAD experience to try out their ideas. I think this will lead to a 'renaissance' of keyboard design now that it is so much easier to try out something radical and new.

Technically it is Canadian based. :P You can use the tool from anywhere and take the plates to any local shop to get the work done. Hopefully the lessons we learn working closely with companies like BigBlueSaw (US based) will help people who are getting work done at their local shops by giving them a head start in knowing what to ask for and what to look out for.

I hope this leads to a 'renaissance' of sorts when it comes to custom builds and unique ideas for new build projects. With the number of Enabler PCBs out there in the wild, I expect to see some very cool builds this year. If my work can help lower the bar for people to get involved and feel comfortable to start prototyping and building their ideas, that is fantastic. :)

Sure, any shop will get it cut, but because BBS has the experience in this area surely that will help out their clients greatly.

Also, I was referring to BBS when I said US based. But the US and Canada are basically the same thing anyway, right...

runs and hides :D

Sorry I did not make the connection between 'BBS' and 'BigBlueSaw'. I have seen bbs as a shorthand for bulletin boards (aka - forums), so I did not understand your statement as you meant it. :)

I do think that it is helpful for everyone to see the types of problems we are trying to solve with BBS. It will help guide other collaboration (potentially in your country). :)

Ah right, that clears it up. It will definitely be good to have knowledge on these issues to help people who may face them.

Ok, thats ****ing awesome. Well done dude. Thanks for sharing back your experience. This is really cool to see. :) Love that people are already trying 3d printing of this stuff. :) Did you use the STP file?

I used the STL file, which my 3D Printing buddy then chopped into pieces on another program. When I asked him what he used, he sent the following reply:

"Spaceclaim for opening and modifying the STEP and converting to STL (this is probably what he wants to know), Repetier Host for running the printer, Slic3r for slicing. If he wants to play with a program similar to Spaceclaim for free he should look into DesignSpark Mechanical - it does not have the full functionality but will import step files and has the basic features and workflow (note that I haven't actually used it myself, I just know it's using the Spaceclaim kernel)."

"Sandwich - This is a standard layered case. The plate goes on the top and then there are essentially ring layers and then a bottom plate. There are two types of ring layers; 'open' which has a cutout for the USB connector, and 'closed' which has no cutouts. You can choose how many of each layer is suitable for your case.This case type will actually produce the CAD files for all the layers of the sandwich case. You will be able to choose how many of each layer you want cut and build the case completely from the output of this tool."

This sounds like the tool produces all the layers, but I'm not seeing that. I just get the top plate. Am I doing something wrong, or is this future functionality?

"Sandwich - This is a standard layered case. The plate goes on the top and then there are essentially ring layers and then a bottom plate. There are two types of ring layers; 'open' which has a cutout for the USB connector, and 'closed' which has no cutouts. You can choose how many of each layer is suitable for your case.This case type will actually produce the CAD files for all the layers of the sandwich case. You will be able to choose how many of each layer you want cut and build the case completely from the output of this tool."

This sounds like the tool produces all the layers, but I'm not seeing that. I just get the top plate. Am I doing something wrong, or is this future functionality?

It is an awesome, awesome tool btw.

Yes. When I wrote the help section I was expecting to have that functionality developed before I launched the tool. It is on my short list of features roll out, but my time has been limited recently due to RL stuff. I have also prioritized trying to get DXF format support working in order to simplify the collaboration with shops like BigBlueSaw. I have been struggling with this as it is currently broken in the core engine I am using, so I have been trying to troubleshoot and submit patches to the core to get DXF export functionality working for us.

The generation of those additional layers is something I want to get added asap.

Not yet. I was going to try to progress it a bit more before I open sourced it. I would like to get most of the core functionality in place before I open source it. Right now I don't really have the cycles to deal with pull requests because I am really trying to focus on getting through some of my backlog. It will be available in the near future, but probably not for another month or so.

I have spent entirely too much time trying to get DXF support working. I had previously spent about a week or two on the problem and then gave up. This time I am working off the nightly builds of FreeCAD and I went into it knowing I was going to have to get my hands dirty. I have spent most of my free time this past week finding and fixing bugs and submitting patches upstream. Tonight I think I have finally cracked this nut and I have successfully exported a DXF file. W00t!!! Rounded corners are even working. Booya...

I am going to see if I can get SVG export working as well. I was not able to get it working in the past, but I have a better idea of how this stuff works now and I am pretty confident I should be able to get that working as well. I think I have already isolated the main issue, so hopefully it will be a quick fix.

Anyway, all good news. If I can finally get these exports working I will be able to rest easy and move on to the fun features. :)

I have spent entirely too much time trying to get DXF support working. I had previously spent about a week or two on the problem and then gave up. This time I am working off the nightly builds of FreeCAD and I went into it knowing I was going to have to get my hands dirty. I have spent most of my free time this past week finding and fixing bugs and submitting patches upstream. Tonight I think I have finally cracked this nut and I have successfully exported a DXF file. W00t!!! Rounded corners are even working. Booya...

I am going to see if I can get SVG export working as well. I was not able to get it working in the past, but I have a better idea of how this stuff works now and I am pretty confident I should be able to get that working as well. I think I have already isolated the main issue, so hopefully it will be a quick fix.

Anyway, all good news. If I can finally get these exports working I will be able to rest easy and move on to the fun features. :)

This is amazing news! Now for dwg, unless you never want to look at file export code again in your life :)

So I'm torn between the top and bottom plate being all aluminum, all polycarbonate or PC for bottom plate and aluminum for the top. The switches I sent were delivered today, going to place my order monday or tuesday.

So I'm torn between the top and bottom plate being all aluminum, all polycarbonate or PC for bottom plate and aluminum for the top. The switches I sent were delivered today, going to place my order monday or tuesday.

I sent BigBlueSaw a bunch of stabilizers a couple days ago, so hopefully he will get them soon.

As for what you build your plate out of. Thats up to you. Do you have a PCB or are you hand wiring or using the Enabler PCBs for the matrix? If you don't have a PCB, then I would not recommend polycarb as I don't think 1.5mm polycarb would hold up. If you don't have a PCB, you MUST use a 1.5mm plate because the switches MUST clip into the plate to stay secure. If anything I just said doesn't make sense just ask for clarification. :)

Tomorrow night I will be taking the tool down for an hour or so and I will be doing a pretty major update. I wanted to do it tonight, but I JUST got everything working and it is after 1am and I have to be up early tomorrow morning.

I will do a more extensive overview of the changes tomorrow when I do the update, but here are the highlights:- DXF export support (HOLY ****ING FINALLY)- SVG export support (W00t)- Costar only stabilizer cutouts- Fixed 'background' bug- More bug fixes...

I will review the thread tomorrow to see if I missed any bugs. If you remember any that I have not mentioned here, let me know so it jogs my memory.

So I'm torn between the top and bottom plate being all aluminum, all polycarbonate or PC for bottom plate and aluminum for the top. The switches I sent were delivered today, going to place my order monday or tuesday.

I sent BigBlueSaw a bunch of stabilizers a couple days ago, so hopefully he will get them soon.

As for what you build your plate out of. Thats up to you. Do you have a PCB or are you hand wiring or using the Enabler PCBs for the matrix? If you don't have a PCB, then I would not recommend polycarb as I don't think 1.5mm polycarb would hold up. If you don't have a PCB, you MUST use a 1.5mm plate because the switches MUST clip into the plate to stay secure. If anything I just said doesn't make sense just ask for clarification. :)

It makes sense for sure (have read alot lately haha) I'm definitely hand wiring the matrix. The only reason I was considering polycarb is because it's rigid as hell and I had assumed because gon used it to build an entire case out of it that it must work well for this application. I think I'll stick to aluminum for 2 reasons. a)hopefully to help BBS dial all of this in and b)I want this as rigid as possible for max finger orgasm.

Is this tool (or will it be) open source?Even if it wouldn't, depending on your preference, I'd suggest using some kind of bugtracker (GitHub issues for example), not just for us, but it's a tremendous tool for yourself.

Is this tool (or will it be) open source?Even if it wouldn't, depending on your preference, I'd suggest using some kind of bugtracker (GitHub issues for example), not just for us, but it's a tremendous tool for yourself.

Soon™. I am currently using a private bitbucket repo for development. I will be open sourcing it once I get a few more of the features in place. I will be putting it on GitHub when I do that. Right now I am just trying to advance things as quickly as I can before I open things up. Also, I want to clean up the way I did some things so they are more obvious to the masses.

This update has been a LONG time in coming. This update may not seem like much to some of you, but others will recognize the milestone of this update.

Details of this update:

DXF Export Support - This is a big deal. Pretty much every shop works with DXF files and the tools lack of support for this format was a pretty big sticking point. All told I probably spent about 3 weeks JUST on this feature. There were problems in the underlying CAD engine (FreeCAD) which I use which to render my drawings. I actually had to troubleshoot those issues in FreeCAD and develop and submit multiple patches to its core to resolve the issues I was running into. This support is awesome for us. :)

SVG Export Support - Not as popular as DXF, but this was another desired format. I also had to troubleshoot and patch FreeCAD to get this support working. Its great to have this feature as well now.

Costar Only Stabilizer Support - This has been requested a few times. This option will help reduce machining costs for people who really only care about Costar stabilizers.

Selective Costar Support - Like many of my other configuration options, you can selectively choose which keys you want which stabilizer cutouts on. So if you want to have only a Costar spacebar stabilizer but Cherry and Costar support for the other 2u stabilizers, that is possible by using the {_s:1} option in the raw data. Check the 'Plate Layout Help' for more details.

Fixed Background Bug - There was a bug that would cause an extra row to be rendered if you specified a background color in the keyboard-layout-editor.

Fixed Mount Hole Bug - Fixed a bug that would allow you to specify an odd number of mount holes which would cause things to break when drawing the plate. I am correctly verifying that you specified an even number of mount holes >= 4.

I think thats it. This is going to make things much easier for BigBlueSaw to work with the output from this tool as well as other shops you may want to work with.

I guess I should have mentioned that earlier, huh? The main reason for eliminating the costar cutout on the top is for when you want to use Cherry plate mount stabs. They don't clip into the plate as well if they have those cutouts. Most people want both combined, so they can choose what type of stabilizers to use after the fact.

The svg one will probably be helpful with troubleshooting, so thumbs up for that feature!

Is the live preview not good enough for you? What's the advantage of svg for troubleshooting?

Lets say a person has a question about his rendered plate, he/she could then just supply the link to the svg, which in most (if not all) modern browsers are rendered, without the need to share a picture or actual cad files.Like so: http://swillkb.s3.amazonaws.com/ad6b6ad9c9fd4f92af48ce29fb72b72b177b7d36/ad6b6ad9c9fd4f92af48ce29fb72b72b177b7d36.svg

Come to think of it, I have a feature suggestion, although it's probably not necessary at all;When the server is done rendering and the client receives the data, what about changing the path to the actual finished page and linking back to it would display the finished page?This would allow for sharing a link to a finished plate in the format "builder.swillkb.com/<sha>", and possibly allowing for small modifications for re-rendering, even by other people.So the link to the plate that I linked the svg for above would look like this: http://builder.swillkb.com/ad6b6ad9c9fd4f92af48ce29fb72b72b177b7d36.And it would link to this page: http://i.imgur.com/T0c9Pjp.png, with all the parameters in the configure section there as well.

This depends however on how you cache and what data you actually keep on your end, like the parameters.

I guess I should have mentioned that earlier, huh? The main reason for eliminating the costar cutout on the top is for when you want to use Cherry plate mount stabs. They don't clip into the plate as well if they have those cutouts. Most people want both combined, so they can choose what type of stabilizers to use after the fact.

The svg one will probably be helpful with troubleshooting, so thumbs up for that feature!

Is the live preview not good enough for you? What's the advantage of svg for troubleshooting?

Lets say a person has a question about his rendered plate, he/she could then just supply the link to the svg, which in most (if not all) modern browsers are rendered, without the need to share a picture or actual cad files.Like so: http://swillkb.s3.amazonaws.com/ad6b6ad9c9fd4f92af48ce29fb72b72b177b7d36/ad6b6ad9c9fd4f92af48ce29fb72b72b177b7d36.svg

Come to think of it, I have a feature suggestion, although it's probably not necessary at all;When the server is done rendering and the client receives the data, what about changing the path to the actual finished page and linking back to it would display the finished page?This would allow for sharing a link to a finished plate in the format "builder.swillkb.com/<sha>", and possibly allowing for small modifications for re-rendering, even by other people.So the link to the plate that I linked the svg for above would look like this: http://builder.swillkb.com/ad6b6ad9c9fd4f92af48ce29fb72b72b177b7d36.And it would link to this page: http://i.imgur.com/T0c9Pjp.png, with all the parameters in the configure section there as well.

This depends however on how you cache and what data you actually keep on your end, like the parameters.

Ahh. Ya I understand what you meant now.

As for the builder link. Yes, I am planning to do this (maybe even in the next set of changes). It is a little trucker than expected because I want the edit section to be populated as well so someone can look at a linked layout and then do some minor tweaks and re-render.

To do this I have to save all of the source data that built the layout as well as the resulting data. On page load I have to populate all of the edit details with the source data as well as the rendered display.

It is not super hard, but it does take some time and I have not taken the time to implement it yet.

This and adding support for the other layers in the sandwich case are probably going to be the main features of the next release. I think being able to link to your builder layout in the forum is really important for community feedback and development of ideas. :)

Costar Only Stabilizer Support - This has been requested a few times. This option will help reduce machining costs for people who really only care about Costar stabilizers.

This is great. I was asking around for measurements and planning to take a stab at it myself.You just saved me from having any amount of brain pain and hair pulling. ;DTime to play around with it on your site. Teeheehee :p

I guess I should have mentioned that earlier, huh? The main reason for eliminating the costar cutout on the top is for when you want to use Cherry plate mount stabs. They don't clip into the plate as well if they have those cutouts. Most people want both combined, so they can choose what type of stabilizers to use after the fact.

Done! Now you have the following stabilizer options (Note: you can mix and match by changing the '_s' param in the raw data, check layout help for details)

Cherry + Costar

Cherry Only

Costar Only

Also, I fixed a bug where values of items that are turned off were still being used. Thinks like padding, kerf, rounded corners, etc...

When downloading DFX from the tool, and then directly importing it into BBS to get a quote, it's picking up the plate size in inches instead of MM. So BBS's site thinks the plate is 326 inches by 107 inches.

When downloading DFX from the tool, and then directly importing it into BBS to get a quote, it's picking up the plate size in inches instead of MM. So BBS's site thinks the plate is 326 inches by 107 inches.

I guess BBS defaults to inches as their UOM. I don't think I can do anything about that from my size.

When downloading DFX from the tool, and then directly importing it into BBS to get a quote, it's picking up the plate size in inches instead of MM. So BBS's site thinks the plate is 326 inches by 107 inches.

I guess BBS defaults to inches as their UOM. I don't think I can do anything about that from my size.

You could have an option for making the drawing in inches or mm? Still have the software run all the calculations in metric, but at the end scale everything if inch is selected?

When downloading DFX from the tool, and then directly importing it into BBS to get a quote, it's picking up the plate size in inches instead of MM. So BBS's site thinks the plate is 326 inches by 107 inches.

I guess BBS defaults to inches as their UOM. I don't think I can do anything about that from my size.

You could have an option for making the drawing in inches or mm? Still have the software run all the calculations in metric, but at the end scale everything if inch is selected?

Ya. That is something melvang asked for as well. I would have to change the ui and how the data is collected as well. I am considering it, just have not gotten my head around it just yet. I will look into it.

When downloading DFX from the tool, and then directly importing it into BBS to get a quote, it's picking up the plate size in inches instead of MM. So BBS's site thinks the plate is 326 inches by 107 inches.

I guess BBS defaults to inches as their UOM. I don't think I can do anything about that from my size.

R12 DXF files have no units associated with them, so the online quoting system just assumes that they're inches.

Later DXF versions (R2000 and above I think) have a way to set a default unit for the file, so these will come out correctly.

A workaround is to open the file in Librecad and scale everything by a factor of 0.03937, then save the file. Or save as a R2000 DXF with mm units.

Have you thought about kerf for wood/MDF? I think that's cheaper (I may be wrong) to prototype with. So would be a nice option if you want to try layouts without breaking the bank.

Get the kerf value from the shop you plan to get the plate cut with and enter the kerf value in the tool. By entering a kerf value in the tool it will automatically adjust the cad to account for the kerf.

When downloading DFX from the tool, and then directly importing it into BBS to get a quote, it's picking up the plate size in inches instead of MM. So BBS's site thinks the plate is 326 inches by 107 inches.

I guess BBS defaults to inches as their UOM. I don't think I can do anything about that from my size.

R12 DXF files have no units associated with them, so the online quoting system just assumes that they're inches.

Later DXF versions (R2000 and above I think) have a way to set a default unit for the file, so these will come out correctly.

A workaround is to open the file in Librecad and scale everything by a factor of 0.03937, then save the file. Or save as a R2000 DXF with mm units.

Ya, I think it defaults to R12...

Do any of these formats support exporting with dimensions? Do you know? I will need to figure out how to export in a specific format.

Just letting you know that the type 2 cutouts worked perfectly on my 3D printer for MX browns, but they pressed a little too hard on the sides for blues. I had to shave down the little protrusions, as blues are more sensitive to side pressure. Everything turned out beautiful. I'll post a pic when I have access to Imgur.

Just letting you know that the type 2 cutouts worked perfectly on my 3D printer for MX browns, but they pressed a little too hard on the sides for blues. I had to shave down the little protrusions, as blues are more sensitive to side pressure. Everything turned out beautiful. I'll post a pic when I have access to Imgur.

That's strange. I doubt it's related to the actual switch colours, just the different batches of switch housings.

Just letting you know that the type 2 cutouts worked perfectly on my 3D printer for MX browns, but they pressed a little too hard on the sides for blues. I had to shave down the little protrusions, as blues are more sensitive to side pressure. Everything turned out beautiful. I'll post a pic when I have access to Imgur.

That's strange. I doubt it's related to the actual switch colours, just the different batches of switch housings.

Grab a blue and squeeze the sides HARD. The post will be reluctant to pop back up. We tried this with some pliers, and realized that the extra hardware around the post of the blue makes them sensitive to sharp side pressure.

Just letting you know that the type 2 cutouts worked perfectly on my 3D printer for MX browns, but they pressed a little too hard on the sides for blues. I had to shave down the little protrusions, as blues are more sensitive to side pressure. Everything turned out beautiful. I'll post a pic when I have access to Imgur.

So this is for the sides of the switch opening right? Do you have a caliper? Is the resulting opening exactly 14mm as described in the cad? Maybe when it is 3d printed the tolerances are not perfect?

Just letting you know that the type 2 cutouts worked perfectly on my 3D printer for MX browns, but they pressed a little too hard on the sides for blues. I had to shave down the little protrusions, as blues are more sensitive to side pressure. Everything turned out beautiful. I'll post a pic when I have access to Imgur.

Do the switches open correctly while clipped into the plate with that cutout? Any problems there? Curious because if the switch clipping into the plate is really tight, it may also be a problem for the side wings.

Just letting you know that the type 2 cutouts worked perfectly on my 3D printer for MX browns, but they pressed a little too hard on the sides for blues. I had to shave down the little protrusions, as blues are more sensitive to side pressure. Everything turned out beautiful. I'll post a pic when I have access to Imgur.

Do the switches open correctly while clipped into the plate with that cutout? Any problems there? Curious because if the switch clipping into the plate is really tight, it may also be a problem for the side wings.

Once I de-burred the edges of the areas that press on the center of the clips, the blues opened fine. This is really an issue with some 3D printers, as they often deposit just a LITTLE too much material as they make a tight corner.

Just letting you know that the type 2 cutouts worked perfectly on my 3D printer for MX browns, but they pressed a little too hard on the sides for blues. I had to shave down the little protrusions, as blues are more sensitive to side pressure. Everything turned out beautiful. I'll post a pic when I have access to Imgur.

Do the switches open correctly while clipped into the plate with that cutout? Any problems there? Curious because if the switch clipping into the plate is really tight, it may also be a problem for the side wings.

Once I de-burred the edges of the areas that press on the center of the clips, the blues opened fine. This is really an issue with some 3D printers, as they often deposit just a LITTLE too much material as they make a tight corner.

Fair enough. You could potentially specify a negative kerf value and you may be able to counteract that. Maybe something to try. I "think" that should work, but I have not tested that concept at all.

Just letting you know that the type 2 cutouts worked perfectly on my 3D printer for MX browns, but they pressed a little too hard on the sides for blues. I had to shave down the little protrusions, as blues are more sensitive to side pressure. Everything turned out beautiful. I'll post a pic when I have access to Imgur.

Do the switches open correctly while clipped into the plate with that cutout? Any problems there? Curious because if the switch clipping into the plate is really tight, it may also be a problem for the side wings.

Once I de-burred the edges of the areas that press on the center of the clips, the blues opened fine. This is really an issue with some 3D printers, as they often deposit just a LITTLE too much material as they make a tight corner.

Fair enough. You could potentially specify a negative kerf value and you may be able to counteract that. Maybe something to try. I "think" that should work, but I have not tested that concept at all.

It really wasn't a problem. Just wanted printers to know that you may need to slice the edges of the insets a bit with a pocketknife, or grind them with a small rotary tool to get blues to work optimally. The fit is excellently snug, and with the right supports, you definitely don't need a steel plate.

Does anyone know where I can get quotes for something in MM? bbs doesn't support MM

By MM, you mean millimeters? BBS does support mm, but you have to re-export the dxf file with a R2000 or later version of the DXF format in order to include units of measure. There have been some posts recently about this.

Does anyone know where I can get quotes for something in MM? bbs doesn't support MM

By MM, you mean millimeters? BBS does support mm, but you have to re-export the dxf file with a R2000 or later version of the DXF format in order to include units of measure. There have been some posts recently about this.

Ok, thanks! And yeah, that's what I mean. Should I just open it up on autocad or something and re-export it like you said?

Does anyone know where I can get quotes for something in MM? bbs doesn't support MM

By MM, you mean millimeters? BBS does support mm, but you have to re-export the dxf file with a R2000 or later version of the DXF format in order to include units of measure. There have been some posts recently about this.

Ok, thanks! And yeah, that's what I mean. Should I just open it up on autocad or something and re-export it like you said?

abjr did it with draftsite. BBS suggested Librecad. AutoCAD should work fine if you have it.

Does anyone know where I can get quotes for something in MM? bbs doesn't support MM

By MM, you mean millimeters? BBS does support mm, but you have to re-export the dxf file with a R2000 or later version of the DXF format in order to include units of measure. There have been some posts recently about this.

Ok, thanks! And yeah, that's what I mean. Should I just open it up on autocad or something and re-export it like you said?

abjr did it with draftsite. BBS suggested Librecad. AutoCAD should work fine if you have it.

Does anyone know where I can get quotes for something in MM? bbs doesn't support MM

By MM, you mean millimeters? BBS does support mm, but you have to re-export the dxf file with a R2000 or later version of the DXF format in order to include units of measure. There have been some posts recently about this.

Ok, thanks! And yeah, that's what I mean. Should I just open it up on autocad or something and re-export it like you said?

abjr did it with draftsite. BBS suggested Librecad. AutoCAD should work fine if you have it.

Does anyone know where I can get quotes for something in MM? bbs doesn't support MM

By MM, you mean millimeters? BBS does support mm, but you have to re-export the dxf file with a R2000 or later version of the DXF format in order to include units of measure. There have been some posts recently about this.

Ok, thanks! And yeah, that's what I mean. Should I just open it up on autocad or something and re-export it like you said?

abjr did it with draftsite. BBS suggested Librecad. AutoCAD should work fine if you have it.

Received a 6u spacebar from a CMStorm QuickFire Ultimate today, they are using completely different stabilizer mounts on it.Center-to-center is 98mm with the switch mount perfectly in the middle (~43.5mm between the stab mounts and the switch mount, http://i.imgur.com/McryYdA.jpg).

The "normal" (Cherry G80-1800) is either 95.25mm or 96.5mm (I don't know that for sure yet, got conflicting sources), while Signature Plastics might have different mounts.

Received a 6u spacebar from a CMStorm QuickFire Ultimate today, they are using completely different stabilizer mounts on it.Center-to-center is 98mm with the switch mount perfectly in the middle (~43.5mm between the stab mounts and the switch mount, http://i.imgur.com/McryYdA.jpg).

The "normal" (Cherry G80-1800) is either 95.25mm or 96.5mm (I don't know that for sure yet, got conflicting sources), while Signature Plastics might have different mounts.

Looking at the image, your measurement is incorrect. What you should document is the center to center distance between the center outside stabilizer. You documented the distance from edge to edge of the posts. It should be from center of MX cutout to center of MX cutout. Make sense?

I hope more of those on the wiki are not wrong because that is the source I used for my stabilizer sizing. :\

Received a 6u spacebar from a CMStorm QuickFire Ultimate today, they are using completely different stabilizer mounts on it.Center-to-center is 98mm with the switch mount perfectly in the middle (~43.5mm between the stab mounts and the switch mount, http://i.imgur.com/McryYdA.jpg).

The "normal" (Cherry G80-1800) is either 95.25mm or 96.5mm (I don't know that for sure yet, got conflicting sources), while Signature Plastics might have different mounts.

Looking at the image, your measurement is incorrect. What you should document is the center to center distance between the center outside stabilizer. You documented the distance from edge to edge of the posts. It should be from center of MX cutout to center of MX cutout. Make sense?

I hope more of those on the wiki are not wrong because that is the source I used for my stabilizer sizing. :\

Updated the wiki to include that too, as well as the total center-to-center between the stabilizer mounts (98mm).

Received a 6u spacebar from a CMStorm QuickFire Ultimate today, they are using completely different stabilizer mounts on it.Center-to-center is 98mm with the switch mount perfectly in the middle (~43.5mm between the stab mounts and the switch mount, http://i.imgur.com/McryYdA.jpg).

The "normal" (Cherry G80-1800) is either 95.25mm or 96.5mm (I don't know that for sure yet, got conflicting sources), while Signature Plastics might have different mounts.

Looking at the image, your measurement is incorrect. What you should document is the center to center distance between the center outside stabilizer. You documented the distance from edge to edge of the posts. It should be from center of MX cutout to center of MX cutout. Make sense?

I hope more of those on the wiki are not wrong because that is the source I used for my stabilizer sizing. :\

Updated the wiki to include that too, as well as the total center-to-center between the stabilizer mounts (98mm).

Also a thing to note, Cherry stabilizers don't work work at all with the keycap I got, the stems are smaller (0.1-0.2mm) than the spec, they fit fine in the center mount tho (the switch).The keycap came with Costar-like mounts on it, and the reason I say Costar-like is because they are not cross (+) shaped, rather a straight bar (|).

Also a thing to note, Cherry stabilizers don't work work at all with the keycap I got, the stems are smaller (0.1-0.2mm) than the spec, they fit fine in the center mount tho (the switch).The keycap came with Costar-like mounts on it, and the reason I say Costar-like is because they are not cross (+) shaped, rather a straight bar (|).

Can you give me a little more detail on what is going on here? Are you saying that the stabilizer cutouts are wrong for regular keycaps or just a specific set of caps you have? Do you have pictures maybe? It is really important that I know about any issues so I can fix them going forward. I need this to work for the majority of people without them having to think. :)

Also a thing to note, Cherry stabilizers don't work work at all with the keycap I got, the stems are smaller (0.1-0.2mm) than the spec, they fit fine in the center mount tho (the switch).The keycap came with Costar-like mounts on it, and the reason I say Costar-like is because they are not cross (+) shaped, rather a straight bar (|).

Can you give me a little more detail on what is going on here? Are you saying that the stabilizer cutouts are wrong for regular keycaps or just a specific set of caps you have? Do you have pictures maybe? It is really important that I know about any issues so I can fix them going forward. I need this to work for the majority of people without them having to think. :)

It's nothing for you to worry about, has nothing to do with the plate anyways, it's the stabilizer holes on the keycap, they're too small to fit Cherry stabs.Just me ranting :p

Also a thing to note, Cherry stabilizers don't work work at all with the keycap I got, the stems are smaller (0.1-0.2mm) than the spec, they fit fine in the center mount tho (the switch).The keycap came with Costar-like mounts on it, and the reason I say Costar-like is because they are not cross (+) shaped, rather a straight bar (|).

Can you give me a little more detail on what is going on here? Are you saying that the stabilizer cutouts are wrong for regular keycaps or just a specific set of caps you have? Do you have pictures maybe? It is really important that I know about any issues so I can fix them going forward. I need this to work for the majority of people without them having to think. :)

It's nothing for you to worry about, has nothing to do with the plate anyways, it's the stabilizer holes on the keycap, they're too small to fit Cherry stabs.Just me ranting :p

This is why we don't design keyboards with 6u spacebars. Now you know. For future reference. :D

Alright so the plate is cut and he sent me a video earlier. The cutouts fit perfect top and bottom, but are loose side to side. I dont think this could be a kerf issue due to the fact that it's a pretty large gap so I'm curious if it has to do with the actual size of the cutout just being off? Aside from that the plate looks good, he shipped it out to me today. Even though there is room on either side of the switch, it fits snug and it takes quite a but of force for him to push it from side to side. Ignore the fact that the stab bar is upside down, I doubt he's had a mech spacebar off before so A+ for effort.

Alright so the plate is cut and he sent me a video earlier. The cutouts fit perfect top and bottom, but are loose side to side. I dont think this could be a kerf issue due to the fact that it's a pretty large gap so I'm curious if it has to do with the actual size of the cutout just being off? Aside from that the plate looks good, he shipped it out to me today. Even though there is room on either side of the switch, it fits snug and it takes quite a but of force for him to push it from side to side. Ignore the fact that the stab bar is upside down, I doubt he's had a mech spacebar off before so A+ for effort.

The long part of the stabilizer wire goes in the nooks, the small parts is for the keycap. Thanks for the laugh tho ;Dhttp://deskthority.net/wiki/File:Filco_Majestouch_1_--_Costar_stabiliser.jpg

Alright so the plate is cut and he sent me a video earlier. The cutouts fit perfect top and bottom, but are loose side to side. I dont think this could be a kerf issue due to the fact that it's a pretty large gap so I'm curious if it has to do with the actual size of the cutout just being off? Aside from that the plate looks good, he shipped it out to me today. Even though there is room on either side of the switch, it fits snug and it takes quite a but of force for him to push it from side to side. Ignore the fact that the stab bar is upside down, I doubt he's had a mech spacebar off before so A+ for effort.

The long part of the stabilizer wire goes in the nooks, the small parts is for the keycap. Thanks for the laugh tho ;Dhttp://deskthority.net/wiki/File:Filco_Majestouch_1_--_Costar_stabiliser.jpg

As for the wiggle room, is it the same on all the other holes too?

Haha I know about the stab wire that video was from BBS. The plate wont be here til Monday they shipped it out today. I believe all of the holes have this wiggle room. And judging by the amount of wiggle room and the fact that the top is tight, I dont think kerf can be to blame here.

If you want to secure them better, use hot glue on the corners from the back side. I will be doing the same to my plate's spacebar (because the cutout is much larger to fit any kind of keycap, http://i.imgur.com/MEGGLNs.png).

If you want to secure them better, use hot glue on the corners from the back side. I will be doing the same to my plate's spacebar (because the cutout is much larger to fit any kind of keycap, http://i.imgur.com/MEGGLNs.png).

Unless of course you've got a PCB, then it's irrelevant.

Alright noted thanks for the heads up. I'm hand wiring this one, as tackling this much is already quite overwhelming I don't think I'm ready for designing PCBs yet haha.

The corner nubs are a little off due to the waterjet cutting program. Thus, the horizontal play in the switches.

We'll work on getting that perfect, but after discussing with swill and phishy on the phone today, it's good enough for regular use. You have to use a bit of force to get them to slide horizontally, so I don' t think this is a big problem.

Alps switches don't work right yet, though, for some reason. That's something else we'll have to work on.

The corner nubs are a little off due to the waterjet cutting program. Thus, the horizontal play in the switches.

We'll work on getting that perfect, but after discussing with swill and phishy on the phone today, it's good enough for regular use. You have to use a bit of force to get them to slide horizontally, so I don' t think this is a big problem.

Alps switches don't work right yet, though, for some reason. That's something else we'll have to work on.

Thanks again for putting so much time into this for us man. Once I get this one build I'm going to do a run of a different style plate.

Alright so the plate is cut and he sent me a video earlier. The cutouts fit perfect top and bottom, but are loose side to side. I dont think this could be a kerf issue due to the fact that it's a pretty large gap so I'm curious if it has to do with the actual size of the cutout just being off? Aside from that the plate looks good, he shipped it out to me today. Even though there is room on either side of the switch, it fits snug and it takes quite a but of force for him to push it from side to side. Ignore the fact that the stab bar is upside down, I doubt he's had a mech spacebar off before so A+ for effort.

I spent an hour or so on the phone with BBS today discussing and measuring this. The dimensions of the cutout is correct. The actual cutout is slightly smaller than the drawing. I think it is 13.88mm instead of 14mm and the width of the alps cutout sides was slightly smaller as well. I think the main reason for the movement is the nubs in the corners are not quite as square as we are shooting for and the MX switches are also not square (there is less material in those corners of the switch). BBS is going to work on getting those corners more square in the water jet processing.

As for alps support, we are not quite there. The switches clip in, but I think they are too tight because the switch will depress, but it does not rebound correctly. It may be because the cutout ended up being a touch smaller than drawn, but if others know why this can happen it would be helpful for us to understand.

I HIGHLY suggest that if you plan on hand wiring the switches in your plate, that you use the first, simple square hole design. And decide which stabilizers you will use, Costar or Cherry, and pick one or the other for your drawing. Trying to combine things like MX and Alps holes on a plate with a PCB is no big deal, but for hand wiring you want the MOST stability possible. And that is done with my suggestions above. :)

So this may not seem like a huge update because it is only one feature, but I had to refactor a lot of code to add this functionality, so it feels like a big feature to me. :)

I have added support for drawing all of the different layers of the sandwich case. The top layer did not change. I have added two middle layers, one is just a spacer and does not have any cutouts and the other has a 1cm cutout in the center for the USB connection. I have also added the bottom layer.

Right now I only support the cutout in the center top of the case. I also am setting it statically to 1cm for now. I will probably make both of those features configurable, but I wanted to just launch the functionality as is first. I am not sure how I am going to allow people to specify where they want the USB opening. I could do it as a percentage across the top, but if you know exactly where you want it (say for a specific PCB), that will be hard to use. If I specify it as an actual distance, than where are we measuring from?

That brings up another point. Right now my middle layers are making the cut 19.05mm from the center of the switch center. Well assuming the switch is at the edge of the plate. Basically, it is cutting out everything but the padding you set, so if you draw something without padding, that is what would be cutout of the middle layer for the sandwich case. Not sure if that is clear. I am going to have to do something to make this more configurable though because it is possible that a PCB may require a bigger opening than that. I am looking at one of my Sprit PCBs right now and I think I would need more space than what I am currently cutting out. The way I am currently doing it is perfect for hand wired keyboards, but I will need to make some adjustments to make it easier to work with PCBs.

I hope this is a useful feature for you all. :)

Here is a screenshot of what it looks like when you draw a sandwich case now.

The corner nubs are a little off due to the waterjet cutting program. Thus, the horizontal play in the switches.

We'll work on getting that perfect, but after discussing with swill and phishy on the phone today, it's good enough for regular use. You have to use a bit of force to get them to slide horizontally, so I don' t think this is a big problem.

Alps switches don't work right yet, though, for some reason. That's something else we'll have to work on.

The corner nubs are a little off due to the waterjet cutting program. Thus, the horizontal play in the switches.

We'll work on getting that perfect, but after discussing with swill and phishy on the phone today, it's good enough for regular use. You have to use a bit of force to get them to slide horizontally, so I don' t think this is a big problem.

Alps switches don't work right yet, though, for some reason. That's something else we'll have to work on.

Can you make a video.showing how the alps don't work.

The switch depresses but does not rebound. I think it is because it is too tight. We need to do some testing.

The corner nubs are a little off due to the waterjet cutting program. Thus, the horizontal play in the switches.

We'll work on getting that perfect, but after discussing with swill and phishy on the phone today, it's good enough for regular use. You have to use a bit of force to get them to slide horizontally, so I don' t think this is a big problem.

Alps switches don't work right yet, though, for some reason. That's something else we'll have to work on.

Can you make a video.showing how the alps don't work.

The switch depresses but does not rebound. I think it is because it is too tight. We need to do some testing.

Would it be possible to adjust for this by manually adding a small factor to the kerf to "loosen" things up?

The corner nubs are a little off due to the waterjet cutting program. Thus, the horizontal play in the switches.

We'll work on getting that perfect, but after discussing with swill and phishy on the phone today, it's good enough for regular use. You have to use a bit of force to get them to slide horizontally, so I don' t think this is a big problem.

Alps switches don't work right yet, though, for some reason. That's something else we'll have to work on.

Can you make a video.showing how the alps don't work.

The switch depresses but does not rebound. I think it is because it is too tight. We need to do some testing.

Would it be possible to adjust for this by manually adding a small factor to the kerf to "loosen" things up?

Well the cutout ended up being about .15mm smaller than my drawing. I am not sure what the alps tolerances are, but cherry spec lists .05mm as the tolerance (but they still work). If we get the cutout a little closer to the drawing we will know more.

Water jet is a little harder to get the tolerances we are aiming for because of a few factors. Working on it though.

On the bright side of things, you can always take a little material away, can't put it back though. If I have any problems with my cutouts i'll take a file or something to them. In the future I'll probably just be using the regular cutout. I don't really have a reason to open switches once I get them mounted anyways, and that will avoid the corners being too small and the switch moving.

On the bright side of things, you can always take a little material away, can't put it back though. If I have any problems with my cutouts i'll take a file or something to them. In the future I'll probably just be using the regular cutout. I don't really have a reason to open switches once I get them mounted anyways, and that will avoid the corners being too small and the switch moving.

If you are hand wiring you can unclip the switch without unsoldering anyway. I will probably just use the normal cutout for my hand wired projects because of this...

Alright, sorry for the delay. Ok, so the reason it was failing was a combination of a bunch of different things.1) I had the timeout for drawing a plate at 30 minutes. The plate was not finishing drawing in that timeframe, so it was failing. I have upped that time out to 2 hours, so hopefully that helps.2) You were using the most complex switch cutout, which is not actually recommended anyway because the switch does not clip in as solid as it should. The draw times increase based on the complexity of the switch cutout (like the manufacturing cost). I have actually removed that option completely from the UI because no one should be using that. If you really need to rotate a switch, then rotate the cutout instead (details in the 'layout help' section). If you REALLY must have that cutout, I have actually left it in the code, but you have to specify the {_t:3} on any key you want to use it on in your layout.3) This is not something you had any control over, but the SVG export takes a VERY long time. It is like 10x as long as any of the other exports because of the way it does the export. Because of this, I have removed it from the default export formats and I have added an 'Export SVG' toggle as an option. So if you actually want to export an SVG, you just have to turn on the 'Export SVG' option and that export format will be included. Otherwise it will not be exported by default.

This should take care of the lion share of the issues with the cad taking WAY too long to draw. Let me know if you have any other issues. :)

Alright, sorry for the delay. Ok, so the reason it was failing was a combination of a bunch of different things.1) I had the timeout for drawing a plate at 30 minutes. The plate was not finishing drawing in that timeframe, so it was failing. I have upped that time out to 2 hours, so hopefully that helps.2) You were using the most complex switch cutout, which is not actually recommended anyway because the switch does not clip in as solid as it should. The draw times increase based on the complexity of the switch cutout (like the manufacturing cost). I have actually removed that option completely from the UI because no one should be using that. If you really need to rotate a switch, then rotate the cutout instead. If you REALLY must have that cutout, I have actually left it in the code, but you have to specify the {_t:3} on any key you want to use it on in your layout.3) This is not something you had any control over, but the SVG export takes a VERY long time. It is like 10x as long as any of the other exports because of the way it does the export. Because of this, I have removed it from the default export formats and I have added an 'Export SVG' toggle as an option. So if you actually want to export an SVG, you just have to turn on the 'Export SVG' option and that export format will be included. Otherwise it will not be exported by default.

This should take care of the lion share of the issues with the cad taking WAY too long to draw. Let me know if you have any other issues. :)

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

Just make sure to leave enough length on the leads for the bottom of the tabs to clear the plate.

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

Just make sure to leave enough length on the leads for the bottom of the tabs to clear the plate.

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

Just make sure to leave enough length on the leads for the bottom of the tabs to clear the plate.

Yeah, probably the hardest part :P

This was actually the primary reason I wanted the Enablers the size they are. Well, that and you can do half the soldering before installing in the plate.

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

Just make sure to leave enough length on the leads for the bottom of the tabs to clear the plate.

Yeah, probably the hardest part :P

This was actually the primary reason I wanted the Enablers the size they are. Well, that and you can do half the soldering before installing in the plate.

I hope you dont mind me asking, and this isn't coming off condescending, but what are you supposed to do with them after you solder them into the enabler pcb?

I have also encountered a spacing issue: on the top left corner, my spacing is 10mm, and when measured in LibreCAD, it give me a measurement (from the top right corner of the switch cutout) 22.000 x 22.000, but the top rightcorner is 22.000 vert, and 12.5 hori. Bottom rightcorner is 12.5 vert by 12.5 hori, and the bottom left corner is 12.5 vert, and 22.000 hori.Top Right:(http://i.gyazo.com/862aadaa9e2deaaf430a0983d5839f28.png)Top Left:(http://i.gyazo.com/3195ffa7740ff493d127b2f50aad075a.png)Bottom Right:(http://i.gyazo.com/5cda14d41a7ca34b25c0df3e5e5ce727.png)Bottom Left:(http://i.gyazo.com/e6531f0819a7e8cf47cedf9fd4b4a290.png)

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

Just make sure to leave enough length on the leads for the bottom of the tabs to clear the plate.

Yeah, probably the hardest part :P

This was actually the primary reason I wanted the Enablers the size they are. Well, that and you can do half the soldering before installing in the plate.

I hope you dont mind me asking, and this isn't coming off condescending, but what are you supposed to do with them after you solder them into the enabler pcb?

Mount in the plate and finish soldering the matrix.

This is one build that has been done with them. https://geekhack.org/index.php?topic=67848.0

Some people don't see the point of them but I don't see any other decent way for LED's on a hand wired matrix. Plus being able to do full custom layout for any plate and being able to swap without desoldering on a stock plate is nice.

I have also encountered a spacing issue: on the top left corner, my spacing is 10mm, and when measured in LibreCAD, it give me a measurement (from the top right corner of the switch cutout) 22.000 x 22.000, but the top rightcorner is 22.000 vert, and 12.5 hori. Bottom rightcorner is 12.5 vert by 12.5 hori, and the bottom left corner is 12.5 vert, and 22.000 hori.Top Right:

Show Image

(http://i.gyazo.com/862aadaa9e2deaaf430a0983d5839f28.png)

Top Left:

Show Image

(http://i.gyazo.com/3195ffa7740ff493d127b2f50aad075a.png)

Bottom Right:

Show Image

(http://i.gyazo.com/5cda14d41a7ca34b25c0df3e5e5ce727.png)

Bottom Left:

Show Image

(http://i.gyazo.com/e6531f0819a7e8cf47cedf9fd4b4a290.png)

Padding is from the edge of the cap not the edge of the hole. I believe Swill sized that off DCS caps from SP which are .715" square.

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

Just make sure to leave enough length on the leads for the bottom of the tabs to clear the plate.

Yeah, probably the hardest part :P

This was actually the primary reason I wanted the Enablers the size they are. Well, that and you can do half the soldering before installing in the plate.

I hope you dont mind me asking, and this isn't coming off condescending, but what are you supposed to do with them after you solder them into the enabler pcb?

Mount in the plate and finish soldering the matrix.

This is one build that has been done with them. https://geekhack.org/index.php?topic=67848.0

Some people don't see the point of them but I don't see any other decent way for LED's on a hand wired matrix. Plus being able to do full custom layout for any plate and being able to swap without desoldering on a stock plate is nice.

I have also encountered a spacing issue: on the top left corner, my spacing is 10mm, and when measured in LibreCAD, it give me a measurement (from the top right corner of the switch cutout) 22.000 x 22.000, but the top rightcorner is 22.000 vert, and 12.5 hori. Bottom rightcorner is 12.5 vert by 12.5 hori, and the bottom left corner is 12.5 vert, and 22.000 hori.Top Right:

Show Image

(http://i.gyazo.com/862aadaa9e2deaaf430a0983d5839f28.png)

Top Left:

Show Image

(http://i.gyazo.com/3195ffa7740ff493d127b2f50aad075a.png)

Bottom Right:

Show Image

(http://i.gyazo.com/5cda14d41a7ca34b25c0df3e5e5ce727.png)

Bottom Left:

Show Image

(http://i.gyazo.com/e6531f0819a7e8cf47cedf9fd4b4a290.png)

Padding is from the edge of the cap not the edge of the hole. I believe Swill sized that off DCS caps from SP which are .715" square.[/more]

Ah, that actually makes a lot more sense, I have 3 of them that I was screwing around with, that is very useful now that I know how they actually work.

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

Just make sure to leave enough length on the leads for the bottom of the tabs to clear the plate.

Yeah, probably the hardest part :P

This was actually the primary reason I wanted the Enablers the size they are. Well, that and you can do half the soldering before installing in the plate.

I hope you dont mind me asking, and this isn't coming off condescending, but what are you supposed to do with them after you solder them into the enabler pcb?

Mount in the plate and finish soldering the matrix.

This is one build that has been done with them. https://geekhack.org/index.php?topic=67848.0

Some people don't see the point of them but I don't see any other decent way for LED's on a hand wired matrix. Plus being able to do full custom layout for any plate and being able to swap without desoldering on a stock plate is nice.

I have also encountered a spacing issue: on the top left corner, my spacing is 10mm, and when measured in LibreCAD, it give me a measurement (from the top right corner of the switch cutout) 22.000 x 22.000, but the top rightcorner is 22.000 vert, and 12.5 hori. Bottom rightcorner is 12.5 vert by 12.5 hori, and the bottom left corner is 12.5 vert, and 22.000 hori.Top Right:

Show Image

(http://i.gyazo.com/862aadaa9e2deaaf430a0983d5839f28.png)

Top Left:

Show Image

(http://i.gyazo.com/3195ffa7740ff493d127b2f50aad075a.png)

Bottom Right:

Show Image

(http://i.gyazo.com/5cda14d41a7ca34b25c0df3e5e5ce727.png)

Bottom Left:

Show Image

(http://i.gyazo.com/e6531f0819a7e8cf47cedf9fd4b4a290.png)

Padding is from the edge of the cap not the edge of the hole. I believe Swill sized that off DCS caps from SP which are .715" square.[/more]

Ah, that actually makes a lot more sense, I have 3 of them that I was screwing around with, that is very useful now that I know how they actually work.

I really need to put this link in my signature. https://geekhack.org/index.php?topic=57511.msg1481480#msg1481480

So this may not seem like a huge update because it is only one feature, but I had to refactor a lot of code to add this functionality, so it feels like a big feature to me. :)

I have added support for drawing all of the different layers of the sandwich case. The top layer did not change. I have added two middle layers, one is just a spacer and does not have any cutouts and the other has a 1cm cutout in the center for the USB connection. I have also added the bottom layer.

I honestly think I clicked that last cutout by accident, and thanks for the help and support!

If you are hand wiring, I strongly recommend the simple square. It is the most stable cutout and you don't have to worry about desoldering to open the switch because you can unclip without desoldering. I will probably mention this a lot in this thread, but it is worth repeating. It is also the easiest to manufacture and will bring down the cost of the plates when you get them cut.

Oh wow, I didn't even think about that since all I have to do is unclip, thanks for the advice

Ya. I had not thought of that either, but JD educated me on the topic. :)

Just make sure to leave enough length on the leads for the bottom of the tabs to clear the plate.

Yeah, probably the hardest part :P

This was actually the primary reason I wanted the Enablers the size they are. Well, that and you can do half the soldering before installing in the plate.

I hope you dont mind me asking, and this isn't coming off condescending, but what are you supposed to do with them after you solder them into the enabler pcb?

Mount in the plate and finish soldering the matrix.

This is one build that has been done with them. https://geekhack.org/index.php?topic=67848.0

Some people don't see the point of them but I don't see any other decent way for LED's on a hand wired matrix. Plus being able to do full custom layout for any plate and being able to swap without desoldering on a stock plate is nice.

I have also encountered a spacing issue: on the top left corner, my spacing is 10mm, and when measured in LibreCAD, it give me a measurement (from the top right corner of the switch cutout) 22.000 x 22.000, but the top rightcorner is 22.000 vert, and 12.5 hori. Bottom rightcorner is 12.5 vert by 12.5 hori, and the bottom left corner is 12.5 vert, and 22.000 hori.Top Right:

Show Image

(http://i.gyazo.com/862aadaa9e2deaaf430a0983d5839f28.png)

Top Left:

Show Image

(http://i.gyazo.com/3195ffa7740ff493d127b2f50aad075a.png)

Bottom Right:

Show Image

(http://i.gyazo.com/5cda14d41a7ca34b25c0df3e5e5ce727.png)

Bottom Left:

Show Image

(http://i.gyazo.com/e6531f0819a7e8cf47cedf9fd4b4a290.png)

Padding is from the edge of the cap not the edge of the hole. I believe Swill sized that off DCS caps from SP which are .715" square.[/more]

Ah, that actually makes a lot more sense, I have 3 of them that I was screwing around with, that is very useful now that I know how they actually work.

I really need to put this link in my signature. https://geekhack.org/index.php?topic=57511.msg1481480#msg1481480

Oh wow those look convenient. Wish I had about 70 of em right now haha.

Send i3oilermaker a pm. I know he has had stock number issues with the site before. And I see the site is down right now. He just bought a bunch from me and I don't think they would have sold out that quick. The other big advantage is being able to use pcb mount stabs with a hand wired layout.

I have also encountered a spacing issue: on the top left corner, my spacing is 10mm, and when measured in LibreCAD, it give me a measurement (from the top right corner of the switch cutout) 22.000 x 22.000, but the top rightcorner is 22.000 vert, and 12.5 hori. Bottom rightcorner is 12.5 vert by 12.5 hori, and the bottom left corner is 12.5 vert, and 22.000 hori.Top Right:

Show Image

(http://i.gyazo.com/862aadaa9e2deaaf430a0983d5839f28.png)

Top Left:

Show Image

(http://i.gyazo.com/3195ffa7740ff493d127b2f50aad075a.png)

Bottom Right:

Show Image

(http://i.gyazo.com/5cda14d41a7ca34b25c0df3e5e5ce727.png)

Bottom Left:

Show Image

(http://i.gyazo.com/e6531f0819a7e8cf47cedf9fd4b4a290.png)

Here are how the measurements work.

If you had a single switch cutout without any padding you would have the following:

[attachimg=1]

Basically, the switches are 19.05mm apart (center to center) from each other. If you only have one switch, the plate will actually be 19.05mm (if you don't have any padding). So it is not exactly the same size as a keycap, it is slightly bigger than keycap. It is the space in which the key lives taking into account the spacing from other keys.

If you had two keys without padding, it would look like the following:

[attachimg=2]

Now lets add 2mm of padding just to show the change in numbers:

[attachimg=3]

Now lets add {x:0.5} to the first key to see how it shifts it. In this example I removed the padding to simplify the numbers:

I have also encountered a spacing issue: on the top left corner, my spacing is 10mm, and when measured in LibreCAD, it give me a measurement (from the top right corner of the switch cutout) 22.000 x 22.000, but the top rightcorner is 22.000 vert, and 12.5 hori. Bottom rightcorner is 12.5 vert by 12.5 hori, and the bottom left corner is 12.5 vert, and 22.000 hori.Top Right:

Show Image

(http://i.gyazo.com/862aadaa9e2deaaf430a0983d5839f28.png)

Top Left:

Show Image

(http://i.gyazo.com/3195ffa7740ff493d127b2f50aad075a.png)

Bottom Right:

Show Image

(http://i.gyazo.com/5cda14d41a7ca34b25c0df3e5e5ce727.png)

Bottom Left:

Show Image

(http://i.gyazo.com/e6531f0819a7e8cf47cedf9fd4b4a290.png)

Here are how the measurements work.

If you had a single switch cutout without any padding you would have the following:

Basically, the switches are 19.05mm apart (center to center) from each other. If you only have one switch, the plate will actually be 19.05mm (if you don't have any padding). So it is not exactly the same size as a keycap, it is slightly bigger than keycap. It is the space in which the key lives taking into account the spacing from other keys.

If you had two keys without padding, it would look like the following:

I have also encountered a spacing issue: on the top left corner, my spacing is 10mm, and when measured in LibreCAD, it give me a measurement (from the top right corner of the switch cutout) 22.000 x 22.000, but the top rightcorner is 22.000 vert, and 12.5 hori. Bottom rightcorner is 12.5 vert by 12.5 hori, and the bottom left corner is 12.5 vert, and 22.000 hori.Top Right:

Show Image

(http://i.gyazo.com/862aadaa9e2deaaf430a0983d5839f28.png)

Top Left:

Show Image

(http://i.gyazo.com/3195ffa7740ff493d127b2f50aad075a.png)

Bottom Right:

Show Image

(http://i.gyazo.com/5cda14d41a7ca34b25c0df3e5e5ce727.png)

Bottom Left:

Show Image

(http://i.gyazo.com/e6531f0819a7e8cf47cedf9fd4b4a290.png)

Here are how the measurements work.

If you had a single switch cutout without any padding you would have the following:

Basically, the switches are 19.05mm apart (center to center) from each other. If you only have one switch, the plate will actually be 19.05mm (if you don't have any padding). So it is not exactly the same size as a keycap, it is slightly bigger than keycap. It is the space in which the key lives taking into account the spacing from other keys.

If you had two keys without padding, it would look like the following:

I tried to line up NerD 108's PCB drawing with a standard 108 layout.I kind of expected it to not line up. Now that I know it for a fact, how do I get this to work?Anyone know what spacing I should use on the layout editor?Measuring stuff in the PCB drawing is giving me weird numbers with up to 4 decimal places.Maybe I'm doing something wrong, or I'm just too lazy to measure and calculate every switch's position one at a time while not really knowing what I'm doing. lol

I haven't seen any orders the past couple days for this. What's everyone waiting for?

BTW, we're having a contest to give away $450 in services: http://a.pgtb.me/mhW3Q6

Very cool. Thank you for posting this and letting us know about this contest. We should really start a thread just for that so people can bang around ideas and raise visibility of your services and the contest by creating hype in its own right. :)

I just uploaded a .dxf to BigBlueSaw and it appears that I need an 8 foot by 8 foot plate. 0_o

Show Image

(http://i.imgur.com/bS84sZ9.png)

I have the .dxf and .svg if you want to look at them @swill.

There is a chance I totally messed this up, it was my first time.

Yes, JD is correct. Currently there is no unit information in the DXF export, so I export in mm and BBS picks it up and defaults to inches. You can open the file in LibreCAD and export as DXF again and it will export the file in a more recent version of DXF and it will include the correct mm units.

What are some appropriate values to use for the Mount Hole diameter and Plate Corner radius? I used 2.7mm and 2mm respectively and the edge of the holes are about 1.15mm from the edge of the plate. I'm not sure if that would lead to the head of the screw overhanging the plate.

I just uploaded a .dxf to BigBlueSaw and it appears that I need an 8 foot by 8 foot plate. 0_o

Show Image

(http://i.imgur.com/bS84sZ9.png)

I have the .dxf and .svg if you want to look at them @swill.

There is a chance I totally messed this up, it was my first time.

Yes, JD is correct. Currently there is no unit information in the DXF export, so I export in mm and BBS picks it up and defaults to inches. You can open the file in LibreCAD and export as DXF again and it will export the file in a more recent version of DXF and it will include the correct mm units.

I'm planning on building my first custom keyboard and your plate building tool is going to save us all many hours, thanks!

I have some questions which may sound stupid but I really have no idea. It's concerning the screws. I will have 6 mount holes and I need some help figuring out the correct size. If I plan to use M2 screws (2mm diameter, right) do the holes need to be 2mm as well or do they have to be a bit bigger? Is there any reccomended size or anythig bigger than M2 M2,5 is too big?

I just got my plate from UPS. Looks awesome and the switches fit great and snug. I'm actually not seeing any side to side play like in the video, im assuming he had to use ALOT of force to get it to slide. Either way A+ and now can confirm that the tool works and that bigbluesaw is the go-to for getting this done online.

I'm planning on building my first custom keyboard and your plate building tool is going to save us all many hours, thanks!

I have some questions which may sound stupid but I really have no idea. It's concerning the screws. I will have 6 mount holes and I need some help figuring out the correct size. If I plan to use M2 screws (2mm diameter, right) do the holes need to be 2mm as well or do they have to be a bit bigger? Is there any reccomended size or anythig bigger than M2 M2,5 is too big?

What are some appropriate values to use for the Mount Hole diameter and Plate Corner radius? I used 2.7mm and 2mm respectively and the edge of the holes are about 1.15mm from the edge of the plate. I'm not sure if that would lead to the head of the screw overhanging the plate.

These are good questions and I don't really have a good answer for you. I would suggest that if you are going to use M2 screws that you make the holes at least 2.25mm in diameter. Some of the cuts that I have seen from BBS so far are erroring on slightly too small (like .15mm smaller than drawn). This should ensure that the screws will fit through without issues even if the hole is slightly smaller than spec.

As for the overhang. I will have to get a caliper on the heads of some M2 (and M3) screws when I get home to give you a better idea of what you should be looking at for this.

On my next build project I plan to use M3 screws. I am planning to make my mount holes a little smaller than 3mm so I can tap the holes and I will be screwing the plates together without nuts. I plan to make a wooden spacer between my plates. I am really interested in tapping the plates as I think it makes so much more sense than using screws. I hope it works well. It worked well in 5mm acrylic, so I am pretty sure that 1.5mm aluminum should work. We will see...

I just got my plate from UPS. Looks awesome and the switches fit great and snug. I'm actually not seeing any side to side play like in the video, im assuming he had to use ALOT of force to get it to slide. Either way A+ and now can confirm that the tool works and that bigbluesaw is the go-to for getting this done online.

I just got my plate from UPS. Looks awesome and the switches fit great and snug. I'm actually not seeing any side to side play like in the video, im assuming he had to use ALOT of force to get it to slide. Either way A+ and now can confirm that the tool works and that bigbluesaw is the go-to for getting this done online.

Out of curiosity, did you use the standard cut out that's a simple square or a different choice?

I just got my plate from UPS. Looks awesome and the switches fit great and snug. I'm actually not seeing any side to side play like in the video, im assuming he had to use ALOT of force to get it to slide. Either way A+ and now can confirm that the tool works and that bigbluesaw is the go-to for getting this done online.

Out of curiosity, did you use the standard cut out that's a simple square or a different choice?

Thanks, neverused

From looking at the video, it would seem they were the "combined Alps/MX" holes, or the second from the left.

I just got my plate from UPS. Looks awesome and the switches fit great and snug. I'm actually not seeing any side to side play like in the video, im assuming he had to use ALOT of force to get it to slide. Either way A+ and now can confirm that the tool works and that bigbluesaw is the go-to for getting this done online.

Out of curiosity, did you use the standard cut out that's a simple square or a different choice?

Thanks, neverused

From looking at the video, it would seem they were the "combined Alps/MX" holes, or the second from the left.

I just got my plate from UPS. Looks awesome and the switches fit great and snug. I'm actually not seeing any side to side play like in the video, im assuming he had to use ALOT of force to get it to slide. Either way A+ and now can confirm that the tool works and that bigbluesaw is the go-to for getting this done online.

And in the future I'll probably just use the 1st style cutouts. I've actually 2 more projects in the works once I free up some money so I'll be in touch soon.

May I ask why?

Is your plate aluminium or stainless steel? I still have to decide for both the switches' plate and the bottom plate :)Would it be too heavy having both of steel?Would it look weird having one of each (top aluminium, bottom steel)?

Use the first style cutouts for hand wiring, because you increase stability by having as much area in contact with the switch as possible. Also, it will probably be cheaper, because the cuts are less complex. More complexity when cutting = longer machine time = higher cost.

Also, you can just unclip the switch from the plate to open the top, when they are hand wired with no PCB. You don't need the cutouts in the sides of the switch holes at all.

And in the future I'll probably just use the 1st style cutouts. I've actually 2 more projects in the works once I free up some money so I'll be in touch soon.

May I ask why?

Is your plate aluminium or stainless steel? I still have to decide for both the switches' plate and the bottom plate :)Would it be too heavy having both of steel?Would it look weird having one of each (top aluminium, bottom steel)?

Thanks again!

For the sheer fact that I'm not using alps and because I'm hand wiring I don't need to be able to open switches while they are mounted to the plate.

Also I used aluminum so it's lighter. The goal of this keyboard is to be small and light. I'm going to end up putting a finish on the aluminum anyways.

6061 Aluminum and I didn't use kerf. If you're using Big Blue Saw (I recommend them) they will adjust for kerf on their end.

Ok, thanks! And what program did you use to resize and what did you do in the program, I wan't to get it right on my first try, and sorry for the questions.

BBS actually did it for me orginally because there was no DFX on the tool yet, but you can open with librecad and resave it. I actually just installed librecad so I can price my next project, if you have any problems getting it right you can send me the DFX file and I'll fix it for you so it's good to send into BBS.

6061 Aluminum and I didn't use kerf. If you're using Big Blue Saw (I recommend them) they will adjust for kerf on their end.

Ok, thanks! And what program did you use to resize and what did you do in the program, I wan't to get it right on my first try, and sorry for the questions.

BBS actually did it for me orginally because there was no DFX on the tool yet, but you can open with librecad and resave it. I actually just installed librecad so I can price my next project, if you have any problems getting it right you can send me the DFX file and I'll fix it for you so it's good to send into BBS.

Actually I just downloaded the latest version of librecad and loaded my dxf file up. Trying to now re-save it but the latest version of DXF it supports is 2007. Re-saving as this and uploading to BBS still doesnt work. I've set the default values of the program to inches. Anything else I need to do.

Actually I just downloaded the latest version of librecad and loaded my dxf file up. Trying to now re-save it but the latest version of DXF it supports is 2007. Re-saving as this and uploading to BBS still doesnt work. I've set the default values of the program to inches. Anything else I need to do.

I thought someone had reported that it had worked. I will do more testing tonight and will try to make this clearer in the tool since it is coming up often.

Thanks for all the help in answering questions. :). Putting a baby to bed, so I have not been available to answer questions yet tonight.

Actually I just downloaded the latest version of librecad and loaded my dxf file up. Trying to now re-save it but the latest version of DXF it supports is 2007. Re-saving as this and uploading to BBS still doesnt work. I've set the default values of the program to inches. Anything else I need to do.

I thought someone had reported that it had worked. I will do more testing tonight and will try to make this clearer in the tool since it is coming up often.

Thanks for all the help in answering questions. :). Putting a baby to bed, so I have not been available to answer questions yet tonight.

It's all good man. Your tool is what brought me here and I'm excited with the direction it's gone in and the progress with big blue saw coming on board. **** like this keeps me entertained.

Very nice. Will this be getting its own thread? Also do you mind if I ask how much that was to have made?

Yeah i'll be starting a build thread soon for it when I get the rest of my stuff. It was 92.10 which seems to be the flat rate for 1offs unless it requires enough work to push it over that price. for 5 or more it was only like 42 bucks a set.

What are some appropriate values to use for the Mount Hole diameter and Plate Corner radius? I used 2.7mm and 2mm respectively and the edge of the holes are about 1.15mm from the edge of the plate. I'm not sure if that would lead to the head of the screw overhanging the plate.

These are good questions and I don't really have a good answer for you. I would suggest that if you are going to use M2 screws that you make the holes at least 2.25mm in diameter. Some of the cuts that I have seen from BBS so far are erroring on slightly too small (like .15mm smaller than drawn). This should ensure that the screws will fit through without issues even if the hole is slightly smaller than spec.

As for the overhang. I will have to get a caliper on the heads of some M2 (and M3) screws when I get home to give you a better idea of what you should be looking at for this.

Actually I just downloaded the latest version of librecad and loaded my dxf file up. Trying to now re-save it but the latest version of DXF it supports is 2007. Re-saving as this and uploading to BBS still doesnt work. I've set the default values of the program to inches. Anything else I need to do.

I thought someone had reported that it had worked. I will do more testing tonight and will try to make this clearer in the tool since it is coming up often.

That might have been me. I just tried again with Draftsight (https://geekhack.org/index.php?topic=65189.msg1643432#msg1643432) and LibreCAD. It worked fine with both. LibreCAD worked fine as DXF 2007.

What are some appropriate values to use for the Mount Hole diameter and Plate Corner radius? I used 2.7mm and 2mm respectively and the edge of the holes are about 1.15mm from the edge of the plate. I'm not sure if that would lead to the head of the screw overhanging the plate.

These are good questions and I don't really have a good answer for you. I would suggest that if you are going to use M2 screws that you make the holes at least 2.25mm in diameter. Some of the cuts that I have seen from BBS so far are erroring on slightly too small (like .15mm smaller than drawn). This should ensure that the screws will fit through without issues even if the hole is slightly smaller than spec.

As for the overhang. I will have to get a caliper on the heads of some M2 (and M3) screws when I get home to give you a better idea of what you should be looking at for this.

Actually I just downloaded the latest version of librecad and loaded my dxf file up. Trying to now re-save it but the latest version of DXF it supports is 2007. Re-saving as this and uploading to BBS still doesnt work. I've set the default values of the program to inches. Anything else I need to do.

I thought someone had reported that it had worked. I will do more testing tonight and will try to make this clearer in the tool since it is coming up often.

That might have been me. I just tried again with Draftsight (https://geekhack.org/index.php?topic=65189.msg1643432#msg1643432) and LibreCAD. It worked fine with both. LibreCAD worked fine as DXF 2007.

So you saved the DXF, opened it in librecad, resaved as DXF 2007 and that's it? Or does something need to be changed in librecad first?

What are some appropriate values to use for the Mount Hole diameter and Plate Corner radius? I used 2.7mm and 2mm respectively and the edge of the holes are about 1.15mm from the edge of the plate. I'm not sure if that would lead to the head of the screw overhanging the plate.

These are good questions and I don't really have a good answer for you. I would suggest that if you are going to use M2 screws that you make the holes at least 2.25mm in diameter. Some of the cuts that I have seen from BBS so far are erroring on slightly too small (like .15mm smaller than drawn). This should ensure that the screws will fit through without issues even if the hole is slightly smaller than spec.

As for the overhang. I will have to get a caliper on the heads of some M2 (and M3) screws when I get home to give you a better idea of what you should be looking at for this.

Actually I just downloaded the latest version of librecad and loaded my dxf file up. Trying to now re-save it but the latest version of DXF it supports is 2007. Re-saving as this and uploading to BBS still doesnt work. I've set the default values of the program to inches. Anything else I need to do.

I thought someone had reported that it had worked. I will do more testing tonight and will try to make this clearer in the tool since it is coming up often.

That might have been me. I just tried again with Draftsight (https://geekhack.org/index.php?topic=65189.msg1643432#msg1643432) and LibreCAD. It worked fine with both. LibreCAD worked fine as DXF 2007.

Alright, when I put a caliper on the screws I have I get the following:M2 Screw section: 1.9mmM2 Head: 3.4mm

M3 Screw section: 2.9mmM3 Head: 5.1mm

I found this chart to be helpful for understanding what size holes I should be using.https://littlemachineshop.com/Reference/TapDrillSizes.pdf

Hope those measurements help...

As for converting the DXF files:- I have tested with LibreCAD (http://librecad.org/cms/home.html) exporting as DXF 2007 and it works perfectly for uploading to BBS. NOTE: My default unit of measure in LibreCAD is MM. I have this setting in: Preferences > Defaults > Unit- I was going to try DraftSight, but my evaluation expired and I was too lazy to do anything about it. :P- I tried Teigha File Converter, but since the source file does not have UOM, it defaults to inches, so this does not help us. If you need to convert a DXF 2007 with UOM correctly set to mm and you need it in a different format like DXF 2013, this would be a good option. Keep in mind that you want to use ASCII in order for it to be usable by BBS.- I tested with Inkscape, and it did not work. I ended up with a corrupted file.

In short, I think LibreCAD is the best option. It is quick and easy to download and run and it is cross platform and free.

For screw dimensions, go to mcmastercarr.com and navigate your way to the hardware you want to use. If you click on the part number there will be an icon to click on that gives you a technical drawing of nominal dimensions for said hardware.