Własna biblioteka w C#.NET - problem z Point Manager


vrs

Rekomendowane odpowiedzi

Witam,

Od jakiegoś czasu tworzę własną bibliotekę dll do ZwCada w C#. Potrzebuję mieć możliwość po najechaniu kursorem myszki na obiekt (linia, blok itp.) wyświetlenia, w okienku na palecie, informacji o obiekcie znajdującym się pod kursorem. Wiem, że jest coś takiego jak Point Manager, jednak to nie działa. Może coś robię źle, ponieważ bazuję na informacji jak go wykorzystać w AutoCad a nie ZwCad. Dotychczas nie miałem problemów z przenoszeniem kodu z AutoCad do ZwCad, wszystko zawsze działało. Oczywiście w Google szukałem, jednak nie mogę nic znaleźć.

 

Point Monitor dodaję w następujący sposób:

editor.PointMonitor += new PointMonitorEventHandler(pointMonitor);
private void pointMonitor(object sender, PointMonitorEventArgs e)
{
   // mój kod
}

Niestety nie ma żadnej reakcji.

 

Pracuję na:

Visual Studio Community 2013 Update 4

W projekcie ustawiony .NET Framework 4.5

ZwCad+ 2015

Odnośnik do komentarza
Udostępnij na innych stronach

Poniżej kod dla AAutoCad, na podstawie którego ja próbuję to samo zrobić w ZwCad.

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;

public class PointMonitorTooltips
{
  [CommandMethod("SM")]
  public static void StartMonitor()
  {
    Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
    ed.PointMonitor += new PointMonitorEventHandler(ed_PointMonitor);
  }

  [CommandMethod("XM")]
  public static void StopMonitor()
  {
    Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
    ed.TurnForcedPickOn();
    ed.PointMonitor -= new PointMonitorEventHandler(ed_PointMonitor);
  }

  static void ed_PointMonitor(object sender, PointMonitorEventArgs e)
  {
    Editor ed = (Editor)sender;
    Document doc = ed.Document;
    try
    {
      FullSubentityPath[] paths = e.Context.GetPickedEntities();
      // Go through the results of the selection
      // and detect the curves
      string curveInfo = "";
      Transaction tr = doc.TransactionManager.StartTransaction();
      using (tr)
      {
        // Open each object, one by one
        foreach (FullSubentityPath path in paths)
        {
          ObjectId[] ids = path.GetObjectIds();
          if (ids.Length > 0)
          {
            ObjectId id = ids[ids.GetUpperBound(0)];
            DBObject obj = tr.GetObject(id, OpenMode.ForRead);
            if (obj != null)
            {
              // If it's a curve, get its length
              Curve cv = obj as Curve;
              if (cv != null)
              {
                double length = cv.GetDistanceAtParameter(cv.EndParam) - cv.GetDistanceAtParameter(cv.StartParam);
                // Then add a message including the object
                // type and its length
                curveInfo += obj.GetType().Name + "'s length: " + string.Format("{0:F}", length) + "\n";
              }
            }
          }
        }
        // Cheaper than aborting

        tr.Commit();
      }
      // Add the tooltip of the lengths of the curves detected
      if (curveInfo != "")
        e.AppendToolTipText(curveInfo);
    }
    catch
    {
      // Not sure what we might get here, but not real action
      // needed (worth adding an Exception parameter and a
      // breakpoint, in case things need investigating).
    }
  }
}
Odnośnik do komentarza
Udostępnij na innych stronach

Nie dysponuję jakąś bazą wiedzy ani innymi zebranymi materiałami dotyczącymi programowania w C# dla ZWCADa. W większości przypadków jest to przez analogię do C# dla AutoCADa. Jeśli natomiast szuka Pan odpowiedzi na konkretne pytania zapraszam do kontaktu na tym forum lub mailowo pod adresem pomoc@dobrycad.pl .

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie