| | |  | 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...

 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 / zitieren --> Unities abgeben:         
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
  
 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 / zitieren --> Unities abgeben:          Nur für KMassler
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...

 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 / zitieren --> Unities abgeben:         
|
tbd Mitglied Teamleiter
  
 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 / zitieren --> Unities abgeben:          Nur für KMassler
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |