Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Zugriff auf SWX mit vb.net

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
  
Künstliche Intelligenz und die Zukunft der Industrie, ein Webinar am 07.11.2025
Autor Thema:  API: Zugriff auf SWX mit vb.net (1754 mal gelesen)
KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 11. Apr. 2007 12:52    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 vb.net-Experten,
ich habe da mal wieder ein Problem:

Ich möchte ein externes Programm mit vb.net 2005 Express schreiben, von dem aus ich auf SolidWorks zugreife.

Mit VB6 ging das mit

Code:
...
    Set swApp = GetObject(, "SldWorks.Application")
    If swApp Is Nothing Then
      msgbox "SolidWorks läuft nicht!"
      Exit Sub
    End If
...
    Set Drw = swApp.ActiveDoc
    If (Drw Is Nothing) Then
        MsgBox "Kein Dokument in SWX geöffnet, vbCritical
        Exit Sub
    End If
...

Im Prinzip genau das selbe versuche ich nun in vb.net 2005.
Aber irgendwie wills nicht.

Code:
    swApp = GetObject(, "SldWorks.Application")

bringt einen Exception-Fehler "Die ActiveX-Komponente kann nicht erstellt werden".

Code:
    swApp = GetObject("", "SldWorks.Application")

geht, wenn Solidworks schon läuft, wenn nicht, wird ein SolidWorks-Prozess gestartet, der nur im Tastmanger sichtbar ist, das ist dann wie bei CreateObject.

Code:
swApp = New SldWorks.SldWorks()
erstellt auch nur einen neuen Prozess im Taskmanager, auch dann, wenn SWX eigentlich schon läuft.

Kann mir jemand die richtige, sichere Vorgehensweise verklickern?

Die API-Beispiele, die ich für vb.net gefunden habe, beziehen sich immer auf SolidWorks-Addins (das hab ich schon geschafft), ich möchte aber eine externe Anwendung.

Danke schon mal im voraus!

------------------
Klaus

    www.al-ko.com | mein Gästebuch | privat...

[Diese Nachricht wurde von KMassler am 11. Apr. 2007 editiert.]

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

tbd
Mitglied
Teamleiter


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

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600
-----
Win XP Prof SP 3
SW 2008 SP 5.0
PARTsolutions 8.1.08
Cideon SAP PLM 5.103.5.17
Visual Studio 2008

erstellt am: 11. Apr. 2007 13:16    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 Nur für KMassler 10 Unities + Antwort hilfreich

Hallo Klaus,

ich habe mal das relevante Kapitel aus unserer Schulung kopiert.
Ich hoffe das hilft dir weiter.
Wenn nicht einfach Fragen!

1.7 CreateObject oder GetObject

Mit welcher der beiden Methoden erstellt man eine Instanz zu SolidWorks? Diese Frage sollten Sie sich immer stellen, bevor Sie eine neue Anwendung beginnen.

Die Vor- und Nachteile beider Methoden wurden in den beiden Kapiteln an mehreren Beispielen beschrieben.

Die Funktion GetObject bietet mehr Vor- als Nachteile. Deshalb ist Sie auch der Favorit der beiden Methoden.
Sie müssen in einer Funktion nur den Fehler abfangen, falls SolidWorks nicht oder mit CreateObject geöffnet ist.
Eine solche Funktion ist schnell umzusetzen und in jeder Anwendung einsetzbar.

Code:

''' <summary>
''' Belegt das SolidWorks Objekt durch die Methode GetObject
''' und fragt in einer MsgBox nach wenn das Objekt nicht greifbar ist
''' </summary>
''' <param name="oSwApp">Aktuelles SolidWorks Objekt</param>
''' <returns>Bei True war die Aktion erfolgreich,
''' Bei Flase wünscht der User einen Anwendungsabbruch</returns>
''' <remarks></remarks>
Public Shared Function SolidWorksBelegen( _
            ByRef oSwApp As SldWorks.SldWorks) As Boolean
    Try
        'MsgBox rückgabe
        Dim lDialogStatus As Microsoft.VisualBasic.MsgBoxResult
        Try
            'SolidWorks Objekt belegen
            oSwApp = CType(GetObject(, _
                    "SldWorks.Application"), _
                    SldWorks.SldWorks)
        Catch ex As Exception
            'Fehler beim Belegen des SolidWorks Objekts
            'Evtl. ist SolidWorks nicht geöffnet
        End Try
        'Wenn das SolidWorks Objekt nicht belegt ist...
        If oSwApp Is Nothing Then
            '... in einer MsgBox nachfragen
            lDialogStatus = MsgBox( _
              "Fehler beim Aufbau einer Schnittstelle zu SolidWorks." & _
              vbNewLine & _
              "Bitte öffnen Sie SolidWorks und klicken Sie auf 'Ok'." & _
              vbNewLine & _
              "Sollte SolidWorks bereits geöffnet sein, " & _
              "schließen Sie SolidWorks, " & _
              vbNewLine & _
              "öffnen Sie es erneut und klicken Sie dann auf 'Ok'" & _
              vbNewLine & _
              "Wenn Sie denn Startvorgang abbrechen " & _
              "möchten klicken Sie auf 'Abbrechen'", _
              MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, _
              "Schuler Design Automation GmbH")
            'Rückgabewert prüfen
            Select Case lDialogStatus
                Case MsgBoxResult.Ok
                    'User hat SolidWorks geöffnet
                    'Funktion einfach nochmal aufrufen
                    Return SolidWorksBelegen(oSwApp)
                Case MsgBoxResult.Cancel
                    'User möchte die Anwednung abbrechen
                    Return False
            End Select
            'SolidWorks anzeigen
            oSwApp.Visible = True
            oSwApp.UserControlBackground = True
        End If
        Return True
    Catch ex As Exception
        Debug.Assert(False)
        Trace.WriteLine("Fehler: Wo: " & _
                ex.StackTrace & " Was: " & ex.Message)
        Return False
    End Try
End Function

Die Funktion SolidWorksBelegen ist schnell erklärt.
Als Parameter wird das SolidWorks Objekt als Referenz übergeben. Dieses soll in der Funktion durch die aktuelle SolidWorks Sitzung belegt werden. Wenn in der GetObject Methode ein Fehler auftritt, wird dieser in der Try-Catch-Schleife abgefangen. Danach wird der Inhalt des SolidWorks Objekts kontrolliert. Ist dieser Nothing wird der User in einer MessageBox auf diesen Zustand hingewiesen.
Er kann nun SolidWorks öffnen oder die Funktion abbrechen.

------------------
Mfg Daniel

Lesen ist super. Nur die Buchstaben machen einen verrückt!
------------------

SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 11. Apr. 2007 13:34    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

Wow!
Ich bin begeistert!

Die 10Us reichen bei weitem nicht
     
Das klappt hervorragend, herzlichen Dank!

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

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

tbd
Mitglied
Teamleiter


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

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600
-----
Win XP Prof SP 3
SW 2008 SP 5.0
PARTsolutions 8.1.08
Cideon SAP PLM 5.103.5.17
Visual Studio 2008

erstellt am: 11. Apr. 2007 13:42    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 Nur für KMassler 10 Unities + Antwort hilfreich

Immer wieder gerne ...

------------------
Mfg Daniel

Lesen ist super. Nur die Buchstaben machen einen verrückt!
------------------

SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH

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