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.71k stars 1.93k forks source link

Moving holes after previewing hollowing does not work correctly #3736

Open ardenpm opened 4 years ago

ardenpm commented 4 years ago

Version

2.2.0-beta+win64

Operating system type + version

Windows 10 (1903)

Behavior

good

And after preview geometry is generated:

bad

Notice how the hole falls into the original hole when moving the hole around. This makes it very difficult to make slight adjustments to the hole position if you've previewed the hollowing.

lukasmatena commented 4 years ago

I understand the problem but the solution is more complicated than it looks. The reason the hole sticks to the updated geometry is that it must be possible to place the hole on the interior of the cavity. And because the updated geometry also contains the hole, the result is what you see.

What you are proposing would mean to keep the inside and outside walls separate and track the mouse along both meshes separately. It will also probably mean to make another copy of some mesh internally (because of the clipping plane, which needs the meshes combined). I'm not sure if it's worth the effort. Currently the fine adjustment of the holes must be done before the preview (or after it is invalidated again). If we decide to change it, it will not be in 2.2.0 release.

ardenpm commented 4 years ago

Can see the complexity there. One thing that would help I think when moving holes in the invalidated state at least would be to have an outline or ghost of where the hole was before.

Often when I am moving a hole, I want to do so relative to the existing placement, so it helps to see where the hole was. With that addition I think invalidating the hollowing to move the holes would work well.

So I could then uncheck/check the Hollow this object box to invalidate and drag holes around but still know where they were before I started dragging. That would be a good compromise I think.