supermerill / SuperSlicer

G-code generator for 3D printers (Prusa, Voron, Creality, etc.)
4.03k stars 516 forks source link

Infill pattern doesn't rotate with the object #4304

Open CuredPrusa opened 2 weeks ago

CuredPrusa commented 2 weeks ago

Related to all SS versions. Unfortunately, it is coming all the way from Prusa. Infill has a defined filling angle. When model gets rotated, the infill angle doesn't follow the model position/rotation, but a relative position to the build plate. That messes up complete infill pattern, otherwise precisely defined for object's requirements.

image

confuzled-dev commented 2 weeks ago

been frustrated by this for a while

CuredPrusa commented 2 weeks ago

I'm actually quite amazed this wasn't fixed years ago. I have found this same flaw in Cura and Orca too. Very peculiar phenomenon.

supermerill commented 2 weeks ago

I can adjust it but when you have multiple part into an object, the rotation should be:

Also, when the rotation has 3 components, the z rotation used is:

CuredPrusa commented 2 weeks ago

I can't imagine when and why should infill angle be related to the platter. Whenever the infill angle matters, it's always adjusted to the appropriate fit inside particular perimeter. So any consequential automatic change of the infill angle in relation to the perimeter, for whatever reason (in this case rotation, regardless if it's multi or solo), is actually a problem which has to be manually inspected and manually corrected, to preserve infill angle related to perimeter as originally desired.

So to put it pragmatic, the infill connection points to the perimeter should be considered as GLUED to the perimeter in original object position, for whatever rotation it done. I guess this means that angle degrees should be calculated to perimeter plan. Yes, there could be many perimeters in various positions, rounded as well, but starting position doesn't matter much because user adjust afterwards precisely when observing, inspecting. Or the starting point could be related to platter, but once the infill is there it should become a matter of perimeter. The important thing is it should stay the way it was set.

supermerill commented 2 weeks ago

Here I set manually the first object to 0° angle and the second to 45°, as it's rotated by 45°, is it what you want the software to do automatically? image

the infill connection points to the perimeter should be considered as GLUED to the perimeter in original

imo, not possible if the object is rotated/cut/modified/assemble with others.

confuzled-dev commented 2 weeks ago

Maybe an easy right click "set infill angle" would be better. You are never going to have the infill right all the time based on a preconfigured setting. So just make it easier to modify

On Tue, Jun 11, 2024, 10:22 Merill @.***> wrote:

Here I set manually the first object to 0° angle and the second to 45°, as it's rotated by 45°, is it what you want the software to do automatically? image.png (view on web) https://github.com/supermerill/SuperSlicer/assets/6536403/df609646-3553-4614-a7af-414f80fcaf99

— Reply to this email directly, view it on GitHub https://github.com/supermerill/SuperSlicer/issues/4304#issuecomment-2160897946, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGDEEYPRAXFOBJSDJJ2L3LZG4B4HAVCNFSM6AAAAABI7XZQD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRQHA4TOOJUGY . You are receiving this because you commented.Message ID: @.***>

CuredPrusa commented 2 weeks ago

the infill connection points to the perimeter should be considered as GLUED to the perimeter in original

imo, not possible if the object is rotated/cut/modified/assemble with others.

That's a pity because this is exactly what I have in mind. If this is not possible, that means duplicating object by instances and rotate them around the platter for better convenience of printing is actually impossible because infill pattern would always shift. Example is in screenshot of my first post. To correct that behaviour, I'd have to copy-paste complete object and manually change infill angle and solid fill and ironing for each copy of original object through bunch of individual modifiers. Yes, it's a doable workaround, but it's tedious and frustrating, especially for complex objects with several infill chambers and manually arranged infill patterns and density.

You are never going to have the infill right all the time based on a preconfigured setting.

I never thought about it. Now, this changes the whole approach in rearranging the position of the object(s).

CuredPrusa commented 1 week ago

As I already made it clear, I'm not familiar with coding of such a complex program as slicer. But, what comes to my mind is to make a check box which adds or subtracts angle degrees to anything related to filling/ironing, in direct relation to XYZ rotation of the object.

supermerill commented 1 week ago

added a setting to follow the object's rotation, as it's easy enough to add and it makes sense. For the cases where the rotation is too strange, the fill_angle field is added to the quick-modifier 'infill'