Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - CalloutHandler mit C#

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
Autor Thema:  API - CalloutHandler mit C# (134 mal gelesen)
Maustreiber
Mitglied
Maustreiber

Sehen Sie sich das Profil von Maustreiber an!   Senden Sie eine Private Message an Maustreiber  Schreiben Sie einen Gästebucheintrag für Maustreiber

Beiträge: 9
Registriert: 05.04.2007

erstellt am: 19. Feb. 2008 17:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Experten,

ich bin gerade dabei mein erstes SolidWorks C# Projekt
zu entwickeln. Dabei versuche ich den VBA-Code in C#
umzuschreiben. Bisher ging das recht erfolgreich, aber
jetzt hänge ich total. 

Um Attribute sichtbar zu machen werden Callout's benutzt.

Parameter 2 von CreateCallout2 erwartet einen Pointer
auf den "CalloutHandler". In VBA wird in einer Klasse
der CalloutHandler durch "Implements SwCalloutHandler"
implementiert und damit das Ereignis "OnStringValueChanged"
zur Verfügung gestellt.

VBA-Code Ausschnit:

Formular:
Set CalloutHandler = New AttCalloutHandler

' Create a callout object
Dim swCallout As SldWorks.Callout
Set swCallout = swSelMgr.CreateCallout2(7, CalloutHandler)

Klassenmodul:
Name: AttCalloutHandler
Implements SwCalloutHandler

Private Function SwCalloutHandler_OnStringValueChanged(ByVal pManipulator As Object, _
                                                      ByVal RowID As Long, _
                                                      ByVal Text As String) As Boolean
    Dim Callout As SldWorks.Callout
    Set Callout = pManipulator
    Debug.Print Callout.Label2(RowID)
    Debug.Print " Old value: " & Callout.Value(RowID)
    Debug.Print " New value: " & Text
   
    SwCalloutHandler_OnStringValueChanged = True 'Keep change in Callout
End Function


Und wie wird das in C# gelöst???

Für Tipps und Lösungshinweise wäre ich dankbar!

Viele Grüße

PS: SWXSolidWorks C# Beispiele scheinen ja eine echte Rarität zu sein.
      Kennt jemand Links oder sonstige Dokumentation zu diesem Thema?

------------------
Hier kommt die Maus...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Maustreiber
Mitglied
Maustreiber

Sehen Sie sich das Profil von Maustreiber an!   Senden Sie eine Private Message an Maustreiber  Schreiben Sie einen Gästebucheintrag für Maustreiber

Beiträge: 9
Registriert: 05.04.2007

erstellt am: 26. Feb. 2008 07:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Für alle Interessierten hier die Lösung in C# 

MyCalloutHandler CalloutHandler = new MyCalloutHandler();

swSelMgr = swModel.ISelectionManager;

swCallout = swSelMgr.CreateCallout2(2, CalloutHandler);
if (swCallout != null)
{
  //...
  //...
}


public class MyCalloutHandler : ISwCalloutHandler
{
    bool ISwCalloutHandler.OnStringValueChanged(object pManipulator, int RowID, string Text)
    {
        Callout swCallout = (Callout)pManipulator;

        MessageBox.Show(string.Concat("ID-Nr: ",
                                      Convert.ToString(RowID),
                                      " ,ID-Name: ",
                                      Convert.ToString(swCallout.get_Label2(RowID)),
                                      " ,Alter Wert: ",
                                      Convert.ToString(swCallout.get_Value(RowID)),
                                      " ,Neuer Wert: ",
                                      Text));
        return true;
    }
}


Viele Grüße und noch viel Spaß mit C# 

------------------
Hier kommt die Maus...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz