Author Topic: NOW OPEN SOURCE!!! swill's plate building tool [builder.swillkb.com]  (Read 3055047 times)

0 Members and 1 Guest are viewing this topic.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: Now w/ ALPS!!! swill's plate building tool [builder.swillkb.com]
« Reply #1650 on: Sat, 23 July 2016, 20:46:05 »
Does someone know if a space bar bent wire may work with PCB mount stabilizers under a plate cut with this tool? I meant, the type of wire that has a bump in its middle section.
I don't actually know the answer to this, but I assume it will if you can get the wire in once the pcb is in place. The cutout is such that you should be able to install it, so hopefully yes. I am also interested if people have feedback and have tried this.

Offline ideus

  • * Exalted Elder
  • Posts: 8123
  • Location: In the middle of nowhere.
  • Björkö.
Re: Now w/ ALPS!!! swill's plate building tool [builder.swillkb.com]
« Reply #1651 on: Sat, 23 July 2016, 23:05:54 »
Does someone know if a space bar bent wire may work with PCB mount stabilizers under a plate cut with this tool? I meant, the type of wire that has a bump in its middle section.
I don't actually know the answer to this, but I assume it will if you can get the wire in once the pcb is in place. The cutout is such that you should be able to install it, so hopefully yes. I am also interested if people have feedback and have tried this.

I'll let you know if I decided to buy some bumped wires for the only purpose to try them, I have some straight ones but I like the other type, they are suppose to be more rigid and balanced.

Offline skullydazed

  • * Vendor
  • Posts: 307
  • Location: Bay Area, CA
  • Had to turn PM's off. Email info@clueboard.co!
    • Clueboard
Re: Now w/ ALPS!!! swill's plate building tool [builder.swillkb.com]
« Reply #1652 on: Sun, 24 July 2016, 07:39:27 »
Does someone know if a space bar bent wire may work with PCB mount stabilizers under a plate cut with this tool? I meant, the type of wire that has a bump in its middle section.

No, the bump will bump against the plate. You can manually edit the resulting design to add a cutout to accommodate the wire, but then your spacebar switch will not be snapped into the plate, but the PCB only.

Offline ideus

  • * Exalted Elder
  • Posts: 8123
  • Location: In the middle of nowhere.
  • Björkö.
Re: Now w/ ALPS!!! swill's plate building tool [builder.swillkb.com]
« Reply #1653 on: Sun, 24 July 2016, 09:49:16 »
Does someone know if a space bar bent wire may work with PCB mount stabilizers under a plate cut with this tool? I meant, the type of wire that has a bump in its middle section.

No, the bump will bump against the plate. You can manually edit the resulting design to add a cutout to accommodate the wire, but then your spacebar switch will not be snapped into the plate, but the PCB only.

Thank you very much for the feedback, you'd save me some money and troubles, I will stick with the straight ones that is what I use with no issues whatsoever.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1654 on: Fri, 29 July 2016, 08:06:11 »
HUGE FUNCTIONALITY UPDATE!!!

This update has been in the works for a long time.  I finally got all the pieces together to the point where I am comfortable releasing it.

  • Fixed the Alps 6.5u spacebar stabilizer cutout.
  • Changed the 2u cherry based stabilizer cutouts to keep more material between the stab and switch so the stabilizers are better supported.  Now the same code is used for 2u and spacebars.
    143709-0
  • Changed Polygon Clipping libraries and completely rewrote that logic.  Hopefully I have officially squashed the issue where 5% of the time a switch and stabilizer cutouts didn't union correctly.  This rewrite gives me the flexibility to add more creative features (see below).
  • Added the ability to override the default USB cutout details.  Now you can move the cutout left and right across the top of the case.  In addition to changing the location, you can now change the width of the USB cutout.  Location EG: GH60 = -124.3 (mm)
  • Added the ability for sandwich cases to be drawn without mount holes (in case you want to glue the case together or laminate the layers in some other way).
  • Changed the padding from a generic Width and Height, to specific padding numbers for each side of the case.  This has opened the door for a LOT of new case configurations.  I will cover some of these details later.
  • Related to the padding change, I have introduced the concept of a middle layer edge width.  This allows you to specify exactly how much material you want around the edge of the middle layers.  In combination with the padding change, this gives you a huge amount of flexibility when drawing cases.  It also allows you to add large padding areas, like a wrist rest, and put additional components in that space (like a Raspberry Pi?).
  • The combination of the above enables me to draw cases such that the middle layers can be cut using MUCH less material so prototypes can be cut for much cheaper.


This list of changes does not seem to be such a big deal, so I will illustrate some of the flexibility we now have with a few examples.

  • Supporting the GH60 USB location (-124.3).
    143711-1
  • Sandwich case with open top and bottom sides. Padding: top=-0.005, bottom=-0.005, left=6, right=6.
    143713-2 143715-3
  • Sandwich case with open left and right sides.  Padding: top=6, bottom=6, left=-0.005, right=-0.005.
    143717-4 143719-5
  • Sandwich case with mount holes only on the side, but not open. Padding: top=3, bottom=3, left=6, right=6.
    143721-6 143723-7
  • Sandwich case with built in wrist rest. Padding: top=6, bottom=70, left=6, right=6.
    143767-8 143769-9

I think that is it for now.  Let me know if you have questions.

Enjoy...

PS - I have a bit of a game changer which I am working on now.  Stay tuned...  :)
« Last Edit: Sat, 30 July 2016, 22:41:57 by swill »

Offline xondat

  • i'm not a star
  • * Maker
  • Posts: 5366
  • Location: United Kingdom
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1655 on: Fri, 29 July 2016, 11:13:47 »
  • Added the ability to override the default USB cutout details.  Now you can move the cutout left and right across the top of the case.  In addition to changing the location, you can now change the width of the USB cutout.  Location EG: GH60 = -120.8 (mm)
Yes. This is what I, along with others, have been wanting for a while.

Thanks for the update swill, I look forward to the secret project :)

Offline MajorKoos

  • Posts: 851
  • Location: Bay Area
  • 1 life please. Extra large.
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1656 on: Fri, 29 July 2016, 12:57:44 »
Wow, that's a substantial update.
Thank you - I can't wait to give it a try.

Offline ideus

  • * Exalted Elder
  • Posts: 8123
  • Location: In the middle of nowhere.
  • Björkö.
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1657 on: Fri, 29 July 2016, 13:16:37 »
You have added very useful features to the plate building tool, thank you very much, and, besides, it came just in time for my upcoming building plate cutting.

---

Edit: This is the plate layout for my next building, a HHKB MX Clone with 6u space bar, GH-centered and the proper size modifiers.

 
« Last Edit: Fri, 29 July 2016, 14:05:19 by ideus »

Offline IBNobody

  • Posts: 113
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1658 on: Fri, 29 July 2016, 13:31:34 »
I played around with the USB gap, and it will take some getting used to. I wanted a 2U USB cutout based on my KLE board. To do that, I had to position the gap at -6.5U. Maybe the anchor should be at the leftmost key cutout?

I also see that it does not ignore decals.

If you are looking for extra features, having a hole placement table would be extremely useful. I need to add a few holes for LEDs as well as a few interior mounting holes. It would be great if I could specify a list of holes, sizes, X/Y coordinates, and if the hole is in the top/bottom/both plates.

Offline skullydazed

  • * Vendor
  • Posts: 307
  • Location: Bay Area, CA
  • Had to turn PM's off. Email info@clueboard.co!
    • Clueboard
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1659 on: Fri, 29 July 2016, 14:47:01 »
Very cool stuff. Being able to set each side's padding is a great idea.

One of the things I've added to the old engine is the ability to set these parameters in the dictionary section of the file. You can see an example here: https://github.com/skullydazed/kb_builder#keyboard-properties-example

Is that something you might add in the future? If so can we work out a common format so that it's easy for people to use either tool?

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1660 on: Fri, 29 July 2016, 15:43:28 »
No measurements are done in units, they are done in millimeters.  That may be a cause for confusion here.

The reason I am doing the calculation from center (of the layout) to center (of the usb cutout), is because that is the only constant point that can be known by both my software and the user.  For example, how does a PCB map to the key unit size?  Does the edge of the PCB line up with the edge of the 'layout'?  The answer is No, and because of that, it is not possible for both the user and the software to be able to enter a contract where the numbers presented are the same for both.  That is why I chose to put 0 in the middle and have everything relative to that.  By looking at a PCB schema, you can calculate the distance from the middle of the pcb to the center of the usb cutout.  That will work for pretty much everyone, but there is no other measure that everyone will be able to be confident in.  I struggled with this problem for a long time and that this problem is the reason this feature took so long for me to release.  This is the best way I could think to solve this so I could be confident that the expected user experience was consistent with a implementable software solution.  I agree, it is not perfect, but it is the best I could do to limit the number of mistakes made by people who didn't understand exactly how to do the calculation...

Right now I do not have a mechanism to handle decals and the like.  With my new implementation I should be able to add the ability to let you specify additional drill holes and such (relative to the center of the layout).  I can look into that in the near future... 

Thanks for the feedback.  I welcome all feedback and I strive to solve for everyone's needs (even though I realize that is not actually possible).  :)

I played around with the USB gap, and it will take some getting used to. I wanted a 2U USB cutout based on my KLE board. To do that, I had to position the gap at -6.5U. Maybe the anchor should be at the leftmost key cutout?

I also see that it does not ignore decals.

If you are looking for extra features, having a hole placement table would be extremely useful. I need to add a few holes for LEDs as well as a few interior mounting holes. It would be great if I could specify a list of holes, sizes, X/Y coordinates, and if the hole is in the top/bottom/both plates.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1661 on: Fri, 29 July 2016, 15:44:56 »
Very cool stuff. Being able to set each side's padding is a great idea.

One of the things I've added to the old engine is the ability to set these parameters in the dictionary section of the file. You can see an example here: https://github.com/skullydazed/kb_builder#keyboard-properties-example

Is that something you might add in the future? If so can we work out a common format so that it's easy for people to use either tool?

I will be looking to solve something similar.  I will review what you have done and we can go from there.  :)

Offline IBNobody

  • Posts: 113
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1662 on: Fri, 29 July 2016, 16:54:30 »
No measurements are done in units, they are done in millimeters.  That may be a cause for confusion here.

The reason I am doing the calculation from center (of the layout) to center (of the usb cutout), is because that is the only constant point that can be known by both my software and the user.  For example, how does a PCB map to the key unit size?  Does the edge of the PCB line up with the edge of the 'layout'?  The answer is No, and because of that, it is not possible for both the user and the software to be able to enter a contract where the numbers presented are the same for both.  That is why I chose to put 0 in the middle and have everything relative to that.  By looking at a PCB schema, you can calculate the distance from the middle of the pcb to the center of the usb cutout.  That will work for pretty much everyone, but there is no other measure that everyone will be able to be confident in.  I struggled with this problem for a long time and that this problem is the reason this feature took so long for me to release.  This is the best way I could think to solve this so I could be confident that the expected user experience was consistent with a implementable software solution.  I agree, it is not perfect, but it is the best I could do to limit the number of mistakes made by people who didn't understand exactly how to do the calculation...

Right now I do not have a mechanism to handle decals and the like.  With my new implementation I should be able to add the ability to let you specify additional drill holes and such (relative to the center of the layout).  I can look into that in the near future... 

Thanks for the feedback.  I welcome all feedback and I strive to solve for everyone's needs (even though I realize that is not actually possible).  :)

I knew you were using mm. :P It was just easier for me to type 6.5U than to type 6.5U * 19.05mm/U. I used the decimal equivalents in the tool. :)

Regarding datums...

Consider that the center point of the layout or of the PCB isn't the most universal number. I have a layout with an even number of key columns and a PCB that doesn't have a physical center. (My PCB is two separate PCBs, and one PCB is longer.) The center point of the leftmost or rightmost switch should be the datum. That point is universal across all designs, crazy or not.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1663 on: Fri, 29 July 2016, 17:18:10 »
But then the default value is wrong for pretty much everyone.  I think the default location of the USB cutout should be the center if people don't override anything.  Also, PCB schematics produced by pretty much everyone does not give relational measurements from the center of the switch to anything, so everyone would be flying blind.

Also, consider something like the ergodox. The left most switch is not the top left switch in the layout. And what about layouts with rotated clusters. These are all supported by my tool, but would be a total nightmare to support if I did some relational positioning to some random switch in a layout. What if it's 2u and rotated 45 degrees. Way too many edge cases I don't want to have to worry about.

Here is the GH60 schematic for example:

143771-0

I understand that this may not be ideal for your use case, but you were able to figure it out, which is the point.  It was impossible for me to make a perfect system, so I went with a system that had a sane default and anyone "could" work with given the parameters I set and the schematics they would be working with.  This is not an easy problem and I have spent a lot of time trying to find a solution that worked for everyone (even if it was not perfectly convenient).  After a lot of thought, this is what I decided to go with.  It is better than not having the feature... 

No measurements are done in units, they are done in millimeters.  That may be a cause for confusion here.

The reason I am doing the calculation from center (of the layout) to center (of the usb cutout), is because that is the only constant point that can be known by both my software and the user.  For example, how does a PCB map to the key unit size?  Does the edge of the PCB line up with the edge of the 'layout'?  The answer is No, and because of that, it is not possible for both the user and the software to be able to enter a contract where the numbers presented are the same for both.  That is why I chose to put 0 in the middle and have everything relative to that.  By looking at a PCB schema, you can calculate the distance from the middle of the pcb to the center of the usb cutout.  That will work for pretty much everyone, but there is no other measure that everyone will be able to be confident in.  I struggled with this problem for a long time and that this problem is the reason this feature took so long for me to release.  This is the best way I could think to solve this so I could be confident that the expected user experience was consistent with a implementable software solution.  I agree, it is not perfect, but it is the best I could do to limit the number of mistakes made by people who didn't understand exactly how to do the calculation...

Right now I do not have a mechanism to handle decals and the like.  With my new implementation I should be able to add the ability to let you specify additional drill holes and such (relative to the center of the layout).  I can look into that in the near future... 

Thanks for the feedback.  I welcome all feedback and I strive to solve for everyone's needs (even though I realize that is not actually possible).  :)

I knew you were using mm. It was just easier for me to type 6.5U than to type 6.5U * 19.05mm/U. I used the decimal equivalents in the tool. :)

Regarding datums...

Consider that the center point of the layout or of the PCB isn't the most universal number. I have a layout with an even number of key columns and a PCB that doesn't have a physical center. (My PCB is two separate PCBs, and one PCB is longer.) The center point of the leftmost or rightmost switch should be the datum. That point is universal across all designs, crazy or not.
« Last Edit: Fri, 29 July 2016, 17:31:33 by swill »

Offline IBNobody

  • Posts: 113
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1664 on: Fri, 29 July 2016, 18:14:45 »
But then the default value is wrong for pretty much everyone.  I think the default location of the USB cutout should be the center if people don't override anything.  Also, PCB schematics produced by pretty much everyone does not give relational measurements from the center of the switch to anything, so everyone would be flying blind.

Also, consider something like the ergodox. The left most switch is not the top left switch in the layout. And what about layouts with rotated clusters. These are all supported by my tool, but would be a total nightmare to support if I did some relational positioning to some random switch in a layout. What if it's 2u and rotated 45 degrees. Way too many edge cases I don't want to have to worry about.

Here is the GH60 schematic for example:

(Attachment Link)

I understand that this may not be ideal for your use case, but you were able to figure it out, which is the point.  It was impossible for me to make a perfect system, so I went with a system that had a sane default and anyone "could" work with given the parameters I set and the schematics they would be working with.  This is not an easy problem and I have spent a lot of time trying to find a solution that worked for everyone (even if it was not perfectly convenient).  After a lot of thought, this is what I decided to go with.  It is better than not having the feature... 

I agree with you that the default should be in the center when no inputs are given. Custom offsets are where we disagree.

Considering your example, how do I know that the GH60 sits centered in the case? What tells me that the board doesn't have any overhang on the left or right? I could assume that the board is center and take measurements, but that could get me into trouble. True, I cannot use that drawing you gave me to determine the exact X coordinate, but having access to the gerbers or a physical board to measure would correct that.

Maybe this is coming from my background as a PCB designer. If I am laying out a board, I want a fixed point on the board to be the origin, and I want to be able to translate that across the design to the enclosure. It is extremely convenient if I can use my software measuring tool to measure the distance between a fixed point and the USB connector. If it is an arbitrary point such as the plate center, I am not sure if I would be able to accurately judge that.


Offline xondat

  • i'm not a star
  • * Maker
  • Posts: 5366
  • Location: United Kingdom
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1665 on: Fri, 29 July 2016, 18:46:49 »


Hey swill, do you think the switch types I made above could ever be added? The 1st is t:3, the 2nd is featured among LZ board, and the 3rd is like the Whitefox (left to right).
Both these cutouts allow switch top removable, but also cut down on the complexity of allowing the design. I also personally think they look a lot cleaner.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1666 on: Fri, 29 July 2016, 20:17:26 »
I understand where you are coming from and I respect that your skills may enable you to be able to solve for finding a distance between some fixed point and the usb port.  However, this tool is built to handle the 95% of people who have almost zero knowledge of PCB design and don't actually have anything but a schematic that a GB was run with.  These people make up the vast majority of my users, so I needed to find a way for them to be able to know how to calculate to find the right location to put the cutout.  No, its not perfect, but perfect is not possible when dealing with an average user's skill set, schemas and layouts they didn't design and layouts that are non-standard.  I have to find a solution that meets all those criterias, so this is the best I can do.  If people are really worried, they can just make the cutout a bit wider to make sure everything will work.

I really don't see any other way this can be done so that any random Joe without any knowledge of PCB design is able to figure out where to put the cutout.  They will either be working off a schematic or have a PCB in his hand that they can measure.  That is the best I can do...

But then the default value is wrong for pretty much everyone.  I think the default location of the USB cutout should be the center if people don't override anything.  Also, PCB schematics produced by pretty much everyone does not give relational measurements from the center of the switch to anything, so everyone would be flying blind.

Also, consider something like the ergodox. The left most switch is not the top left switch in the layout. And what about layouts with rotated clusters. These are all supported by my tool, but would be a total nightmare to support if I did some relational positioning to some random switch in a layout. What if it's 2u and rotated 45 degrees. Way too many edge cases I don't want to have to worry about.

Here is the GH60 schematic for example:

(Attachment Link)

I understand that this may not be ideal for your use case, but you were able to figure it out, which is the point.  It was impossible for me to make a perfect system, so I went with a system that had a sane default and anyone "could" work with given the parameters I set and the schematics they would be working with.  This is not an easy problem and I have spent a lot of time trying to find a solution that worked for everyone (even if it was not perfectly convenient).  After a lot of thought, this is what I decided to go with.  It is better than not having the feature... 

I agree with you that the default should be in the center when no inputs are given. Custom offsets are where we disagree.

Considering your example, how do I know that the GH60 sits centered in the case? What tells me that the board doesn't have any overhang on the left or right? I could assume that the board is center and take measurements, but that could get me into trouble. True, I cannot use that drawing you gave me to determine the exact X coordinate, but having access to the gerbers or a physical board to measure would correct that.

Maybe this is coming from my background as a PCB designer. If I am laying out a board, I want a fixed point on the board to be the origin, and I want to be able to translate that across the design to the enclosure. It is extremely convenient if I can use my software measuring tool to measure the distance between a fixed point and the USB connector. If it is an arbitrary point such as the plate center, I am not sure if I would be able to accurately judge that.

Offline skullydazed

  • * Vendor
  • Posts: 307
  • Location: Bay Area, CA
  • Had to turn PM's off. Email info@clueboard.co!
    • Clueboard
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1667 on: Fri, 29 July 2016, 23:00:54 »
Very cool stuff. Being able to set each side's padding is a great idea.

One of the things I've added to the old engine is the ability to set these parameters in the dictionary section of the file. You can see an example here: https://github.com/skullydazed/kb_builder#keyboard-properties-example

Is that something you might add in the future? If so can we work out a common format so that it's easy for people to use either tool?

I will be looking to solve something similar.  I will review what you have done and we can go from there.  :)

Awesome! :thumb: Don't be afraid to suggest changes, I know in some places (usb connector placement) I've made decisions that you'll disagree with. (I'm honestly thinking about revisiting that one based on your discussion with IBNobody.)

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1668 on: Sat, 30 July 2016, 15:06:33 »
Show Image


Hey swill, do you think the switch types I made above could ever be added? The 1st is t:3, the 2nd is featured among LZ board, and the 3rd is like the Whitefox (left to right).
Both these cutouts allow switch top removable, but also cut down on the complexity of allowing the design. I also personally think they look a lot cleaner.

Yes, I can add the whitefox cutout.  I already support both the left and center cutouts. 

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1669 on: Sat, 30 July 2016, 15:27:11 »
Between the conversation with IBNobody and some previous conversations with skullydazed, I have been thinking a bit about some of the layout details.

I think I have probably made myself pretty clear as to why I choose to use the center as my default and the default point with which to orient the USB cutout.  I realize now that I had basically assumed that people would not use different amounts of padding on the left and right sides of the board (something that was not possible until this release).  Because of that, the padding CAN currently have an affect on the location of the USB cutout relative to the PCB.  This is something that I was trying to avoid by doing the calculations this way.

For example, the center of the GH60 USB cutout is 124.3mm left of center.  If the padding on the left and right are both X, then it doesn't matter what X is, -124.3 will always work.  However, if you have the padding on the left as X and the padding on the right as X+20, now the USB cutout will currently be centered in the center of the case, not the center of the key layout.  So you now have to adapt for that and put the USB cutout at -134.3mm

This is something I wanted to avoid because I wanted to be able to essentially create a library or knowledge base of the common USB cutout locations which would work regardless of the padding added to both sides.  I also wanted this number to be easily deduced from the schematics because that is the only thing 99% of the people will have access to.

Because of this, I am considering changing the calculation to be based on the center of the key layout and not the case layout.  This way the padding added on any side will be essentially irrelevant to the calculation and you will always be able to do the calculation based on the schematic numbers.  This makes sharing details easier and it makes it easier for you to change your mind about the padding and not have to do any math.

One of the main reasons I am thinking about this now is because I am considering adding the ability to specify a list of holes (and potentially polygons) which could be added to any layer of the case.  However, I suspect that calculating the placement of the holes is going to be annoying and you won't want to have to recalculate them once you do it once.  So I think it makes sense for these holes and/or polygons be relative to the center of the key layout.  This means that values can be calculated once and then regardless of the padding, kerf or whatever, they will be consistently drawn in the same place for a similar layout.  This reduces the number of errors people will make and it makes it much easier for people to share hole locations which they have tested and are confident in.

What do you guys think?  I understand that everyone is going to have an opinion and that we may not all agree, but getting some other people's perspective on this would be helpful.

Cheers...
« Last Edit: Sat, 30 July 2016, 18:33:21 by swill »

Offline suicidal_orange

  • * Global Moderator
  • Posts: 4771
  • Location: England
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1670 on: Sat, 30 July 2016, 16:25:44 »
Just to check, would the center of the key layout be calculated based on the the edge of the caps or the switch cutouts?  I'm thinking of a 60% where there's a 1u on the left but possibly the smallest key on the right would be a 1.5u mod - if you go on the cutouts center would be slightly left...
120/100g linear Zealio R1  
GMK Hyperfuse
'Split everything' perfection  
MX Clear
SA Hack'd by Geeks     
EasyAVR mod

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1671 on: Sat, 30 July 2016, 17:02:23 »
Just to check, would the center of the key layout be calculated based on the the edge of the caps or the switch cutouts?  I'm thinking of a 60% where there's a 1u on the left but possibly the smallest key on the right would be a 1.5u mod - if you go on the cutouts center would be slightly left...

The center will be calculated based on the edges of the keycaps because that is the true width.  The size of the keys on either the left or the right should not change the calculated center.  Does that answer your question?

Offline suicidal_orange

  • * Global Moderator
  • Posts: 4771
  • Location: England
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1672 on: Sat, 30 July 2016, 17:07:04 »
Just to check, would the center of the key layout be calculated based on the the edge of the caps or the switch cutouts?  I'm thinking of a 60% where there's a 1u on the left but possibly the smallest key on the right would be a 1.5u mod - if you go on the cutouts center would be slightly left...

The center will be calculated based on the edges of the keycaps because that is the true width.  The size of the keys on either the left or the right should not change the calculated center.  Does that answer your question?

Yes, and it's the good answer :thumb:
120/100g linear Zealio R1  
GMK Hyperfuse
'Split everything' perfection  
MX Clear
SA Hack'd by Geeks     
EasyAVR mod

Offline skullydazed

  • * Vendor
  • Posts: 307
  • Location: Bay Area, CA
  • Had to turn PM's off. Email info@clueboard.co!
    • Clueboard
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1673 on: Sat, 30 July 2016, 18:24:05 »
What do you guys think?  I understand that everyone is going to have an opinion and that we may not all agree, but getting some other people's perspective on this would be helpful.

This seems well thought-out to me and I'm all for it. :thumb:

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1674 on: Sat, 30 July 2016, 18:43:03 »
What do you guys think?  I understand that everyone is going to have an opinion and that we may not all agree, but getting some other people's perspective on this would be helpful.

