prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.65k stars 1.92k forks source link

Cannot mirror support enforcers (even though the option exists) #4910

Open jt-github opened 3 years ago

jt-github commented 3 years ago

Version

2.2.0+win64

Operating system type + version

Windows 10 v2004 build 19041.572

Behavior

While a printable object (along with all of its support enforcers) can be mirrored (right-click the object, click Mirror, select an axis), support enforcer objects cannot be mirrored individually or in groups, even though the Mirror option still appears when right-clicking an enforcer.

This is not a new feature request since the menu option exists; this is a bug since nothing actually happens when attempting to mirror a support enforcer object (or group of them).

Young__Red_Dragon.zip

jt-github commented 3 years ago

Mirroring support enforcers would be extremely useful when working with symmetric (or mostly symmetric) parts, such as the attached dragon. Normal auto-generated support "everywhere" creates a massive amount of extraneous supports on the model, hence the need for support enforcer objects.

lukasmatena commented 3 years ago

this is a bug since nothing actually happens when attempting to mirror a support enforcer object

As far as I can tell, that is not a bug. The enforcer is mirrored in its coordinate system, exactly as mirroring works for object parts. You can hardly tell for symmetric objects that you are using of course. Load a custom enforcer (asymetric stl) and see. I agree that whether this is the expected action with group selection might be questionable.

I suggest you try the new 2.3.0-alpha1 for now, the enforcers can be painted on the mesh which at least makes the job faster.

jt-github commented 3 years ago

Oh, wow, painting on the mesh would be a fantastic improvement! I'll have to try that out.

Just to clarify, you're saying that enforcers are automatically (but invisibly) mirrored... but across what axis? If this is the case, then that would certainly be a bug because it would cause issues on asymmetric parts. Either way, this bug isn't terribly important for my purposes if the on-mesh painting method works well.

neophyl commented 3 years ago

No, if you add a cube shaped enforcer and mirror it then it is mirrored on its local coordinate space. However when you mirror a cube you get - ta da a cube. Its relative to its own center location and not to the build plate position. KInd of the same as rotating a modifier. One you cant tell from the original one.
I think Lukas is saying to load in a custom shaped model as a modifier, say a triangle, then mirror that and see what happens.

jt-github commented 3 years ago

Doh! Thanks for the explanation, @neophyl. Now I understand what @lukasmatena was trying to tell me. Mirroring works, but only on those simple objects... with essentially no net effect.

So, modifying my request/complaint, it's really about mirroring groups of support enforcer objects. This group-based mirroring could help anyone who wants to use "classic" support enforcer objects on a symmetric object so they can reduce the amount of setup time required. That said, I'm hoping the whole painting-on-the-model thing works better for me anyhow.

bubnikv commented 3 years ago

Do you need that feature? Or are you happy with the paint-on supports?

It is not such a problem to add a function to do the mirroring you wish, however it is difficult to present it to the user.

jt-github commented 3 years ago

The paint-on will probably work instead, but I can still see situations where the mirroring would be useful (and maybe even more efficient and/or intuitive than the paint-on approach). As for presenting it to the user, I would suggest a checkbox that appears whenever more than one object is selected with a label like “Mirror as group” that, when checked, flips the entire group over rather than flipping each object individually as it does today. Obviously, when not checked, it should act just like it does now.

From: Vojtěch Bubník notifications@github.com Sent: Monday, December 7, 2020 8:26 AM To: prusa3d/PrusaSlicer PrusaSlicer@noreply.github.com Cc: John A. Tolle jt_github@digitolle.net; Author author@noreply.github.com Subject: Re: [prusa3d/PrusaSlicer] Cannot mirror support enforcers (even though the option exists) (#4910)

Do you need that feature? Or are you happy with the paint-on supports?

It is not such a problem to add a function to do the mirroring you wish, however it is difficult to present it to the user.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/prusa3d/PrusaSlicer/issues/4910#issuecomment-739951022 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AALPK3BM5G6SN4ZB6GKWYZ3STTQYHANCNFSM4SVNP2KA . https://github.com/notifications/beacon/AALPK3BR6OTTX44P6MJTTEDSTTQYHA5CNFSM4SVNP2KKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOFQNMDLQ.gif