remember auto-removed constraints for undo
This commit is contained in:
parent
7795b0bc19
commit
04e872a61f
@ -417,8 +417,11 @@ void Constraint::MenuConstrain(Command id) {
|
|||||||
c.ptA = gs.point[0];
|
c.ptA = gs.point[0];
|
||||||
|
|
||||||
// If a point is at-midpoint, then no reason to also constrain
|
// If a point is at-midpoint, then no reason to also constrain
|
||||||
// it on-line; so auto-remove that.
|
// it on-line; so auto-remove that. Handle as one undo group.
|
||||||
|
SS.UndoRemember();
|
||||||
DeleteAllConstraintsFor(Type::PT_ON_LINE, c.entityA, c.ptA);
|
DeleteAllConstraintsFor(Type::PT_ON_LINE, c.entityA, c.ptA);
|
||||||
|
AddConstraint(&c, /*rememberForUndo=*/false);
|
||||||
|
break;
|
||||||
} else if(gs.lineSegments == 1 && gs.workplanes == 1 && gs.n == 2) {
|
} else if(gs.lineSegments == 1 && gs.workplanes == 1 && gs.n == 2) {
|
||||||
c.type = Type::AT_MIDPOINT;
|
c.type = Type::AT_MIDPOINT;
|
||||||
int i = SK.GetEntity(gs.entity[0])->IsWorkplane() ? 1 : 0;
|
int i = SK.GetEntity(gs.entity[0])->IsWorkplane() ? 1 : 0;
|
||||||
@ -493,6 +496,7 @@ void Constraint::MenuConstrain(Command id) {
|
|||||||
"(symmetric about workplane)\n"));
|
"(symmetric about workplane)\n"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// We may remove constraints so remember manually
|
||||||
if(c.entityA == Entity::NO_ENTITY) {
|
if(c.entityA == Entity::NO_ENTITY) {
|
||||||
// Horizontal / vertical symmetry, implicit symmetry plane
|
// Horizontal / vertical symmetry, implicit symmetry plane
|
||||||
// normal to the workplane
|
// normal to the workplane
|
||||||
@ -514,10 +518,14 @@ void Constraint::MenuConstrain(Command id) {
|
|||||||
if(gs.lineSegments == 1) {
|
if(gs.lineSegments == 1) {
|
||||||
// If this line segment is already constrained horiz or
|
// If this line segment is already constrained horiz or
|
||||||
// vert, then auto-remove that redundant constraint.
|
// vert, then auto-remove that redundant constraint.
|
||||||
|
// Handle as one undo group.
|
||||||
|
SS.UndoRemember();
|
||||||
DeleteAllConstraintsFor(Type::HORIZONTAL, (gs.entity[0]),
|
DeleteAllConstraintsFor(Type::HORIZONTAL, (gs.entity[0]),
|
||||||
Entity::NO_ENTITY);
|
Entity::NO_ENTITY);
|
||||||
DeleteAllConstraintsFor(Type::VERTICAL, (gs.entity[0]),
|
DeleteAllConstraintsFor(Type::VERTICAL, (gs.entity[0]),
|
||||||
Entity::NO_ENTITY);
|
Entity::NO_ENTITY);
|
||||||
|
AddConstraint(&c, /*rememberForUndo=*/false);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AddConstraint(&c);
|
AddConstraint(&c);
|
||||||
|
Loading…
Reference in New Issue
Block a user