This seems well thought-out to me and I'm all for it. :thumb:
Had a question for you. The top plate in your version is based on the size of the keycaps? So you would cut out 19.05mm for each 1u of keycap?

Offline ideus

  • * Exalted Elder
  • Posts: 8123
  • Location: In the middle of nowhere.
  • Björkö.
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1675 on: Sat, 30 July 2016, 18:58:49 »
I have a question: Is the MX+Alps cut option any different on holding MX Switches properly? Or should I use the MX only if I want them to be kept in place properly? I'd use the first if there is no significant difference because it looks to me cleaner and easier to cut.

Offline xondat

  • i'm not a star
  • * Maker
  • Posts: 5366
  • Location: United Kingdom
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1676 on: Sat, 30 July 2016, 20:33:06 »
Show Image


Hey swill, do you think the switch types I made above could ever be added? The 1st is t:3, the 2nd is featured among LZ board, and the 3rd is like the Whitefox (left to right).
Both these cutouts allow switch top removable, but also cut down on the complexity of allowing the design. I also personally think they look a lot cleaner.

Yes, I can add the whitefox cutout.  I already support both the left and center cutouts.
Oh so the Alps/MX allows MX switch top removal?

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1677 on: Sat, 30 July 2016, 21:22:34 »
Show Image


Hey swill, do you think the switch types I made above could ever be added? The 1st is t:3, the 2nd is featured among LZ board, and the 3rd is like the Whitefox (left to right).
Both these cutouts allow switch top removable, but also cut down on the complexity of allowing the design. I also personally think they look a lot cleaner.

Yes, I can add the whitefox cutout.  I already support both the left and center cutouts.
Oh so the Alps/MX allows MX switch top removal?
Yes they do...

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1678 on: Sat, 30 July 2016, 21:25:53 »
The MX+Alps cutout is known to be a little less stable. It is not a problem if you are using a pcb, but if you hand wire, they can slide back and forth a bit. This is actually why I changed from them being the default switch type to the H style cutout.

I have a question: Is the MX+Alps cut option any different on holding MX Switches properly? Or should I use the MX only if I want them to be kept in place properly? I'd use the first if there is no significant difference because it looks to me cleaner and easier to cut.


Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1679 on: Sat, 30 July 2016, 22:40:58 »
Minor Update...

I have rolled out the changes discussed in the last few posts.  Now the USB cutout defaults to the center of the layout of the keys (not the case including padding).  The padding no longer affects the calculations of where the USB should go.  This means that you can now calculate the location of the USB cutout based on a PCB schematic and changing the padding around the case in any way will not affect those calculations.  This means that for any sandwich case, the location of -124.3mm will always work for a GH60. 

Hope this makes sense to everyone now.  I will likely be adding more features such as free form holes and such relative to this center point in the middle of the layout.  Let me know if you have questions or concerns...
« Last Edit: Sat, 30 July 2016, 22:42:42 by swill »

Offline skullydazed

  • * Vendor
  • Posts: 307
  • Location: Bay Area, CA
  • Had to turn PM's off. Email info@clueboard.co!
    • Clueboard
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1680 on: Sun, 31 July 2016, 01:04:15 »
What do you guys think?  I understand that everyone is going to have an opinion and that we may not all agree, but getting some other people's perspective on this would be helpful.

This seems well thought-out to me and I'm all for it. :thumb:
Had a question for you. The top plate in your version is based on the size of the keycaps? So you would cut out 19.05mm for each 1u of keycap?

That is correct. I use self.u1 to determine that size.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1681 on: Sun, 31 July 2016, 08:08:02 »
What do you guys think?  I understand that everyone is going to have an opinion and that we may not all agree, but getting some other people's perspective on this would be helpful.

This seems well thought-out to me and I'm all for it. :thumb:
Had a question for you. The top plate in your version is based on the size of the keycaps? So you would cut out 19.05mm for each 1u of keycap?

That is correct. I use self.u1 to determine that size.
OK perfect. That was my plan as well. :)

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1682 on: Sun, 31 July 2016, 14:52:14 »
Feedback please...

This is what I am thinking for adding custom cutouts to the builder.  What are your thoughts on this?  Any other type of preset cutout you want me to try to support?

Does the UI make sense?  Do you think the average person will be able to use it?

« Last Edit: Sun, 31 July 2016, 14:56:15 by swill »

Offline muon

  • Posts: 59
  • Location: San Francisco
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1683 on: Sun, 31 July 2016, 15:19:32 »
Looks fantastic to me, great work  :thumb:

I think it won't be too intuitive to the average user, but the average user probably won't have much use for custom cutouts in any case. Should be good as-is.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1684 on: Sun, 31 July 2016, 15:29:08 »
Looks fantastic to me, great work  :thumb:

I think it won't be too intuitive to the average user, but the average user probably won't have much use for custom cutouts in any case. Should be good as-is.

Ya, that screenshot would be after they already added 3 polygon sets, so they would not get all that initially.  Each time they "Add", they will be presented with configuration details for what they are adding, so it should build on itself pretty well and it should not be information overload like that screenshot.

I may pick an example like the reset cutout on the bottom of a 60% layout as an example to help people understand what they are doing.  We will see how easily I can guide people.

Offline ideus

  • * Exalted Elder
  • Posts: 8123
  • Location: In the middle of nowhere.
  • Björkö.
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1685 on: Sun, 31 July 2016, 18:29:42 »
I'll post feedback after I have the chance to use it.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1686 on: Sun, 31 July 2016, 19:25:54 »
I'll post feedback after I have the chance to use it.
Haha. That kind of defeats the purpose of feedback at this point. If I build it like this, I won't want to rebuild it if you don't like it. :)

Anything you notice that you would change?  It let's you build any number of polygons and streamlines things like drawing multiple of the same size hole.

Offline skullydazed

  • * Vendor
  • Posts: 307
  • Location: Bay Area, CA
  • Had to turn PM's off. Email info@clueboard.co!
    • Clueboard
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1687 on: Sun, 31 July 2016, 20:44:09 »
That UI makes sense to me, and I would be happy to see that used. However, I think a more holistic view of the tools suggests a different overall UI for this feature. (If this is too much work to rearchitect in this way consider the suggestion withdrawn, but this is what I currently view as the ideal.)

Each layer is starting to take on a lot of properties. What if you grouped all of those together per layer? Basically you'd add a list of layers to the current UI and move some of the settings there- Layer type (switch, top, open, etc,) screw hole size, oversize width (for GON-style cases,) and a list of shapes/polygons to place. Advantages include the ability to add/remove layers, a cleaner/more scalable UI, and making it extremely clear to users which layer a particular polygon is associated with. Plus, it reduces the number of drop-down boxes you need, which is always a plus. (I have a thousand other reasons, like enabling live previews so you can see how a setting will affect your particular design, but I won't get into those for sake of not overloading you with info. :) )

The format you POST (and the format of the raw code that gets pasted) wouldn't have to change, you'd just be changing how it's specified in the UI.

I would even suggest simplifying this interface further and removing the ability to specify multiple coordinates. Novice users will be less confused, and experienced users can fall back on the raw code. I think enabling more novice users to use the tool is a good thing, as all expert users were novices once upon a time. Right now it's a sea of dropdown and text input boxes that are daunting. A lot of that could be inferred through contextual clues, so why not arrange the UI to do so?

Offline IBNobody

  • Posts: 113
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1688 on: Sun, 31 July 2016, 21:15:16 »
One of the main reasons I am thinking about this now is because I am considering adding the ability to specify a list of holes (and potentially polygons) which could be added to any layer of the case.  However, I suspect that calculating the placement of the holes is going to be annoying and you won't want to have to recalculate them once you do it once.  So I think it makes sense for these holes and/or polygons be relative to the center of the key layout.  This means that values can be calculated once and then regardless of the padding, kerf or whatever, they will be consistently drawn in the same place for a similar layout.  This reduces the number of errors people will make and it makes it much easier for people to share hole locations which they have tested and are confident in.

What do you guys think?  I understand that everyone is going to have an opinion and that we may not all agree, but getting some other people's perspective on this would be helpful.

Cheers...

In thinking about this problem, I have a solution for it and the USB center point debate we were having. Hole positioning is even more critical to me than USB slots. With the USB port, I could pad the slot with enough padding to make sure that a misplaced USB slot actually lined up with the connector. I cannot do that with screw holes that traverse the PCB. I need a good reference point that I can compare the output of your tool to the holes I have added to the PCB I am laying out.

Solution: Give more data!

Can you also output a text based placement report that gave XY positions of all switches/holes/gaps, and list positions relative to the keymap center, relative to the keymap upper left, and relative to the plate upper left? You might also want to output where your centerpoint is relative to the keymap upper left.

The format doesn't need to be fancy; plain text or CSV works.

Essentially, this makes my life so much easier. I would no longer need to open up the SVG file in Adobe Illustrator to check hole-to-switch-center measurements and the like.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1689 on: Sun, 31 July 2016, 21:57:24 »
One of the main reasons I am thinking about this now is because I am considering adding the ability to specify a list of holes (and potentially polygons) which could be added to any layer of the case.  However, I suspect that calculating the placement of the holes is going to be annoying and you won't want to have to recalculate them once you do it once.  So I think it makes sense for these holes and/or polygons be relative to the center of the key layout.  This means that values can be calculated once and then regardless of the padding, kerf or whatever, they will be consistently drawn in the same place for a similar layout.  This reduces the number of errors people will make and it makes it much easier for people to share hole locations which they have tested and are confident in.

What do you guys think?  I understand that everyone is going to have an opinion and that we may not all agree, but getting some other people's perspective on this would be helpful.

Cheers...

In thinking about this problem, I have a solution for it and the USB center point debate we were having. Hole positioning is even more critical to me than USB slots. With the USB port, I could pad the slot with enough padding to make sure that a misplaced USB slot actually lined up with the connector. I cannot do that with screw holes that traverse the PCB. I need a good reference point that I can compare the output of your tool to the holes I have added to the PCB I am laying out.

Solution: Give more data!

Can you also output a text based placement report that gave XY positions of all switches/holes/gaps, and list positions relative to the keymap center, relative to the keymap upper left, and relative to the plate upper left? You might also want to output where your centerpoint is relative to the keymap upper left.

The format doesn't need to be fancy; plain text or CSV works.

Essentially, this makes my life so much easier. I would no longer need to open up the SVG file in Adobe Illustrator to check hole-to-switch-center measurements and the like.

Yes, I can give you more data.  I would essentially give you the coordinates for the 4 corners of the key layout based on the center of the key layout (0, 0).

So for a 60% board, the points would be:
Code: [Select]
Center: (0, 0)
Top Left: (-142.875, -47.625)
Top Right: (142.875, -47.625)
Bottom Left: (-142.875, 47.625)
Bottom Right: (142.875, 47.625)

I already track the bounds of the key layout (as well as every key for that matter), so this would be very easy for me to give you.  This would let you draw once and then calculate based on that where you want to put other cutouts (like the USB cutout).

Would that work for you?

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1690 on: Sun, 31 July 2016, 22:27:18 »
That UI makes sense to me, and I would be happy to see that used. However, I think a more holistic view of the tools suggests a different overall UI for this feature. (If this is too much work to rearchitect in this way consider the suggestion withdrawn, but this is what I currently view as the ideal.)

Each layer is starting to take on a lot of properties. What if you grouped all of those together per layer? Basically you'd add a list of layers to the current UI and move some of the settings there- Layer type (switch, top, open, etc,) screw hole size, oversize width (for GON-style cases,) and a list of shapes/polygons to place. Advantages include the ability to add/remove layers, a cleaner/more scalable UI, and making it extremely clear to users which layer a particular polygon is associated with. Plus, it reduces the number of drop-down boxes you need, which is always a plus. (I have a thousand other reasons, like enabling live previews so you can see how a setting will affect your particular design, but I won't get into those for sake of not overloading you with info. :) )

The format you POST (and the format of the raw code that gets pasted) wouldn't have to change, you'd just be changing how it's specified in the UI.

I would even suggest simplifying this interface further and removing the ability to specify multiple coordinates. Novice users will be less confused, and experienced users can fall back on the raw code. I think enabling more novice users to use the tool is a good thing, as all expert users were novices once upon a time. Right now it's a sea of dropdown and text input boxes that are daunting. A lot of that could be inferred through contextual clues, so why not arrange the UI to do so?

So I don't really know if I want to go down this route.  First of all, I don't plan to offer raw input.  I feel like it will be too complicated for 95% of the users and the 5% who MAY use it, shouldn't need to because the UI gives all the same functionality, but will less places for the person to make mistakes.

So just to be clear.  The user does not see all of that craziness right away.  That is an example after a user has built out a bunch of elements.  It won't be that crazy when a user tries to use it.

For example, this is how it would look when a user first sees it.



Then when the user turns it on, they get the following options.



