vrs Opublikowano 3 Lipca 2015 Zgłoś Udostępnij Opublikowano 3 Lipca 2015 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 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 3 Lipca 2015 Zgłoś Udostępnij Opublikowano 3 Lipca 2015 Witam, niestety nie potrafię pomóc od ręki, ale w poniedziałek będzie osoba, która zajmuje się c++ i c#, to postaramy się to sprawdzić. Pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 6 Lipca 2015 Zgłoś Udostępnij Opublikowano 6 Lipca 2015 Witam Nie korzystałem dotychczas z PointMonitor, więc trudno jest mi powiedzieć coś wiążącego w temacie. Ale chętnie skonsultuję to bezpośrednio z programistami ZWSOFT. Czy mógłby Pan podesłać jakąś większą próbkę kodu? Pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
vrs Opublikowano 6 Lipca 2015 Autor Zgłoś Udostępnij Opublikowano 6 Lipca 2015 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). } } } Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 6 Lipca 2015 Zgłoś Udostępnij Opublikowano 6 Lipca 2015 Dziękuję Przesłałem to do ZWSOFT. Jak tylko uda mi się dowiedzieć czegoś więcej dam znać Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
vrs Opublikowano 6 Lipca 2015 Autor Zgłoś Udostępnij Opublikowano 6 Lipca 2015 Dzięki wielkie. A tak poza tematem. Mogę znaleźć gdzieś jakieś kursy, szkolenia lub materiały na temat programowania c# w ZwCad ? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 6 Lipca 2015 Zgłoś Udostępnij Opublikowano 6 Lipca 2015 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 . Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 8 Lipca 2015 Zgłoś Udostępnij Opublikowano 8 Lipca 2015 Witam Otrzymałem odpowiedź z ZWSOFT. Problem jest w samym ZWCADzie. Niestety nie jest to temat, jaki można łatwo rozwiązać jakimś prostym obejściem. Na chwilę obecną pozostaje poczekać aż ZWSOFT naprawi działanie PointMonitorEventHandler. Pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
vrs Opublikowano 9 Lipca 2015 Autor Zgłoś Udostępnij Opublikowano 9 Lipca 2015 Szkoda. Bardzo by mi pomogła taka funkcjonalność, ale jak się nie da, to trzeba coś innego wymyślić :) Dzięki wielkie za pomoc. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ą.