| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen |
Autor
|
Thema: GetObject... (2509 mal gelesen)
|
PaBü Mitglied Maschinenbauingenieur
Beiträge: 61 Registriert: 10.06.2005
|
erstellt am: 20. Jan. 2012 16:36 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, hat jemand Erfahrung mit dem Erstellen einer "Verbindung" zu SolidWorks 2010 und VB.net? Anders gesagt, ich habe eine Anwendung die bisher in der Lage war, sich per GetObject mit SWX zu "verbinden" (siehe unten). Mit der Umstellung auf SWX 2010 funktioniert das allerdings nicht mehr. Es funktioniert per CreateObject, startet mir dann aber eine ungewünschte Instanz von SWX. Die damit erstellte "Verbindung" ermöglicht mir allerdings alles bisherige. ... oSwAppCls = CType(Microsoft.VisualBasic.GetObject( _ Class:="SldWorks.Application"), SldWorks.SldWorks) Return oSwAppCls ... Hat jemand zufällig das gleiche Problem? Per Google und diesem Internet werde ich einfach nciht fündig ... Es funktioniert auch nicht mit dem Auslesen der inst. Solidworksversion ("SldWorks.Application.18") etc. ... oSwAppCls = NULL ...
------------------ mfg Patrick EINFACH sein, einfach SEIN! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
3DTOM Mitglied Softwareentwickler / Konstrukteur
Beiträge: 23 Registriert: 26.10.2001 SolidWorks 2010 SP4.0 Programmiersprache: C#
|
erstellt am: 24. Jan. 2012 08:47 <-- editieren / zitieren --> Unities abgeben: Nur für PaBü
Hallo Patrick, in C# machen wir das folgendermaßen: SldWorks.SldWorks swApp = (SldWorks.SldWorks) Marshal.GetActiveObject("SldWorks.Application"); Damit bekommen wir die aktive Instanz. Vielleicht hilft es dir ja weiter. Gruß Thomas 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: 24. Jan. 2012 09:49 <-- editieren / zitieren --> Unities abgeben: Nur für PaBü
Hi Patrick, bei mir sieht das immer so aus und funktioniert: Code: Dim swApp As sldworks.SldWorks Function ConnectToSW( _ ByRef oSwApp As sldworks.SldWorks) As Boolean Try 'Messagebox Rückgabe Dim lDialogStatus As Windows.Forms.DialogResult 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 'Hier keine Reaktion, kommt anschließend.... End Try 'Wenn das SolidWorks Objekt nicht belegt ist... If oSwApp Is Nothing Then '... in einer MessageBox nachfragen lDialogStatus = MessageBox.Show(My.Resources.msgNoSWXFound, _ Mainform.Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) 'Rückgabewert prüfen Select Case lDialogStatus Case Windows.Forms.DialogResult.OK 'User hat SolidWorks geöffnet 'Funktion einfach nochmal aufrufen Return ConnectToSW(oSwApp) Case Windows.Forms.DialogResult.Cancel 'User möchte die Anwendung abbrechen Return False End Select 'SolidWorks anzeigen oSwApp.Visible = True oSwApp.UserControlBackground = True End If Return True Catch ex As Exception 'mögliche Fehlerhandlungen ... Return False End Try End Function
Wenn SolidWorks nicht gestartet ist (If oSwApp Is Nothing Then...), wird der Anwender aufgefordert, SWX zu starten oder die die Anwendung zu beenden (OK oder abbrechen). Du kannst stattdessen natürlich auch SolidWorks mit CreateObject starten. ------------------ Klaus www.al-ko.com | mein Gästebuch | privat... | Nasenheim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaBü Mitglied Maschinenbauingenieur
Beiträge: 61 Registriert: 10.06.2005
|
erstellt am: 24. Jan. 2012 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, hallo Klaus, danke für die Antworten. In der Zwischenzeit wandte ich mich an Herrn Bühling von MySldWorks.de an dessen Workshopunterlagen ich mich hielt. Mein Programm ist bereits mehrere Jahre alt und funktionierte bis zur Umstellung auf SWX2010. Herr Bühling vermutete, dass ich in meinem Visual Studio Projekt die NET-dlls statt der COM-dlls eingebunden habe. Seine Vermutung war richtig. Im Gegensatz zu SWX2007 ist es für SWX2010 wohl zwingend erforderlich die COM-dlls einzubinden und aber auch SWX und das Programm als Administrator auszuführen. (64 bit: SWX2010, Win7) Also, vielen Dank nochmals, ------------------ mfg Patrick EINFACH sein, einfach SEIN! 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: 24. Jan. 2012 16:05 <-- editieren / zitieren --> Unities abgeben: Nur für PaBü
|
PaBü Mitglied Maschinenbauingenieur
Beiträge: 61 Registriert: 10.06.2005
|
erstellt am: 24. Jan. 2012 16:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, stimmt, Du hast Recht. Komisch! Beim Probieren nach der Korrektur ging es nur so. Habe es jetzt nochmal "normal" probiert und es funktioniert tatsächlich ohne Administratorrechte. Vielen Dank Klaus, ------------------ mfg Patrick EINFACH sein, einfach SEIN! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |