Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Multiple Options for Hole Configuration #179

Merged
merged 27 commits into from
Jul 23, 2024

Conversation

EmperorArthur
Copy link
Collaborator

This completely re-works how holes for bins are created. Adding multiple options that can be mixed and matched.

Re-worked Features

The code for how these are generated has changed, but the output is the same.

  • Hole functions moved to "gridfinity-rebuilt-holes.scad".
  • Simplified refined_holes().
  • Simplified implementation of "only_corners" option in gridfinityBase(...).
  • Constants re-named to be more clear.

New Features

  • Can mix and match most of these by check-boxes.
  • Optional Chamfered magnet holes, Based on PR Add option for a chamfered magnet holes #144, but implemented completely differently.
  • Optional Crush ribs for magnet holes.
  • Magnet holes with the printable support, but without screw holes.
  • Screw holes without magnet holes.
  • Refined Holes with screw holes.

That last one is admittedly pretty crazy, but there was no reason to prevent it. The only restriction is magnet holes don't work with refined holes, since they both do the same thing.

@Ruudjhuu This contains the pictures you were asking for in PR #144, but is incompatible with that PR.

There are additional pictures in the "images/base_hole_options/" folder.

options
magnet_and_screw_holes_printable_chamfered_with_crush_ribs

@EmperorArthur EmperorArthur marked this pull request as draft April 19, 2024 05:11
@EmperorArthur
Copy link
Collaborator Author

I have an update to the printable option that uses the affine matrices, and I've found works better in Cura. Just completed yesterday, but I was debating how I wanted to back-port it.
I will post a comment and convert this from draft status when those are done.

Everything now goes through block_base_hole(...)
Noting in gridfinity-rebuilt-utility knows or cares what sytle_hole contains.
Similar to ljbeal's Pull Request.
However, the implementation is completely different.

kennetek#144
Makes holes print better.

Use Affine Translation Matrices to be clear
how everything works without being too verbose.
Does not include all combinations.
Helps prevent / minimize issues with filament droop.
Expecially when Cura decides to start the top of hole in mid-air.

Visible Changes:
* Supportless screw holes have a 3rd layer.
* Supportless magnet holes without screw holes have a 3rd layer.

Backend Changes:
* Switched to a completely different generation strategy.
  * Previous strategy directly produced negative.
  * New strategy is to make a positive,
    then use that to create a negative.
* Algorithm for multiple layers is not perfect,
  but works within tollerances set.
* These are not (yet) triggered/run by the CI/CD system.
@EmperorArthur EmperorArthur force-pushed the update_holes branch 2 times, most recently from f43b034 to d1b3943 Compare April 28, 2024 05:59
Used to ensure all hole options work.
May want to consider auto-generating these
as part of the documentation build.
@EmperorArthur EmperorArthur marked this pull request as ready for review April 28, 2024 06:06
@EmperorArthur
Copy link
Collaborator Author

Ready for review/merge.

Since the last review I have done the following:

  • Rebased from main branch.
  • re-wrote the make_hole_printable function (again).
  • Set printable magnet holes without screw holes to have 3 layers to a smaller diameter top.
  • Set printable screw holes to have 3 layers.
  • Printable magnet holes with screw holes still keep 2 layers.
  • Added test cases that generate images of all the hole options for the bins.
  • Re-generated all the bin hole options images.

Cura likes to print in mid-air if "top/bottom pattern" is set to "Concentric!" So the multiple printable layers help with droop and mitigate that bug.

The test cases only run on Windows, but that's purely a hard-coded path issue. Once this is merged I will work on a PR for the CI/CD system, and add test case to prevent #180 from happening again.

* Updated constant names to match previous changes.
This can be re-used for the baseplate.
Difference was small enough the slicer mostly ignored it.
Hole changes were not tested against it.
Many oppertunities for improvements here.
As opposed to being a parameter of `create_image`.

Also made CameraArguments support fluent.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants