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);