Show inches as mixed fraction in ArchUnits
This commit is contained in:
@@ -60,13 +60,11 @@ namespace SawCut
|
|||||||
public static string FormatFromInches(double totalInches)
|
public static string FormatFromInches(double totalInches)
|
||||||
{
|
{
|
||||||
var feet = Math.Floor(totalInches / 12.0);
|
var feet = Math.Floor(totalInches / 12.0);
|
||||||
var inches = totalInches - (feet * 12.0);
|
var inches = Helper.ConvertToMixedFraction(totalInches - (feet * 12.0));
|
||||||
|
|
||||||
inches = Math.Round(inches, 8);
|
|
||||||
|
|
||||||
if (feet > 0)
|
if (feet > 0)
|
||||||
{
|
{
|
||||||
return $"{feet}'-{inches}\"";
|
return $"{feet}' {inches}\"";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
49
SawCut/Helper.cs
Normal file
49
SawCut/Helper.cs
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace SawCut
|
||||||
|
{
|
||||||
|
public static class Helper
|
||||||
|
{
|
||||||
|
public static string ConvertToMixedFraction(decimal input, int precision = 32)
|
||||||
|
{
|
||||||
|
// Get the whole number part
|
||||||
|
int wholeNumber = (int)input;
|
||||||
|
|
||||||
|
// Get the fractional part
|
||||||
|
decimal fractionalPart = Math.Abs(input - wholeNumber);
|
||||||
|
|
||||||
|
if (fractionalPart == 0)
|
||||||
|
{
|
||||||
|
return wholeNumber.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the fractional part to a fraction
|
||||||
|
int numerator = (int)(fractionalPart * precision);
|
||||||
|
int denominator = precision;
|
||||||
|
|
||||||
|
// Simplify the fraction
|
||||||
|
int gcd = GetGreatestCommonDivisor(numerator, denominator);
|
||||||
|
numerator /= gcd;
|
||||||
|
denominator /= gcd;
|
||||||
|
|
||||||
|
return $"{wholeNumber}-{numerator}/{denominator}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string ConvertToMixedFraction(double input)
|
||||||
|
{
|
||||||
|
return ConvertToMixedFraction((decimal)input);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int GetGreatestCommonDivisor(int a, int b)
|
||||||
|
{
|
||||||
|
while (b != 0)
|
||||||
|
{
|
||||||
|
int temp = b;
|
||||||
|
b = a % b;
|
||||||
|
a = temp;
|
||||||
|
}
|
||||||
|
return Math.Abs(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -46,6 +46,7 @@
|
|||||||
<Compile Include="Bin.cs" />
|
<Compile Include="Bin.cs" />
|
||||||
<Compile Include="BinItem.cs" />
|
<Compile Include="BinItem.cs" />
|
||||||
<Compile Include="Fraction.cs" />
|
<Compile Include="Fraction.cs" />
|
||||||
|
<Compile Include="Helper.cs" />
|
||||||
<Compile Include="MultiBin.cs" />
|
<Compile Include="MultiBin.cs" />
|
||||||
<Compile Include="Nesting\BestFitEngine.cs" />
|
<Compile Include="Nesting\BestFitEngine.cs" />
|
||||||
<Compile Include="Nesting\IEngine.cs" />
|
<Compile Include="Nesting\IEngine.cs" />
|
||||||
|
|||||||
Reference in New Issue
Block a user