Allow specifying rotation patterns for Sparse and Solid infill#9924
Conversation
…nsistent pattern between layers. This Zig Zag infill is inspired by the Zig Zag infill in Cura. Change-Id: I798affa99f4b5c3bd67f47643e67530fb7c3e0cb (cherry picked from commit 2808d04d5deef6f99f9618648e46f11de03efc98)
Ported from BambuStudio
|
@SoftFever |
|
Good mod! It so happened that independently of each other, the author of Orca Slicer and I asked the same question. I suggest extending this feature by adding a simple metalanguage of this patterns system:
|
Hi @pi-squared-studio I agree that the best approach would be to combine the logic in your PR with the options introduced in this PR. While reviewing your PR, I was hesitant to add numerous extra options for niche requirements. A more elegant solution would be to expand the option in this PR to support metalanguage, allowing power users to define flexible rotation patterns. I'd like to make some changes to your proposed parsing rule to ensure consistency: Use
|
|
Hi, One more point, in order not to generate a lot of unnecessary input fields, I suggest using the "Solid infill direction" and "Sparse infill direction" fields for patterns, because if we just write "15" in it, it will mean the angle of the infill direction. Wow! It's hard to imagine right now, but what a powerful tool it can be in the end. I also want to say that I am not a professional programmer. Programming is my rare hobby. Therefore, I do not know all the subtleties of writing code. Therefore, I will take the second place in the implementation of ideas. But I'd appreciate it if I could be of any help. |
|
OK, I saw the code. Tell me, please, how can I work on it so that you can see the changes? It's just that, as I said, I'm not a professional programmer, and I still don't know much about the traditions of changing code on GitHub and this community. |
Awesome! I'm going to merge this PR soon. Once merged, you can fork from the latest main branch and from there you can make the necessary changes. regarding the /, while it's used for division, it's also commonly denoted for "per", e.g. mm/s |
Yes, I agree. But if you follow the logic of the pattern system, then all operations will be looped anyway. Therefore, the expressions +10/1 or just +10 are equivalent in a simple pattern. What then makes sense to consider for +10/5, a rotation of 5 times by 2 degrees or 50 degrees in 5 stages? Then can enter a * sign for the number of repetitions? Writing +10*5 will just say that this instruction should be repeated 5 times...
In my code, the calculations of any fill were slightly rethought, and archaic methods were ignored. All manipulations are calculated in one block. Therefore, if you have any questions, ask them. |
|
One more remark. If the pattern is going to be looped, then will need to separate the understanding of setting the initial angle from setting it every loop. I suggest this entry +10/0 - it will show that these instructions will be applied only once. more complex patterns for trained users: This scheme is very simple for both ordinary users, of whom there will be 99%, and for advanced users, for special applications. |
In this case, can use the # symbol, which will indicate the layers being rotated at the same time. Together with the @ symbol (as I assumed in the long run it will set the height at which the template instruction will act), will they create a certain group of rangeficators(?) instructions. And the * and / instructions will determine the quantificators, or the number of cycles of the multiplication and division instructions. Of course, this needs to be implemented at the last moment, if necessary.
Yes, I saw it. And I also came across this. I suspect that this is an archaic overall function designed to rotate any infill by 90 degrees, regardless of its pattern. At first, it was supposed to use 2 infills, the Line and the Rectilinear one, but when more appeared that didn't require rotation, this function was simply override it so that it did not work. It seems to me that it is necessary to inspect the work of the infill functions and make them determine their own rotation if they depend on such logic. In this case, the rotate_angle parameter will be superfluous, and canceling it will make the code run faster.
Okay, but now there are no examples to quickly show. Previously, I achieved a beautiful effect in the powerbank case model. I used transparent PETG when I was making only 2 walls and a Gyroid 20% infill. In sunlight, it gave a very beautiful effect, when the interior infill sparkled with sparks like a car's retroreflector. If I can rotate the inner infill, then I think I can come up with even more application effects. |
I'm afraid that would make things a bit too complicated and, in my opinion, it doesn't add any new functionality. Consider this: if the user wants to rotate per layer, they can specify the This option can work alongside the
This is designed specifically that way. Considering a honeycomb infill, by design it should be laid consistently without height-based rotation. If we accidentally allow users to rotate along with the height, they might cause issues because a lot of overhang infills would be created. If users are not aware of this, it will fail their prints. So this acts as a safety measure to prevent unintended errors for common users. One thing I'm not against is if we can add a switch in the preference settings that allows users to unlock this hidden feature, then they can enable rotation along with the layers for all infill patterns if they want to print some visually cool infills? |
* Add process images * Reorder like GUI + images * GUI images subfolder * MVF restandarizarion (naming pending) Update volumetric speed calibration docs and image paths * Improved SVGs * Infill Wall Overlap * Apply gap fill + Anchor * Minor change * Internal Solid Infill * Images++ * Step file import image update * Add VFA calibration documentation and images * fix pa-tower image not visible * Removed WIP in not implemented features. * Added Old and New Order in xlsx * Wall generator * Wiki #9924 * New Zag Infills Co-Authored-By: Rodrigo <[email protected]> * Infill Rescaled images + sharpness 2d honeycomb image fix * Update infill_desc_calculator.xlsx * Rename extrusion rate smoothing references for consistency * Add wiki and link for top/bottom shells settings * Updated Wiki Links tab.cpp * Update infill_desc_calculator.xlsx * Fix indentation in top/bottom shells option group * Fill images optimized Removed Metadata Reduce color bit to 16 --------- Co-authored-by: Rodrigo <[email protected]>
|
Please, check this In the latest edition of this metalanguage, I have collected all the experience I gained working on this implementation. The great thing is that it turns out that you can embed this metalanguage without changing the usual settings! By the way, you asked me how this feature can be applied. For example, I will give this screenshot from one video of using a curly open infill. This is a presentation stand printed on a large-size printer. |


Description
This PR allow user to specify rotation pattern for sparse and solid infill.
NOTE: the old "Rotate solid infill direction" option will be automatically upgraded to the new option.
Screenshots/Recordings/Graphs
Sparse infill:
sparse.mp4
Solid infill:
solid.mp4
closes #3970
Tests