//-------------------------------------------------------------------------------------------------- #endregion #region Constraint Creation public bool CanCreateConstraint <T>() where T : SketchConstraint { // Don't allow constraint creation if any constraint is selected if (SelectedConstraints != null && SelectedConstraints.Any()) { return(false); } return(SketchConstraintCreator.CanCreate <T>(Sketch, SelectedPoints, SelectedSegmentIndices)); }
//-------------------------------------------------------------------------------------------------- public override void Delete() { SelectedConstraints.ForEach(c => Sketch.DeleteConstraint(c)); SelectedSegments.ForEach(s => Sketch.DeleteSegment(s)); SelectedPoints.ForEach(p => SketchUtils.DeletePointTrySubstituteSegments(Sketch, p)); Sketch.SolveConstraints(true); InteractiveContext.Current.UndoHandler.Commit(); Select(null, null); }
//-------------------------------------------------------------------------------------------------- void _UpdateStatusText() { if (SelectedSegments.Any() && !SelectedPoints.Any() && !SelectedConstraints.Any()) { StatusText = SelectedSegments.Count == 1 ? string.Format(SegmentSelectedStatusText, SelectedSegments[0].GetType().Name) : string.Format(MultiSegmentSelectedStatusText, SelectedSegments.Count); } else if (!SelectedSegments.Any() && SelectedPoints.Any() && !SelectedConstraints.Any()) { StatusText = SelectedPoints.Count == 1 ? string.Format(PointSelectedStatusText, SelectedPoints[0]) : string.Format(MultiPointSelectedStatusText, SelectedPoints.Count); } else if (!SelectedSegments.Any() && !SelectedPoints.Any() && SelectedConstraints.Any()) { StatusText = SelectedConstraints.Count == 1 ? string.Format(ConstraintSelectedStatusText, SelectedConstraints[0].GetType().Name) : string.Format(MultiConstraintSelectedStatusText, SelectedConstraints.Count); } else if (SelectedSegments.Any() || SelectedPoints.Any() || SelectedConstraints.Any()) { StatusText = MixedSelectedStatusText; } else { StatusText = UnselectedStatusText; } }