Author Topic: Maybe a useful Extension Method  (Read 1953 times)

0 Members and 1 Guest are viewing this topic.

It's Alive!

  • Retired
  • Needs a day job
  • Posts: 8858
  • AKA Daniel
Maybe a useful Extension Method
« on: April 14, 2008, 08:56:14 AM »
Time will tell  :mrgreen:

Code: [Select]
using System;
using AcRx = Autodesk.AutoCAD.Runtime;

namespace AcExtensions
{
  public static class DoubleExtention
  {

    public static double StringToDistance(this Double m_num, String src)
    {
      return AcRx.Converter.StringToDistance(src);
    }
    public static double StringToDistance(this Double m_num,
                                         String src, 
                                         AcRx.DistanceUnitFormat format)
    {
      return AcRx.Converter.StringToDistance(src, format);
    }

    public static bool TryStringToDistance(this Double m_num, String src, out double num)
    {
      num = 0.0;
      try
      {
        num = AcRx.Converter.StringToDistance(src);
      }
      catch
      {
        return false;
      }
      return true;
    }

    public static bool TryStringToDistance(this Double m_num,
                                           String src,
                                           out double num,
                                           AcRx.DistanceUnitFormat format)
    {
      num = 0.0;
      try
      {
        num = AcRx.Converter.StringToDistance(src , format);
      }
      catch
      {
        return false;
      }
      return true;
    }

    public static string DistanceToString(this Double m_num)
    {
      return AcRx.Converter.DistanceToString(m_num);
    }

    public static string DistanceToString(this Double m_num,
                                          AcRx.DistanceUnitFormat format,
                                          int precision)
    {
      return AcRx.Converter.DistanceToString(m_num, format, precision);
    }
  }
}

and sample

Code: [Select]
[CommandMethod("doit1")]
    public static void doit1()
    {
      Editor ed = AcadApp.DocumentManager.MdiActiveDocument.Editor;
      try
      {
        Double n = 0;

        if (n.TryStringToDistance("1 1/4", out n))
          ed.WriteMessage(n.DistanceToString());
       
      }
      catch (System.Exception ex)
      {
        ed.WriteMessage(ex.Message);
      }
    }

    [CommandMethod("doit2")]
    public static void doit2()
    {
      Editor ed = AcadApp.DocumentManager.MdiActiveDocument.Editor;
      try
      {
        Double n = 0;
        n = n.StringToDistance("1 1/4");
        ed.WriteMessage(n.DistanceToString());
      }
      catch (System.Exception ex)
      {
        ed.WriteMessage(ex.Message);
      }
    }