From there, they can start adding different types of polygons to different layers as they see fit until they get to something like what I posted originally...

I don't like the idea of grouping it based on layers because I don't want to treat a layer special at all.  I want the exact same logic to apply to all functionality exactly the same way and the cutouts just so happen to go on one or more layers.  This simplifies the development immensely.  Adding a new polygon for example, is as simple as adding the functionality and it will automatically apply to all possible layers.  Adding a new layer is as simple as adding the layer type and all existing polygons will already be wired up to work with it.  I want to make the implementation as flexible as possible, while avoiding developing layer specific logic.  By doing layer specific logic (even if it is just in the UI), it adds a lot of unneeded complexity to the design (IMO).

If I do handle multiple points, I will probably want to change it from [[x1, y1], [x2, y2], ...] to just [x1, y1], [x2, y2], ....  People don't need to know that is an array.  I can stick the brackets around it before submit to validate it is properly formatted JSON.  That will likely make it less confusing.  Because you do have to add a line item for each type of shape you want to add, I do like having the ability to add more than one in a single row.  So if you only need to draw 5 extra holes with 3mm diameter, they can all be added with a single line item. 

I don't expect more than 10-15% of people will actually want to draw extra polygons and the ones that will want to will want as much control as I can give them.  I think this starts small and builds on itself pretty well so people can build most of the functionality they would want with it...

Oh, and live preview is not going to happen with my engine.  :)  Everything is evaluated on the server side, so that is just not very feasible.

Also, I don't see the point in not drawing layers.  Yes, if I was still using FreeCAD and it took 45 seconds to draw, it would make sense.  But even the most complex layouts take less than 10 seconds to draw with my new implementation.

Don't take this the wrong way.  I appreciate the feedback and the work you have done on the old builder, but I am trying to offer as many features and as much flexibility as I can without really changing the complexity of the application from an implementation perspective.  I think the way I have it currently designed lets me do that...

PS - I could make the Layers dropdown a multiselect so you can pick which layers you want a specific cutout to be drawn on.  I think that is probably a more likely use case.  I originally added the concept of All, but with a multiselect it could make it even more flexible.
« Last Edit: Sun, 31 July 2016, 22:34:33 by swill »

Offline ideus

  • * Exalted Elder
  • Posts: 8123
  • Location: In the middle of nowhere.
  • Björkö.
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1691 on: Sun, 31 July 2016, 22:31:33 »
I'd prefer to have something like the keyboard layout editor GUI to create and embed the polygons, instead of capturing the data into boxes. Each polygon may have its own properties, some inherited by its type and other that may be user definable. Does that sound too crazy?

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1692 on: Sun, 31 July 2016, 22:40:03 »
I'd prefer to have something like the keyboard layout editor GUI to create and embed the polygons, instead of capturing the data into boxes. Each polygon may have its own properties, some inherited by its type and other that may be user definable. Does that sound too crazy?

I don't really know what you mean when you say "like the keyboard layout editor".  Which aspects of KLE do you like?  Maybe give me some screenshots...

The reason for the text boxes is to be able to guide the user so they know what is needed for a specific type of polygon.  For example, a Rounded Rectangle will require a width, height and a radius and the points specified will be the center point of each occurrence.

Obviously, the different polygons will have different requirements, so if you select a different polygon, then different boxes will appear for you to fill in.

I don't know how a "user defined" type would work.  There is the Custom Cutout, where you can specify a path of a polygon and that path is cut (so you could do triangle or whatever)...

I feel like I am missing your point though.  Can you give me some more details as to what you mean?

Offline IBNobody

  • Posts: 113
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1693 on: Sun, 31 July 2016, 22:45:13 »

Yes, I can give you more data.  I would essentially give you the coordinates for the 4 corners of the key layout based on the center of the key layout (0, 0).

So for a 60% board, the points would be:
Code: [Select]
Center: (0, 0)
Top Left: (-142.875, -47.625)
Top Right: (142.875, -47.625)
Bottom Left: (-142.875, 47.625)
Bottom Right: (142.875, 47.625)

I already track the bounds of the key layout (as well as every key for that matter), so this would be very easy for me to give you.  This would let you draw once and then calculate based on that where you want to put other cutouts (like the USB cutout).

Would that work for you?

Can you throw in switch spacing (19.05mm/750mil/0.75") and switch to keymap edge (which should be 19.05mm/2 or 375 mil, right?). I know that is what you use from posts here but it may not be conveyed in the tool, and someone might just assume a 19mm spacing thinking that 1U=19mm.

Going by these numbers and my numbers for spacing, my upper left switch would be centered at (-133.35,-38.1), correct? If so...  :thumb: But if you can calculate this for me already, all the better.

You might also want to throw in unit conversion to mils or inches. Even though Cherry gives measurements in mm, they use mil spacing.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1694 on: Sun, 31 July 2016, 23:18:35 »

Yes, I can give you more data.  I would essentially give you the coordinates for the 4 corners of the key layout based on the center of the key layout (0, 0).

So for a 60% board, the points would be:
Code: [Select]
Center: (0, 0)
Top Left: (-142.875, -47.625)
Top Right: (142.875, -47.625)
Bottom Left: (-142.875, 47.625)
Bottom Right: (142.875, 47.625)

I already track the bounds of the key layout (as well as every key for that matter), so this would be very easy for me to give you.  This would let you draw once and then calculate based on that where you want to put other cutouts (like the USB cutout).

Would that work for you?

Can you throw in switch spacing (19.05mm/750mil/0.75") and switch to keymap edge (which should be 19.05mm/2 or 375 mil, right?). I know that is what you use from posts here but it may not be conveyed in the tool, and someone might just assume a 19mm spacing thinking that 1U=19mm.

Going by these numbers and my numbers for spacing, my upper left switch would be centered at (-133.35,-38.1), correct? If so...  :thumb: But if you can calculate this for me already, all the better.

You might also want to throw in unit conversion to mils or inches. Even though Cherry gives measurements in mm, they use mil spacing.

Yes, I can give you the 1u spacing (of 19.05mm) as well.  Yes, the top left switch would be centered at (-133.35,-38.1), assuming it is a 1u switch.  I would rather not confuse things by putting any other units other than mm in the UI in order to keep things clear that I expect input in mm.  I have had a lot of requests by people to add Inches as an acceptable input unit.  I think I am probably reasonably close to being able to offer Inches as well as an input type, but I have not planned that work yet.  It gets a bit complicated because I will have to handle all of the 'default' values differently if I add the ability to change unit types.  I essentially have to treat it like a multilingual site, so if units is mm then for example the USB cutout is 10mm, but if it is inches, I have to change the tooltip and help overlay details, etc, on the fly to the equivalent in inches.  There are a bunch of annoying things like that which I have not thought through.  It is probably something I will do at some point, but I have not looked at those details yet...

Offline IBNobody

  • Posts: 113
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1695 on: Sun, 31 July 2016, 23:40:34 »
Ok. Thank you. When you get your hole UI ready for beta, I will give it a go. I have a plate layout ready for some holes.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1696 on: Sun, 31 July 2016, 23:48:25 »
Ok. Thank you. When you get your hole UI ready for beta, I will give it a go. I have a plate layout ready for some holes.

Fair enough.  Sounds good...  BTW, nothing goes into beta here.  Either I release it or I don't.  :P 

Offline skullydazed

  • * Vendor
  • Posts: 307
  • Location: Bay Area, CA
  • Had to turn PM's off. Email info@clueboard.co!
    • Clueboard
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1697 on: Mon, 01 August 2016, 01:25:59 »
So I don't really know if I want to go down this route.  First of all, I don't plan to offer raw input.  I feel like it will be too complicated for 95% of the users and the 5% who MAY use it, shouldn't need to because the UI gives all the same functionality, but will less places for the person to make mistakes.

I hope you'll reconsider that. I think there's a lot of value in one person giving another person raw code for an entire keyboard, not just a layout. If you support specifying polygons in the raw code you can also build a knowledge base of common cutout locations to support specific layouts or boards. This is similar to a desire you expressed about USB cutout locations:

This is something I wanted to avoid because I wanted to be able to essentially create a library or knowledge base of the common USB cutout locations which would work regardless of the padding added to both sides.  I also wanted this number to be easily deduced from the schematics because that is the only thing 99% of the people will have access to.

I don't like the idea of grouping it based on layers because I don't want to treat a layer special at all.  I want the exact same logic to apply to all functionality exactly the same way and the cutouts just so happen to go on one or more layers.  This simplifies the development immensely.  Adding a new polygon for example, is as simple as adding the functionality and it will automatically apply to all possible layers.  Adding a new layer is as simple as adding the layer type and all existing polygons will already be wired up to work with it.  I want to make the implementation as flexible as possible, while avoiding developing layer specific logic.  By doing layer specific logic (even if it is just in the UI), it adds a lot of unneeded complexity to the design (IMO).

I'm not suggesting anything on the backend change. I'm also not suggesting that there be layer specific logic. In fact, if you want to always generate the same set of layers that's compatible with my core argument. :)

I am suggesting that the existing functionality that you're already proposing could be exposed differently, and in a way that increases flexibility down the road. For example, how long until you decide that you want to have different sized screw holes for different layers? (Say you want to thread the bottom plate screw holes and use larger holes on the rest of the plates.) How long until you support GON-style oversized middles (and if you add that feature, why would it be limited to one layer)? How long until you support different screw hole shapes for particular layers? (Say, a hex shape for embedding a nut within a layer.)

Also, as a counterpoint, you are ALREADY doing layer specific logic in the way I suggest. Each new polygon you add has a drop-down for selecting the layer. I'm suggesting that instead of having that dropdown you have a list of layers, and each entry in that list has UI elements for adding polygons. Nothing about the backend implementation changes, just the way in which the UI collects information from the user.

I don't expect more than 10-15% of people will actually want to draw extra polygons and the ones that will want to will want as much control as I can give them.  I think this starts small and builds on itself pretty well so people can build most of the functionality they would want with it...

Just to be clear, I'm not suggesting you "nerf" anything, just that you expose the functionality in a way that makes the easy things easy, and the hard things possible.

Oh, and live preview is not going to happen with my engine.  :)  Everything is evaluated on the server side, so that is just not very feasible.

Never say never. ;) You'd be surprised at the things you can do to make that sorta thing feel live without actually being live.

Also, I don't see the point in not drawing layers.  Yes, if I was still using FreeCAD and it took 45 seconds to draw, it would make sense.  But even the most complex layouts take less than 10 seconds to draw with my new implementation.

And you say that live preview will not happen. :p

Don't take this the wrong way.  I appreciate the feedback and the work you have done on the old builder, but I am trying to offer as many features and as much flexibility as I can without really changing the complexity of the application from an implementation perspective.  I think the way I have it currently designed lets me do that...

At the end of the day you have to be happy with your work. Don't worry about making me happy, I'll have comments both positive and not so positive no matter which direction you pick. :) I just hope that I can help make your final implementation stronger, either through suggesting good ideas or helping you to articulate why your ideas are the right ones.

Offline skullydazed

  • * Vendor
  • Posts: 307
  • Location: Bay Area, CA
  • Had to turn PM's off. Email info@clueboard.co!
    • Clueboard
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1698 on: Mon, 01 August 2016, 01:28:19 »
Also, just as a random separate thought- It may end up that you go with your simpler implementation for now, and implement something closer to my idea when those other features I allude to actually materialize.

Offline swill

  • * Elevated Elder
  • Thread Starter
  • Posts: 3365
  • Location: Canada eh
  • builder & enabler
    • swillkb.com
Re: NEW FEATURES!!! swill's plate building tool [builder.swillkb.com]
« Reply #1699 on: Mon, 01 August 2016, 07:42:24 »
@skullydazed I still don't like the idea of creating different sections for each layer because I feel like I am limiting my flexibility that way.  If I do any features that are expected to span layers, that model makes things really hard.

So lets take an example.  I want to create 2 more holes.  One is a 2mm hole in the open and closed layers and the other is a 3mm hole in the switch and top layers.

In both your idea and my original idea, you would have to create 4 distinct line items.  The exact same details for the 2mm hole would have to be repeated in two layers.  The exact same details for the 3mm hole would have to be repeated on two different layers.

Now lets say you change your mind and you want to move the 2mm hole a couple mm one way.  Now you have to figure out which layers it is on and then update each layer independently.  This just feels wrong to me...

So here is a new proposal.  Instead of picking the layer (or having the layer sections pre-populated), you pick which layer(s) you want the cutouts in using a multiselect.  This way, if a specific cutout is expected to be on more than one layer, you can handle that cutout as a single item.

This would reduce the 4 line items in the example above to 2 line items.  If you wanted to move the 2mm hole, you would only have to move it once and it would be moved on all associated layers.

The UI flow would look more like this with this idea...

144022-0