-
-
Notifications
You must be signed in to change notification settings - Fork 886
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
Better tree support for pointy overhangs: Cradle Generation #1880
base: main
Are you sure you want to change the base?
Conversation
…quest with more information soon.
…e is disabled, based on support_tree_roof_cradle setting.
…ips to be slightly too large
This brings me to a question: Should how close the cradle can get to the model be independent of xy distance ? |
…f it is larger than the (hardcoded) minimum fake roof area when roof is disabled
…of that) sometimes when the influence area becomes very small, caused by a very small hole in the avoidance.
# Conflicts: # include/SupportInfillPart.h # include/TreeSupportTipGenerator.h # include/TreeSupportUtils.h # src/FffGcodeWriter.cpp # src/SupportInfillPart.cpp # src/TreeModelVolumes.cpp # src/TreeSupport.cpp # src/TreeSupportTipGenerator.cpp
…o supply the UI with the settings
Implemented significant changes to the Conan file and GitHub workflow files in order to increase stability and maintainability. The Conan file now fetches versions and requirements from a new data source, while unnecessary or redundant code in the workflow files has been removed or simplified. This ensures smoother implementation and easier troubleshooting for future needs. Contributes to CURA-11440
Contributes to CURA-11440
# Conflicts: # include/sliceDataStorage.h # src/TreeSupportTipGenerator.cpp # src/sliceDataStorage.cpp
…line count by one to improve strength of support skin.
CURA-12017 (related to CURA-6410)
Though it's technically possible to do it the other way around because of the constexpr, it doesn't make much 'aestetic' sense. done as part of CURA-12017
CURA-11875 Co-authored-by: Thomas Rahm <67757218+ThomasRahm@users.noreply.github.com>
The calculated line width is quite important here, because GCodePath objects may be merged (or not) depending on it, and sometimes the value would be rounded to a very close value, but not equal. We now use llrint to make sure we round to the neareset value. CURA-12038
To compute the end type, we previously used a lambda function, that was declared static. Thus, the arguments were apparently captured when calling it the first time, and didn't change for subsequent calls. As one of them is a pointer, this could crash if the pointed object had been destroyed in the meantime. Although the minimum fix is just to remove the static for the function, I removed the function itself because it really doesn't make sense anymore in this context. CURA-12042
done as part of CURA-11875 Co-authored-by: Erwan MATHIEU <erwan.mathieu@ultimaker.com>
…pport_2 # Conflicts: # CMakeLists.txt # include/FffGcodeWriter.h # include/SupportInfillPart.h # include/TreeModelVolumes.h # include/TreeSupport.h # include/TreeSupportElement.h # include/TreeSupportTipGenerator.h # include/TreeSupportUtils.h # include/sliceDataStorage.h # include/utils/polygon.h # src/FffGcodeWriter.cpp # src/SkirtBrim.cpp # src/SupportInfillPart.cpp # src/TreeSupport.cpp # src/TreeSupportTipGenerator.cpp # src/bridge.cpp # src/sliceDataStorage.cpp # src/support.cpp # src/utils/polygon.cpp # src/utils/polygonUtils.cpp
…ions that were lost by the merge (because they were in the poylgons class)
This is actually actively wanted and used in the code (see the unionPolygons() signature, note the missing argument), to solve self-overlap and the like. The added early outs where blocking that use here, leading to hard to trace problems, like tree support stopping midway. CURA-12061
…scene. This could get increasingly inaccurate results with more objects on the buildplate, since the center could be outside of the objects. CURA-12043
… that of the scene. (Ultimaker#2126)
…ier meshes are stored and fix a small bug preventing non drop down support meshes from slicing correctly
…. Also prevent parallel for from being used in a nested way.
…ted towards the model, or away from it.
Tree Support Cradle Generation
One issue of tree supports is that pointy overhangs are more prone to failing. This PR tries to solve this by surrounding the model with lines orthogonal to the model outline.
The model is not densely surrounded with support, as this would make the support impossible to remove without damaging the model.
It works great in my tests, but i do have some stringing issues with my printer, which may cause the result to be better than with a well tuned printer.
One of my issues is that the the cradle currently has more settings than i think it should.
I am very open to further feedback, as currently this feature has way to many settings.
The settings are currently added using a dummy plugin found here
Settings:
Enforce Initial Layer Diameter
Enlarge tips so that the branch could reach Initial layer Diameter. This should improve the tree supports ability to support areas very close to the buildplate. Enabling support skin or using support roof is strongly recommended.
Disabled:
Enabled:
Cradle Height
The height of the cradle to support pointy overhangs. The cradle will stop generating if the pointy part of the model connects with another part of the model that either rests on the buildplate or already has its own cradle. Set to 0 to disable.
Small Cradle Height:
Large Cradle Height:
Minimum Cradle Height
If a cradle smaller than this would generate, it just doesn't.
Cradle Lines
Amount of lines that should be generated around the model.
Low Amount Of Cradle Lines:
Large Amount Of Cradle Lines:
Cradle Length
Length of the lines that generate around the model.
Small Cradle Length:
Large Cradle Length:
Cradle Line Width
Width of the lines that generate around the model. I would just hard-code this to line width.
Small Cradle Line Width:
Large Cradle Line Width:
Cradle Threshold
Maximum area a pointy overhang may have for the cradle to generate.
Cradle Base Support Area Diameter
Size of the tips below an pointy overhang overhang. Also the size of tips below lines if
Large Cradle Line Tips
is active and the roof base ifCradle Roof Type
isLarge Cradle and Base
Small Cradle Tip Size:
Large Cradle Tip Size:
Cradle XY Distance
Distance of the cradle lines from the model, dependent on the height of cradle lines below it (Cradle XY distance)
Visualisation:
Cradle Z Distance
Distance between cradle lines and the support that supports them. Makes cradle lines easier to fold over.
Large Cradle Line Tips
Generate large tips below the cradle lines.
Tree Support Large Cradle Line Tips Off:
Tree Support Large Cradle Line Tips On:
Cradle Roof Type
How the cradle behaves if roof is enabled.
Regular Support
Cradle:
Cradle and Base:
Large Cradle and Base:
Support Skin Height
Height of Support Skin generated to support cradle/interface/model parts that would fall inside of a support area. What i call Support Skin is just a support area with high density zig-zag infill.
Small Support Skin Height:
Large Support Skin Height:
Support Skin Line Distance
Distance between the lines for said high density support infill.Small Support Skin Line Distance:
Large Support Skin Line Distance:
Support Skin for Tips Threshold
Generate support skin for any tips that have at least this diameter.
Idea behind it
The support structure connects to the model from multiple sides, holding it in tension. These connections are thin (one or two layers). This occurs not only at the beginning of a pointy overhang (where the model itself may not be stable yet), but also further up (configurable with the cradle XY distances and heights).
When removing the support these connection points are twisted off (basically by just folding over the cradle lines).
The benefit to holding the model in tension over just surrounding it with material is that it should reduce the chances of the model tipping over slightly (which could enable the nozzle to crash into the model, and rip it of)
To improve ease of removal these lines do not touch the model, put are printed closer than the tolerances allow (distance of 0.1mm or 0.15mm).
If soluble support it could be possible to reduce the distance to 0mm and make it much thicker than a few layers. I cant test this though.
Currently known limitations:
Cradle Length
Things that should be done