# Change FillTpmsFK.cpp to use MarchingSquares.hpp.
This is still a work in progress, but it does seem to work fine, and I
thought I'd put this up there for people to have a play with. I also
have a few questions because I'm not 100% familiar with the rest of the
codebase and I'm going to use the review of this to figure a few things
out.
This builds on #10747 which simplified and significantly optimized
MarchingSquares.hpp by replacing most of FillTpmsFK.cpp's implementation
to just use that marching squares implementation instead of
re-implementing it's own.
I don't yet have any solid speed comparisons but it feels a bit
subjectively faster, though I think that most of the delay in previewing
the slicing results is not in the fill-generation so it's a bit hard to
tell. I don't know if there are any tests/benchmarks/etc that I could
use for testing this, but I'm probably going to add some to this PR at
some point.
Even if this doesn't give a significant speed-up, it does significantly
simplify the code and make it easier to re-use for other equation based
fill-patterns. This could re-implement gyroid or TpmsD with about 5
lines of C code to inherit from `ScalarField` and redefine the `float
get_scalar(coordf_t x, coordf_t y, coordf_t z)` function with the
appropriate equation.
I don't think it would be faster than the current gyroid or TpmsD fills
though, since they directly generate a single line using the equation
and then just copy and shift it. However, it might not be much slower
and it would simplify the code to do them all the same way.
But the main reason I'm doing this is this can be used to implement far
more complicated fills that can't really be implemented any other way.
In particular I'm working towards a gyroid fill that dynamically varies
it's density based on how close it is to the walls.
I have a bunch of questions about some of the other bits that I'll post
as comments against the review-diff.
# Screenshots/Recordings/Graphs
I'll add some when I get there... but so far the results look identical
to the previous implementation even when I zoom in close.
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
* refactor Infill rotation template
* clean up comments
* set default solid_infill_rotate_template to empty
* Fix an issue that infill_direction solid_infill_direction not working as expected
* update based on feedback
* Infill Line Multiplier
* Modular Offset Function
* Lightning multiline
* Crosshatch Multiline
ipCrosshatch
* cleaning
Cleaning
clean2
* 3d Honeycomb
cut poliline ends
* Fill Tpmsd Multiline
Fill Tpmsd Multiline
* Update Multiline function
multiline funcion simplify
* Update FillTpmsD
* FillHoneycomb
* Update src/libslic3r/PrintConfig.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix Honeycomb Multiline
Simplify polylines in honeycomb infill generation
* Improve multiline infill support and pattern simplification
Moved multiline infill application after pattern translation and simplification in Fill3DHoneycomb, and added multiline support to FillAdaptive. Updated honeycomb and 3D honeycomb infill to simplify polylines to 5x line width. Extended GUI and config to support multiline for Adaptive Cubic infill pattern and clarified max value comment.
minimum changes
Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
* Increase multiline fill spacing in honeycomb infill
Adjusts the spacing parameter in the multiline_fill function to 1.1 times the original spacing, potentially improving infill distribution or print quality.
* Refine fill_multiline tooltip and pattern support logic
Updated the tooltip for the 'fill_multiline' parameter to improve clarity and punctuation. Refactored the logic in ConfigManipulation.cpp to clarify which infill patterns support multiline infill.
* better management of non supported infill patterns
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
* SPE-2405: Add Zig Zag infill that is rectilinear infill but with a consistent pattern between layers.
This Zig Zag infill is inspired by the Zig Zag infill in Cura.
Change-Id: I798affa99f4b5c3bd67f47643e67530fb7c3e0cb
(cherry picked from commit 2808d04d5deef6f99f9618648e46f11de03efc98)
* Add Cross zag and locked-zag for shoes
Ported from BambuStudio
* wip
* sparse infill roratation template
* solid_infill_rotate_template
* remove rotate_solid_infill_direction
* hide sparse infill rotation template for non applicable infill pattern
* hide solid_infill_rotate_template for non supported solid infill patterns
* update icon
* support empty string for ConfigOptionFloats deserialize
* fix build errors
---------
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
* Fix infill anchor missing
* Correctly process cases without fill lines in FillRectilinear::fill_surface_with_multilines()
* Fix infill anchor missing for several other infill patterns
* Fix infill anchor missing for rectilinear and aligned rectilinear infill pattern
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Use ipArchimedeanChords pattern for flow rate calibration
* Merge branch 'main' into feature/different_pattern_flowrate
* improve order
* Merge branch 'main' into feature/different_pattern_flowrate
1. add rectilinear interface pattern for organic support
jira: STUDIO-7181
2. add tree support optgroup
Change-Id: I94882bc34a61c6adc06b8ecbc9f2323f9b039aac
(cherry picked from commit a8142ab3f37e0bd140a31a7e635b8475f471d7e3)
(cherry picked from commit 69cf816b9431bc21ca0187c7db1148e2d2e898ab)
* ENH: Enabled gap fill algorithm for all solid fill types
* Made gap fill an option & refactored code into its own method
* Code comment updates
* Converted gap fill to enum and control filter out gap fill in the UI
* Update label for consistency
* Spelling mistake
* Initial port of the new ensure vertical thickness algorithm from PrusaSlicer.
Based on prusa3d/PrusaSlicer@1a0d8f5130
* Remove code related to "Detect narrow internal solid infill" as it's handled by the new ensuring code
* Support different internal solid infill pattern
* Ignore removed options
---------
Co-authored-by: Pavel Mikuš <pavel.mikus.mail@seznam.cz>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Remove BambuLab's implementation of solid infill bridging enhancement
, will use Prusa's instead
* Port "Extend sparse infill" from Prusa
* Improve anchoring by shifting the lines half-spacing
* Add missing fill patterns
* Improve anchoring by keeping fine details
* Make sure the opposite directions do not cancel each other
---------
Co-authored-by: Pavel Mikus <pavel.mikus.mail@seznam.cz>
Previously grid infill may be cut, so the strength on one direction is too weak. Now we switch the order at neighboring layers, so the strength of both directions are good enough.
Change-Id: I0ba768eeee34ce430e43ea57d8f06c209d469d39
These two settings is necessary for some
specific user case.
Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: I9d70679932ac90c34296393d0e8bb8aebd8ebe48
1. add default support base pattern (lightning for tree support,
rectilinear for normal)
2. change default support interface pattern to "Default" (concentric for
absoluble material, rectilinear for others)
3. delete tree_support_with_infill, replace no-infill optio with "None" infill type
4. delete HAS_LIGHTNING_INFILL macro (lightning is impossible to be
removed now)
5. fix the issue that tree support base may grow above interface by
adding virtual nodes (distance_to_top<0).
Change-Id: I5affa44e1f72d0dc54052927f2b315de83702870
(cherry picked from commit a2b41b1dfd9227e68ac6d971312133ec3382baa7)
Add loop inside sparse infill of lower layer
to provide archor for internal bridge.
This option controls how many lower layers generate
loop path.
Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: Ifdb6db9090115732aa2cacf5d155b587a10e18fc
(cherry picked from commit 4fdb87ecd5c2e680f6bad2d018ba39cd05f787ce)
Enable arachne for concentric pattern by
referring to PrusaSlicer
Also remove useless pattern we added.
Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: Ie2574f7fc4751ebdf1caab4de52013f3101e104f
ConcentricGapFill pattern was used for internal narrow
solid infill. Use arachne engine instead to remove
gap fill inside the pattern and improve the extrusion path
Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: I758d7c72eb71cc37026b7cebf746cc345014c3f5
(cherry picked from commit 0b6bacd21a091afc13d7b36a69e5b10f155bc6f8)