Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  SolidWorks Makros mit externeem Programm

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: Direct Editing in SOLIDWORKS
Autor Thema:   SolidWorks Makros mit externeem Programm (1552 mal gelesen)
Schalala
Mitglied



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

Beiträge: 17
Registriert: 04.08.2015

Win 7 64-bit<P>SolidWorks 2014 x64 Edition<P>Visual Stuio 2013

erstellt am: 21. Okt. 2015 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

Hallo SolidWorks-Profis,
ich beschäftige mich gerade mit SolidWorks Makros in C#.
Ich arbeite immer so, dass ich im MakroEditor von SolidWorks arbeite.
Ist es denn möglich auch mit einem externen Programm die Makros in SolidWorks auszuführen? Ich kann ja die ganzen SolidWorks-Bibliotheken im Programmcode aufnehmen. Aber wie kann ich SolidWorks sagen, dass es auf die Befehle reagieren soll.

Ich hoffe mein Problem ist deutlich geworden.

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

GDawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks Händchenhalter



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

Beiträge: 2620
Registriert: 12.07.2004

SolidWorks_2o18 SP4.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 21. Okt. 2015 14:54    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 Schalala 10 Unities + Antwort hilfreich

Sieh dir dazu in der API-Hilfe, folgenden Eintrag an: RunMacro2 Methode.
Dazu gibt es auch ein kleines Beispiel.

EDIT:
Und an SolidWorks kommst Du so:
VB.net:

Code:

Try
   Dim swApp As SldWorks = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SolidWorks.Interop.sldworks.SldWorks)
Catch ex As Exception
   messagebox.show(ex.ToString)
End Try

------------------

[Diese Nachricht wurde von GDawg am 21. Okt. 2015 editiert.]

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

Schalala
Mitglied



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

Beiträge: 17
Registriert: 04.08.2015

Win 7 64-bit<P>SolidWorks 2014 x64 Edition<P>Visual Stuio 2013

erstellt am: 21. Okt. 2015 16:17    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

Vielen Dank für den Ratschlag, ich bakomme aber bei der Code-Eingabe eine Fehlermeldung:

Code:

swApp.RunMacro2("C:\\Makropfad\\Macro5.dll", "", "Main", swRunMacroOption_e.swRunMacroDefault, swRunMacroError);

Fehler: Der Name "swRunMacroError" ist im aktuellen Kontext nicht vorhanden.

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: 2632
Registriert: 06.11.2000

** CSWP 01/2008 **
Endlich Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
Noch SWX2016 SP4;
SAP/PLM;
DriveWorks Pro;
Programmierung: VBA, aktuell VB.NET 2017

erstellt am: 21. Okt. 2015 16:45    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 Schalala 10 Unities + Antwort hilfreich

Mein Tipp:
Vergiss das .vbproj oder .csproj-Format bei den SolidWorks-Makros gleich wieder.
Schreibe deine einfachen Geschichten in VBA (.swp), komplexere Dinge direkt in c# oder vb.net.

Siehe auch hier
------------------
Klaus

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

[Diese Nachricht wurde von KMassler am 21. Okt. 2015 editiert.]

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

Schalala
Mitglied



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

Beiträge: 17
Registriert: 04.08.2015

Win 7 64-bit<P>SolidWorks 2014 x64 Edition<P>Visual Stuio 2013

erstellt am: 21. Okt. 2015 20:37    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

Ich bin was Programmierung angeht leider nicht sooo fit. Ein bisschen C# ist aber drin.

Wenn du schreibst:

Zitat:
Vergiss das .vbproj oder .csproj-Format bei den SolidWorks-Makros gleich wieder.
Schreibe deine einfachen Geschichten in VBA (.swp), komplexere Dinge direkt in c# oder vb.net.


Wie mache ich das? Ich würde auch viel lieber in Visual Studio 2013 als in dem Editor von SolidWorks arbeiten.

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

GDawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks Händchenhalter



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

Beiträge: 2620
Registriert: 12.07.2004

SolidWorks_2o18 SP4.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 22. Okt. 2015 07:38    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 Schalala 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von KMassler:
Mein Tipp:
Vergiss das .vbproj oder .csproj-Format bei den SolidWorks-Makros gleich wieder.
Schreibe deine einfachen Geschichten in VBA (.swp), komplexere Dinge direkt in c# oder vb.net.

Siehe auch hier


Da bin ich nicht gleicher Meinung. Ich schreibe auch "einfache" Dinge gleich in mein SolidWorks-Addin. Somit (wenn die IT Lust dazu hat!) kann das Addin paketiert und verteilt werden.

Zitat:
Original erstellt von Schalala:
Wie mache ich das? Ich würde auch viel lieber in Visual Studio 2013 als in dem Editor von SolidWorks arbeiten.

Du hast doch die Vorlage heruntergeladen und installiert? Benutze sie auch.
Wenn Du ein Addin machen willst, vergiss nicht VS als Admin zu starten. "Normale" Programme kannst Du mit - siehe erste Antwort - an SolidWorks binden und normal programmieren (siehe SolidWorks API).


Hier, eine ur-ur-uralte Funktion, welche ich vor Jahren mal geschrieben hatte (nicht aktuell und kann sein, dass sie nicht mehr funktioniert - dient nur als Beispiel):
Knüpft sich an SolidWorks und prüft ob Dokumente offen sind. Wenn ja, wird der Benutzer gefragt was zu tun ist.

Code:

  Public Function CheckForOpenFilesInSolidWorks() As Boolean

CheckForOpenDocs:

        Dim intResult As Integer
        Dim OpenDrawings As String = ""

        Try
            Dim swApp As SldWorks = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SolidWorks.Interop.sldworks.SldWorks)
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try

        ModelDoc = CType(swApp.GetFirstDocument, ModelDoc2)
        If ModelDoc Is Nothing Then
            Return True
            Exit Function
        Else
            ModelDoc = CType(swApp.GetFirstDocument, ModelDoc2)
            Do While Not ModelDoc Is Nothing
                If ModelDoc.Visible Then
                    OpenDrawings &= ModelDoc.GetPathName.ToString & System.Environment.NewLine
                End If
                ModelDoc = CType(ModelDoc.GetNext, ModelDoc2)
            Loop

            intResult = MsgBox("Es sind Dokumente offen: " & System.Environment.NewLine & System.Environment.NewLine & OpenDrawings & System.Environment.NewLine & " Bitte schliessen Sie zuerst alle geöffnete Zeichnungen!" & System.Environment.NewLine & System.Environment.NewLine & System.Environment.NewLine & "Abbrechen, um die Zeichnungen zu schliessen.", _
              MsgBoxStyle.AbortRetryIgnore)
            If intResult = vbAbort Then
                ModelDoc = CType(swApp.GetFirstDocument, ModelDoc2)
                Do While Not ModelDoc Is Nothing
                    If ModelDoc.Visible Then
                        swApp.CloseDoc(ModelDoc.GetTitle)
                    End If
                    ModelDoc = CType(swApp.GetFirstDocument, ModelDoc2)
                Loop

                Return False
            ElseIf intResult = vbRetry Then
                Return CheckForOpenFilesInSolidWorks()

            Else
                Return True
            End If
        End If

    End Function


Schalala: Mehr als das kann ich für dich nicht machen. Den Rest must du schon selber erarbeiten.

------------------

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: 2632
Registriert: 06.11.2000

** CSWP 01/2008 **
Endlich Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
Noch SWX2016 SP4;
SAP/PLM;
DriveWorks Pro;
Programmierung: VBA, aktuell VB.NET 2017

erstellt am: 22. Okt. 2015 11:40    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 Schalala 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von GDawg:

Da bin ich nicht gleicher Meinung. Ich schreibe auch "einfache" Dinge gleich in mein SolidWorks-Addin. Somit (wenn die IT Lust dazu hat!) kann das Addin paketiert und verteilt werden.

Da darfst du auch gerne anderer Meinung sein  Jeder hat halt so seine Arbeitsweisen.
Für Kleinkram, den ich mal eben schnell brauche, oder der ein paar Zeilen nicht übersteigt, nehme ich immer noch gern VBA. Da verwende ich gerne auch den Makrorecorder, um kleine Schnipsel zu erstellen und die dann in meinem Makro zusammen zu stellen, ohne mir über das Objektmodell oder eine Programmstruktur irgendwelche Gedanken machen zu müssen.
Für alles größere oder langlebigere oder Projekte, die verteilt werden müssen, nehme ich dann eben vb.net (mit c# konnte ich mich noch nicht anfreunden)

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

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

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

GDawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks Händchenhalter



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

Beiträge: 2620
Registriert: 12.07.2004

SolidWorks_2o18 SP4.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 23. Okt. 2015 06:06    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 Schalala 10 Unities + Antwort hilfreich


runmacroerror.png

 
Zitat:
Original erstellt von Schalala:
Vielen Dank für den Ratschlag, ich bakomme aber bei der Code-Eingabe eine Fehlermeldung:

Code:

swApp.RunMacro2("C:\\Makropfad\\Macro5.dll", "", "Main", swRunMacroOption_e.swRunMacroDefault, swRunMacroError);

Fehler: Der Name "swRunMacroError" ist im aktuellen Kontext nicht vorhanden.


Numm einfach eine normale Variable (Integer) und verwende diese.
swRunMacroError gibt es nur in VBA; siehe Anhang.

------------------

[Diese Nachricht wurde von GDawg am 23. Okt. 2015 editiert.]

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)2020 CAD.de | Impressum | Datenschutz