static int Prec(string format)
{
if (format.Length > 2 && format[2] >= '0' && format[2] <= '8')
return (int)format[2] - (int)'0';
else
return Convert.ToInt16(AcadApp.GetSystemVariable("LUPREC"));
}
/// <summary>
/// Аналог double.ToString(format), но добавляет дробные форматы Автокада:
/// CU - как настроено в текущем документе автокада ( LUPREC )
/// AR - Architectural
/// EN - Engineering
/// FR - Fractional
/// во всех форматах, кроме CU, можно указать точность как число от 0 до 8и
/// </summary>
public static string ToFStr(this double length, string format = "")
{
if (string.IsNullOrWhiteSpace(format)) format = "CU";
if (format == "CU")
return Converter.DistanceToString(length);
if (format.StartsWith("AR"))
return Converter.DistanceToString(length, DistanceUnitFormat.Architectural, Prec(format));
if (format.StartsWith("EN"))
return Converter.DistanceToString(length, DistanceUnitFormat.Engineering, Prec(format));
if (format.StartsWith("FR"))
return Converter.DistanceToString(length, DistanceUnitFormat.Fractional, Prec(format));
return length.ToString(format);
}