public override string GetStepParameters() { var parameters = new List <string>(); parameters.Add(GlobalId != null ? GlobalId.ToStepValue() : "$"); parameters.Add(OwnerHistory != null ? OwnerHistory.ToStepValue() : "$"); parameters.Add(Name != null ? Name.ToStepValue() : "$"); parameters.Add(Description != null ? Description.ToStepValue() : "$"); parameters.Add(RelatingStructuralMember != null ? RelatingStructuralMember.ToStepValue() : "$"); parameters.Add(RelatedStructuralConnection != null ? RelatedStructuralConnection.ToStepValue() : "$"); parameters.Add(AppliedCondition != null ? AppliedCondition.ToStepValue() : "$"); parameters.Add(AdditionalConditions != null ? AdditionalConditions.ToStepValue() : "$"); parameters.Add(SupportedLength != null ? SupportedLength.ToStepValue() : "$"); parameters.Add(ConditionCoordinateSystem != null ? ConditionCoordinateSystem.ToStepValue() : "$"); return(string.Join(", ", parameters.ToArray())); }
public static double ConvertLength(double measurement, SupportedLength length, ConvertToLength convertTo) { double result = double.NaN; if (!double.IsNaN(measurement)) { switch (convertTo) { case ConvertToLength.Millimeter: switch (length) { case SupportedLength.Millimeter: result = measurement; break; case SupportedLength.Meter: result = measurement * 1e3; break; case SupportedLength.Inches: result = measurement * Constants.InchToMillimeters; break; case SupportedLength.Centimeter: result = measurement * 10; break; default: System.Diagnostics.Debug.WriteLine($"{length} not supported."); break; } break; case ConvertToLength.Meter: switch (length) { case SupportedLength.Millimeter: result = measurement * 1e-3; break; case SupportedLength.Inches: result = measurement * Constants.InchToMillimeters * Constants.MillimetersToMeters; break; case SupportedLength.Meter: result = measurement; break; case SupportedLength.Centimeter: result = measurement * 1e-2; break; default: System.Diagnostics.Debug.WriteLine($"{length} not supported."); break; } break; case ConvertToLength.Centimeter: switch (length) { case SupportedLength.Millimeter: result = measurement * 0.1; break; case SupportedLength.Meter: result = measurement * 100; break; case SupportedLength.Inches: result = measurement * 2.54; break; case SupportedLength.Centimeter: result = measurement; break; default: System.Diagnostics.Debug.WriteLine($"{length} not supported."); break; } break; default: break; } return(result); } return(measurement); }
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { ConvertToLength convertTo = ConvertToLength.Millimeter; string defaultUnits; if (parameter is string paraString) { if (Enum.TryParse(paraString, out ConvertToLength result)) { convertTo = result; } defaultUnits = shortHandnames[(int)convertTo]; } else { defaultUnits = shortHandnames[(int)convertTo]; } if (value is string str) { if (ValueWithUnits.TryParse(str, out ValueWithUnits valueWithUnits)) { //var match = Regex.Match(str, WeightWithUnitsConverter.regexFindNumberAndUnit); SupportedLength supported = FilamentMath.SupportedLengthAlias(string.IsNullOrEmpty(valueWithUnits.Units) ? defaultUnits : valueWithUnits.Units); return(FilamentMath.ConvertLength(valueWithUnits.Value, supported, convertTo)); } else if (CompoundFractionWithUnits.TryParse(str, out CompoundFractionWithUnits compoundFractionWithUnits)) { //var fracMatch = Regex.Match(str, regexFindFraction); SupportedLength supported = FilamentMath.SupportedLengthAlias(!string.IsNullOrEmpty(compoundFractionWithUnits.Units) ? compoundFractionWithUnits.Units : "in"); return(FilamentMath.ConvertLength(compoundFractionWithUnits.Value, supported, convertTo)); //double number; //double numerator; //double denominator; //if (double.TryParse(fracMatch.Groups["numerator"].Value, out numerator) && double.TryParse(fracMatch.Groups["denominator"].Value, out denominator)) //{ // if (!string.IsNullOrEmpty(fracMatch.Groups["whole"].Value)) // { // if (double.TryParse(fracMatch.Groups["whole"].Value, out number)) // { // return (number + (numerator / denominator)) * ConversionFactor(string.IsNullOrEmpty(fracMatch.Groups["units"].Value) ? "in" : fracMatch.Groups["units"].Value.ToLower(), convertTo); // } // else // return double.NaN; // } // else // { // return (numerator / denominator) * ConversionFactor(string.IsNullOrEmpty(fracMatch.Groups["units"].Value) ? "in" : fracMatch.Groups["units"].Value.ToLower(), convertTo); // } } else { return(double.NaN); } } else { return(double.NaN); } }