//-------------------------------------------------------------------------------------------------- #endregion #region Selection void _OnSelectionChanged(ToolAction toolAction) { if (CurrentTool != null) { return; } if (_MoveAction != null) { _MoveAction.Stop(); _MoveAction = null; } _UpdateSelections(); if (SelectedSegments.Any() || SelectedPoints.Any()) { _MoveAction = new MoveSketchPointAction(this); if (!WorkspaceController.StartToolAction(_MoveAction, false)) { return; } _MoveAction.Previewed += _OnMoveActionPreview; _MoveAction.Finished += _OnMoveActionFinished; var segPoints = SelectedSegments.SelectMany(seg => seg.Points); _MoveAction.SetSketchElements(Sketch, SelectedPoints.Union(segPoints).ToList()); } WorkspaceController.Invalidate(); }
//-------------------------------------------------------------------------------------------------- public List <SketchConstraint> CreateConstraint <T>() where T : SketchConstraint { if (!CanCreateConstraint <T>()) { return(null); } var constraints = SketchConstraintCreator.Create <T>(Sketch, SelectedPoints, SelectedSegmentIndices); if (constraints != null) { Sketch.AddElements(null, null, null, constraints); Sketch.SolveConstraints(false); Sketch.SolveConstraints(true); InteractiveContext.Current.UndoHandler.Commit(); _MoveAction?.Stop(); Elements.DeselectAll(); Elements.Select(constraints); _UpdateSelections(); } return(constraints); }