Index: DamClients/DamUI/trunk/src/Dam/Forms/DamSpatialEditorDecorator.cs =================================================================== diff -u -r3438 -r3454 --- DamClients/DamUI/trunk/src/Dam/Forms/DamSpatialEditorDecorator.cs (.../DamSpatialEditorDecorator.cs) (revision 3438) +++ DamClients/DamUI/trunk/src/Dam/Forms/DamSpatialEditorDecorator.cs (.../DamSpatialEditorDecorator.cs) (revision 3454) @@ -366,14 +366,25 @@ } // Add drawing object for slip circle + var startPoint = new Point(); + var endPoint = new Point(); if (ResultSlice != null) { DrawSlipCircle(); + DetermineSlipCircleZoomLimits(out startPoint, out endPoint); } decoratedSpatialEditor.EmptySelection = new EmptyShape(locationJob); - decoratedSpatialEditor.ZoomToExtents(); + if (ResultSlice != null) + { + + decoratedSpatialEditor.Zoom(startPoint, endPoint); + } + else + { + decoratedSpatialEditor.ZoomToExtents(); + } } else { @@ -407,6 +418,31 @@ decoratedSpatialEditor.AddShape(slipCircleObject); } + /// + /// Set the zoom limits when the slip circle is shown. + /// + /// The bottom left screen coordinates. + /// The top right screen coordinates. + private void DetermineSlipCircleZoomLimits(out Point startPointScreen, out Point endPointScreen) + { + const int verticalMargin = 10; + + var startPointWorld = new Point2D() + { + X = ResultSlice.StabilityResultSlice[0].BottomLeftPoint.X, + Y = CurrentSoilProfile.SoilProfile.BottomLevel - verticalMargin + }; + + var endPointWorld = new Point2D() + { + X = ResultSlice.StabilityResultSlice[ResultSlice.StabilityResultSlice.Count - 1].BottomRightPoint.X, + Y = ResultSlice.ActiveCenterPoint.Y + verticalMargin + }; + + startPointScreen = decoratedSpatialEditor.CoordinateSystem.ConvertToScreen(startPointWorld); + endPointScreen = decoratedSpatialEditor.CoordinateSystem.ConvertToScreen(endPointWorld); + } + private void DrawSoilProfile() { decoratedSpatialEditor.AddObject(CurrentSoilProfile);