jeffminton / keyboard_stl_generator

Generate a 3D model from a keyboard design from keyboard layout editor and split up the design so it can be printed on a 3D printer
GNU Affero General Public License v3.0
107 stars 8 forks source link

Error: Rectangle Missing from Plate and Top when Splitting due to board size #2

Open Nova38 opened 2 years ago

Nova38 commented 2 years ago

It appears that when I have some switches that don't have keys above it in the layout, that are also near the dividing line of the split, it is generating a hole instead of solid board. When I add keys to fill in that space, or make it generate in one piece the error goes away

With out the extra keys: Hole_missing

With the added keys: With_keys_filled_in

Here is a link to the Json file i am using. The parameter file is also in that folder. https://github.com/541-Capstone/keyboard_stl_generator/blob/main/groovebox/Groovebox.json

jeffminton commented 2 years ago

Thanks for the message. Quick question. Is the pink side what you are trying to generate or the green side? Also what app are you using to view the stl and can you let me know what options you were using for the parameters.json and what command line options you were using?

Nova38 commented 2 years ago

I was trying to generate both sides. The tool those screens hots were from was (https://www.3d-tool.com/en-cad-viewer-download.htm#freeviewer) but I have also tried opening them in cura and Prussia slicer. As for the command line args and the parameters they should be in that fork I linked in the groovebox folder. The command line args are in the make.ps1 file.

Nova38 commented 2 years ago

https://github.com/541-Capstone/keyboard_stl_generator/tree/main/groovebox

jeffminton commented 2 years ago

I'll take a look. I figured it had nothing to do with the STL viewer I just want to be able to recreate the issue as best I can. Thanks

Nova38 commented 2 years ago

Thanks! Where in the code is the splitting happening? I on my first quick look didn't find it. (I have wanted to dig in to learning solidpython for a bit)

p.s. Thanks for open sourcing this project. It has saved me about a days' worth of work creating a encloser for a midi synthesizer that is using mx keys. (Also the default parameters where amazing. They perfectly fit and supported adafruits key breakout [https://www.adafruit.com/product/5157])

jeffminton commented 2 years ago

Awesome. I'm glad it's working.

The function to split the board up is here https://github.com/jeffminton/keyboard_stl_generator/blob/d8f0380e9a79b57ff9bb642f48463ed14efa973a/keyboard.py#L534

It is being called in get_assembly here https://github.com/jeffminton/keyboard_stl_generator/blob/d8f0380e9a79b57ff9bb642f48463ed14efa973a/keyboard.py#L268

It works to build up a bunch of shapes that extend out from the keys in the section being generated and those shapes are removed from the fully generated board. Right now it is really only working on splitting to the left and right not top and bottom. That is future work but I hope it wont affect things for most people anyway because I expect most boards are longer than they are tall.

jeffminton commented 2 years ago

Yeah I am seeing issues with both groovebox and groovebox_alt in the splitting algorithm. I have something of an idea as to what the cause is. I will have to work on some additional logic in the get_top_section_remove_block code.

I'll let you know when I have deployed a fix

Nova38 commented 2 years ago

https://github.com/541-Capstone/keyboard_stl_generator/tree/main/groovebox

Fantastic, Thank you!

Nova38 commented 2 years ago

Slightly off topic what kind of screws did you use in the example photos?

jeffminton commented 2 years ago

I just used some m4 screws I had left from an old project.

jeffminton commented 2 years ago

I have pushed up a change to correct the issue with you groovebox design. There is still an issue with the groovebox_alt design that I am still working on.