fix(assembly): update flip-detection baseline during drag steps #312
@@ -509,6 +509,14 @@ void AssemblyObject::doDragStep()
|
||||
if (validateNewPlacements()) {
|
||||
setNewPlacements();
|
||||
|
||||
// Update the baseline positions after each accepted drag step so that
|
||||
// the orientation-flip check in validateNewPlacements() compares against
|
||||
// the last accepted state rather than the pre-drag origin. Without this,
|
||||
// cumulative rotation during a long drag easily exceeds the 91-degree
|
||||
// threshold and causes the solver result to be rejected ("flipped
|
||||
// orientation"), making parts appear to explode.
|
||||
savePlacementsForUndo();
|
||||
|
||||
auto joints = getJoints(false);
|
||||
for (auto* joint : joints) {
|
||||
if (joint->Visibility.getValue()) {
|
||||
|
||||
Reference in New Issue
Block a user