@@ -113,9 +113,9 @@ public class TrassenElementExt : TrassenElement
113
113
/// <value>Hochwert am Elementanfang</value>
114
114
public double Xstart { get { return x ; } }
115
115
/// <value>Rechtswert am Elementende</value>
116
- public double Yend { get { return successor . y ; } }
116
+ public double Yend { get { return successor != null ? successor . y : y ; } }
117
117
/// <value>Hochwert am Elementende</value>
118
- public double Xend { get { return successor . x ; } }
118
+ public double Xend { get { return successor != null ? successor . x : x ; } }
119
119
/// <value>Station am Elementanfang</value>
120
120
public double S { get { return s ; } }
121
121
/// <value>Länge des Elements</value>
@@ -191,7 +191,7 @@ public void Relocate(double x, double y, double deltaGamma = double.NaN, double
191
191
if ( ! double . IsNaN ( deltaK_start ) )
192
192
{
193
193
// TODO decide if we need to change the length and if yes, do we want to update the stationvalues s
194
- l = l ; // * (deltaK_start + deltaK_end) / 2;
194
+ l = l ; // * (deltaK_start + deltaK_end) / 2;
195
195
if ( Double . IsNaN ( deltaK_end ) ) { deltaK_end = deltaK_start ; }
196
196
switch ( this . TrassenGeometrie )
197
197
{
@@ -214,6 +214,8 @@ public void Relocate(double x, double y, double deltaGamma = double.NaN, double
214
214
/// </summary>
215
215
public bool PlausibilityCheck ( bool bCheckRadii = false )
216
216
{
217
+ double tolerance = 1e-8 ;
218
+
217
219
WarningCallouts . Clear ( ) ;
218
220
//Radii
219
221
if ( kz == Trassenkennzeichen . Gerade && r1 != 0 & r2 != 0 ) { AddWarningCallout ( "given Radii are not matching to KZ as it is 'Gerade''" , Xstart , Ystart ) ; }
@@ -227,8 +229,13 @@ public bool PlausibilityCheck(bool bCheckRadii = false)
227
229
{
228
230
if ( s + l != successor . s ) { AddWarningCallout ( "length missmatch. element is not connected to successor" , Xend , Yend ) ; }
229
231
}
230
- //Connectivity & continuity by Interpolation
231
- double tolerance = 0.00000001 ;
232
+ //Length and geomtrical Length Check
233
+ if ( TrassenGeometrie is Gerade )
234
+ {
235
+ double geoL = Math . Sqrt ( Math . Pow ( Xend - Xstart , 2 ) + Math . Pow ( Yend - Ystart , 2 ) ) ;
236
+ if ( Math . Abs ( l - geoL ) > tolerance ) { AddWarningCallout ( "length missmatch. elements Length parameter, does not match to Geometry by " + ( l - geoL ) , Xstart , Ystart ) ; }
237
+ }
238
+ //Connectivity & continuity by Interpolation
232
239
if ( Interpolation . X ? . Length > 0 && successor != null )
233
240
{
234
241
//Connectivity
0 commit comments