| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Der größte Rechenreiniger der Welt bei MUHR , ein Anwenderbericht
|
Autor
|
Thema: Makro mit einer anderen Makro starten!! (3942 / mal gelesen)
|
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 24. Jan. 2018 13:34 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte eine Makro die Eventgesteuert funktioniert und dann eine andere Makro startet. Ich weiß, dass es ein Möglichkeit mit RunMacro2 gibt. Aber irgendwie startet er bei mir die jeweilige Makro nicht. Die Makro soll starten, wenn das Material geändert wird.
Mein Problem besteht darin dass ich erstmal nicht weiß welches Event ich dafür auswählen kann und das zweite Problem ist, dass ich es gerade versuche beim Fenster wechsel zu starten es aber auch nicht klappt. Er geht soweit in die Procedur hinein aber irgendwie passiert nichts. Ich bin kein VB experte deswegen ist es bestimmt nicht schön wie es geschrieben habe. Ich wäre für jede Hilfe dankbar ________________________________________ Option Explicit Dim eventListener As Klasse1 Sub main(): Set eventListener = New Klasse1 End Sub ________________________________________
Option Explicit Dim runMacroError As Long Private WithEvents swApp As SldWorks.SldWorks Private WithEvents swPart As SldWorks.PartDoc Dim boolstatus As Boolean Private Sub Class_Initialize() Dim boolstatus As Boolean Set swApp = Application.SldWorks '*Set swPart = Application.SldWorks swApp.SendMsgToUser boolstatus End Sub Sub RunMyMacro() Set swApp = Application.SldWorks Dim runMacroError As Long boolstatus = swApp.RunMacro2("Makro_Name", "RunMacro", "main", swRunMacroUnloadAfterRun, runMacroError) End Sub Private Function swApp_ActiveDocChangeNotify() As Long Call RunMyMacro swApp.SendMsgToUser "RunMyMacro" End Function soll die Makro: Makro_Name starten. Vielen Dank schon mal!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 24. Jan. 2018 16:47 <-- editieren / zitieren --> Unities abgeben:
|
ckoring Mitglied Ingenieur
Beiträge: 229 Registriert: 09.06.2009 Fujitsu CELSIUS M740 Intel Xeon E5-1620v4 32 GB RAM Nvidia Quadro P4000 Windows 10 Pro SolidWorks 2017 SP4.1 DBWorks R16 SP1.7
|
erstellt am: 25. Jan. 2018 07:34 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 25. Jan. 2018 07:40 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hall EdKa, der Rückgabewert von "runMacroError" sollt dir hier doch genauere Auskunft geben was hier das Problem ist. In der API-Hilfe unter swAppNotify_e Enumeration findest du alle Notifications zu swApp, alternativ auch in deinem Klassenmodul wenn du in einer swApp_... Funktion drin bist, oben rechts in der Liste (siehe Bild). Kleiner Tip: Um deinen Code hier besser lesen zu können würde ich dir empfehlen auch zu kennzeichnen was in welchem Modul steht z.B. Code: 'Standarmodul: notifcations1 Option ExplicitPublic MyClass As New Notification_Class Sub main() MyClass.MonitorSolidWorks End Sub
Code: 'Klassenmodul: Notification_Class Option ExplicitDim WithEvents swApp As SldWorks.SldWorks Dim WithEvents MyPart As SldWorks.PartDoc Dim WithEvents MyAssembly As SldWorks.AssemblyDoc Dim WithEvents MyDrawing As SldWorks.DrawingDoc Public boolstatus As Boolean Public Sub MonitorSolidWorks() Set swApp = Application.SldWorks End Sub Private Function swApp_ActiveDocChangeNotify() As Long If swApp.ActiveDoc.GetType = swDocPART Then Set MyPart = Nothing Set MyPart = swApp.ActiveDoc ElseIf swApp.ActiveDoc.GetType = swDocASSEMBLY Then Set MyAssembly = Nothing Set MyAssembly = swApp.ActiveDoc ElseIf swApp.ActiveDoc.GetType = swDocDRAWING Then Set MyDrawing = Nothing Set MyDrawing = swApp.ActiveDoc Else Set MyPart = Nothing Set MyAssembly = Nothing Set MyDrawing = Nothing End If Debug.Print swApp.ActiveDoc.GetType End Function
Gruß Bernd
------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht ---
Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 25. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 25. Jan. 2018 12:08 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für eure Hilfe. Ich habe leider sehr wenig VBA Erfahrung. Soweit läuft das jetzt wenn ich das Fenster wechsel und es ein Teil ist. Jetzt wollte ich einige Bedingungen vorgeben aber irgendwie scheitere ich schon daran wenn ich in die Private Sub Class_Initialize() diese Deklaration mache. So sieht das ganze bei mir jetzt aus. '*Standard-Modul:Event3 Option Explicit Dim eventListener As Klasse1 Sub main(): Set eventListener = New Klasse1 End Sub ------------------
'*Klassenmodul: Klasse1
Option Explicit Dim runMacroError As Long Private WithEvents swApp As SldWorks.SldWorks '*Private WithEvents swPart As SldWorks.PartDoc Dim boolstatus As Boolean
Private Sub Class_Initialize() Dim SwModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim boolstatus As Boolean Set swApp = Application.SldWorks Set SwModel = swApp.ActivateDoc <--- wird das hinzugefügt dann erscheint ein Fehler: Argument ist nicht optional swApp.SendMsgToUser "erste Procedure läuft" End Sub Sub RunMyMacro() Set swApp = Application.SldWorks Dim runMacroError As Long boolstatus = swApp.RunMacro2(Makroname, Modulname, "main", swRunMacroUnloadAfterRun, runMacroError) swApp.SendMsgToUser boolstatus End Sub Private Function swApp_ActiveDocChangeNotify() As Long Call RunMyMacro swApp.SendMsgToUser runMacroError End Function Private Function swPart_ActiveConfigChangeNotify() As Long Call RunMyMacro End Function -----------------
Es ist bestimmt ganz simpel der Fehler aber ich weiß gerade nicht weiter. Danke im Voraus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 25. Jan. 2018 12:29 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, ich glaube ActivateDoc sollte ActiveDoc heißen, weil ActivateDoc braucht Paramter zum arbeit u.a. den Namen des Dokumentes. Des Weitern kommentierst du hier
Code: '*Private WithEvents swPart As SldWorks.PartDoc
aus, möchtest hier Code: Private Function swPart_ActiveConfigChangeNotify() As Long
aber darauf zugreiffen was wohl nicht funktionieren wird. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 25. Jan. 2018 17:16 <-- editieren / zitieren --> Unities abgeben:
Haha ok das stimmt der Fehler lag an der Schreibweise. ActivateDoc sollte ActiveDoc heißen. Vielen Dank schon mal für den Tipp. Jetzt bin ich auch schon viele Schritte weiter aber meine Eventgesteuerte Makro ist gerade so Programmiert, dass die Makro startet, wenn ich ein Fensterwechsel durchführe. Ich möchte aber dass diese gestartet wird wenn ich das Material ändere . Ich finde gerade nicht die richtige Aktion :/. Könnte mir da jemand Helfen ? Vielen Dank schon mal
[Diese Nachricht wurde von EdKa am 25. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 26. Jan. 2018 11:48 <-- editieren / zitieren --> Unities abgeben:
So sieht mein Code jetzt aus. Funktioniert auch soweit! Nur möchte ich jetzt nicht dass die Makro beim Fensterwechsel aufgerufen wirdd sondern wenn ich entweder das Fenster aktualisiere (STRG+Q) oder wenn ich ein anderes Material im Featurebaum auswähle. ---------------------------- '*Standard-Modul:Event3 Option Explicit Dim eventListener As Klasse1 Sub main(): Set eventListener = New Klasse1 End Sub -------------------------------
'*Klassenmodul: Klasse1 Option Explicit Dim runMacroError As Long Private WithEvents swApp As SldWorks.SldWorks Private WithEvents swPart As SldWorks.PartDoc Dim boolstatus As Boolean
Private Sub Class_Initialize() Dim SwModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim boolstatus As Boolean Set swApp = Application.SldWorks Set SwModel = swApp.ActiveDoc swApp.SendMsgToUser "erste Procedure läuft" End Sub Sub RunMyMacro() Set swApp = Application.SldWorks Dim runMacroError As Long boolstatus = swApp.RunMacro2("Makronamen", "Makroname1", "main", swRunMacroUnloadAfterRun, runMacroError) swApp.SendMsgToUser boolstatus End Sub Private Function swApp_ActiveDocChangeNotify() As Long Dim SwModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim boolstatus As Boolean Set swApp = Application.SldWorks Set SwModel = swApp.ActiveDoc If SwModel.GetType <> swDocPART Then MsgBox "Kein Teil geöffnet Arsch!", vbOKOnly, "Fehler" GoTo EXITHERE Else Call RunMyMacro '*swApp.SendMsgToUser runMacroError End If EXITHERE: End Function -------------------------
Vielen Dank im Voraus [Diese Nachricht wurde von EdKa am 26. Jan. 2018 editiert.] [Diese Nachricht wurde von EdKa am 26. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 26. Jan. 2018 15:18 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
|
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 29. Jan. 2018 08:17 <-- editieren / zitieren --> Unities abgeben:
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 29. Jan. 2018 09:17 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, für das Ändern von Material habe ich auch kein eigenes Event gefunden, ich würde es aber wohl wiefolgt lösen: 1. beim swApp_ActiveDocChangeNotify Event prüfen ob es sich um ein PartDoc handelt 2. wenn PartDoc Konfiguration ermitteln (nur nötig wenn mit Konfigurationen mit unterschiedlichem Materialien gearbeitet wird) 3. und Material (Startmaterial) ermitteln (wahrscheinlich über die dazugehörige Eigenschaft) 4. beim PartDoc_RegenPostNotify2 Material (Istmaterial) ermitteln 5. Vergleich Startmaterial und Istmaterial 6. wenn unterschiedlich dann extra Macro starten 7. im MyPart_ConfigurationChangeNotify Startmatrial überschreiben (nur nötig wenn mit Konfigurationen mit unterschiedlichem Materialien gearbeitet wird) 8. evtl. noch beim MyPart_FileSaveNotify Event den Vergleich wie oben durchführen Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 29. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 29. Jan. 2018 13:41 <-- editieren / zitieren --> Unities abgeben:
[Ok Danke für die Tipps.Es läuft jetzt soweit. Aber ich bin immer noch mit dem Event unzufrieden. Für mich wäre es auch i.O. wenn das Event startet wenn ich das Fenster aktualisiere (STRG+Q). Kannst du oder irgend jemand mir da vielleicht was genaues sagen. Ich denke das Event habe ich soweit gefunden. Siehe Link: [http://help.solidworks.com/2017/english/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.DPartDocEvents_FileReloadNotifyEventHandler.html] Aber irgendwie wie wird das Event nicht gestartet wenn ich das Model aktualisiere Vielen Dank schon mal [Diese Nachricht wurde von EdKa am 29. Jan. 2018 editiert.] [Diese Nachricht wurde von EdKa am 29. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 29. Jan. 2018 15:30 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Zitat: ... 4. beim PartDoc_RegenPostNotify2 Material (Istmaterial) ermitteln 5. Vergleich Startmaterial und Istmaterial 6. wenn unterschiedlich dann extra Macro starten
Hallo EdKa, sehr schöne Auflistung von Bernd was passiert eigentlich, wenn das extra Macro ein "Regen" auslöst? möglicherweise sollte dann Startmaterial und Istmaterial nicht mehr unterschiedlich sein ... nur so ein Gedanke. und der 2. Gedanke: warum sollte file-reload beim rebuild ausgelöst werden? Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 29. Jan. 2018 15:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian, ich beziehe das IstMaterial mit SwModel.GetMaterialPropertyName2("Default", sMatDB), weiß deswegen nicht genau was du meinst mit "Regen" meinst (Sry Anfänger ) Meine Idee ist es entweder beim Abspeichern oder beim aktualisieren des Models die Externe Makro zu starten. Bedeutet ich drücke auf (STRG+S) und dann wird das Event gestartet und meine externe Makro wird aufgerufen um was in die Dokumenteigenschaften einzufügen oder wenn ich (STRG+Q) drücke dann wird das jeweilige Event gestartet. Danke schon mal im Vorraus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 29. Jan. 2018 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, das PartDoc_RegenPostNotify2 Event reagiert auf jegliche Art von Neuaufbau u.a. Strg + B und Strg + C dein Event reagiert nur auf neu Laden eines Dokumentes z.B. wenn du ein Part aus einer Baugruppe aus öffnest. Aber wenn du nur dieses (RegenPostNotify2) Event abfängst führt er dein Macro wirklich bei jedem Neuaufbau aus (Strg + B, Strg + C, Änderung eines Features, hinzufügen eines Features usw.) was wohl ziemlich oft vorkommt. So funktioniert es bei mir das SWX nur dann nach dem Regenerieren / Neuaufbauen was machen möchte wenn auch das Material geändert wurde (Strg + B / Strg + C oder sonstiger Neuaufbau erforderlich). Code: 'Notification_Class (Klassen-Modul) Option ExplicitDim WithEvents swApp As SldWorks.SldWorks Dim WithEvents MyPart As SldWorks.PartDoc Public sStartMaterialName As String Public sNewMaterialName As String Public sMatDB As String Public boolstatus As Boolean Public Sub MonitorSolidWorks() Set swApp = Application.SldWorks End Sub Private Function MyPart_ActiveConfigChangePostNotify() As Long sStartMaterialName = MyPart.GetMaterialPropertyName2("", sMatDB)
End Function Private Function MyPart_RegenPostNotify2(ByVal stopFeature As Object) As Long sNewMaterialName = MyPart.GetMaterialPropertyName2("", sMatDB) If sNewMaterialName <> sStartMaterialName Then Debug.Print "Do what ever you want to do" sStartMaterialName = sNewMaterialName End If End Function Private Function swApp_ActiveDocChangeNotify() As Long If swApp.ActiveDoc.GetType = swDocPART Then Set MyPart = Nothing Set MyPart = swApp.ActiveDoc sStartMaterialName = MyPart.GetMaterialPropertyName2("", sMatDB) Else Set MyPart = Nothing sStartMaterialName = "" End If End Function
Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 30. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 29. Jan. 2018 16:00 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank schon mal für die Information! Also mit API-Hilfe von SW komme ich irgendwie nicht klar. Darf ich fragen, wo du diese Informationen her hast? Oder hast du die aus der API-Hilfe von Solidworks ? Ich muss jetzt erstmal den Quellcode verarbeiten und genauer anschauen Vielen Dank noch mal [Diese Nachricht wurde von EdKa am 29. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 29. Jan. 2018 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, ich habe alle Informationen aus der API Hilfe. Wenn man länger mit Macros zu tun hat kommt man mit der API-Hilfe auch irgendwann ganz gut klar. Hab meinen Code oben korrigiert und deine Routiene (MyPart.GetMaterialPropertyName2("", sMatDB)) für die Materialermittlug verwendet, meine war etwas unschön (hat mehr Variablen und Zeilen benötigt), diese ist mir aber halt zuerst über den Weg gelaufen beim suchen in der API-Hilfe, daher hatte ich sie auch verwendet. [EDIT]Das FileOpenPostNotify Event kann eigentlich auch entfallen (habe es oben raus editiert), dies wäre nur interesant wenn du über API öffnest bzw. im Hintergrund öffnest, aber du machst das ja aktiv. Der Einwand von Christian sollte aber auch mal überprüft werden.
Zitat: was passiert eigentlich, wenn das extra Macro ein "Regen" auslöst?
Weil hier könnte im ungünstigsten Fall vielleicht eine Endlosschleife enstehen. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 29. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 29. Jan. 2018 17:17 <-- editieren / zitieren --> Unities abgeben:
Haha ich dachte nicht, dass man was von meinem Code übernehmen kann aber das freut mich um so mehr . Aber irgenwie passiert bei mir nichts wenn ich mit dem Event Private Function swPart_ActiveConfigChangePostNotify() As Long arbeite . Ich verstehe das nicht '*Klassenmodul: Klasse1
Option Explicit Dim runMacroError As Long Private WithEvents swApp As SldWorks.SldWorks Private WithEvents swPart As SldWorks.PartDoc Private WithEvents swDrawing As SldWorks.DrawingDoc Public FeatureName As String Public FeatureTyp As String Public IstMaterial As String Public NeuMaterial As String Public boolstatus As Boolean Public sMatDB As String Private Sub Class_Initialize() Dim SwModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim boolstatus As Boolean Set swApp = Application.SldWorks Set SwModel = swApp.ActiveDoc swApp.SendMsgToUser "erste Procedure läuft" End Sub Sub RunMyMacro() Set swApp = Application.SldWorks Dim runMacroError As Long boolstatus = swApp.RunMacro2("MeineMakro", "MeineMakro1", "main", swRunMacroUnloadAfterRun, runMacroError) swApp.SendMsgToUser boolstatus End Sub Sub preSave(sFileName As String) MsgBox sFileName & " is about to be saved!" End Sub Private Function swApp_ActiveDocChangeNotify() As Long Dim SwModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim swDrawing As SldWorks.DrawingDoc Dim Feature As Feature '*Dim FeatureName As String '*Dim FeatureTyp As String '*Dim IstMaterial As String '*Dim sMatDB As String Dim FilePath As String Set swApp = Application.SldWorks Set SwModel = swApp.ActiveDoc FilePath = SwModel.GetPathName MsgBox FilePath '*Set swDrawing = SwModel.ActiveView '*Erstes Feature ermitteln If SwModel.GetType = swDocPART Then Set swPart = SwModel Set Feature = swPart.FirstFeature Do While Not Feature Is Nothing FeatureName = Feature.Name FeatureTyp = Feature.GetTypeName Debug.Print Feature.Name & "(" & FeatureTyp & ")" Set Feature = Feature.GetNextFeature IstMaterial = SwModel.GetMaterialPropertyName2("Default", sMatDB) If IstMaterial = FeatureName Then Call RunMyMacro Exit Do End If Loop GoTo EXITHERE: '*ElseIf SwModel.GetType = swDocDRAWING Then '*Set swPart = SwModel '*Set swDrawing = swPart '*Set swDrawing = Nothing '*Set swDrawing = swApp.ActiveDoc '*Set Feature = SwModel.FirstFeature Else MsgBox "Kein Teil geöffnet!", vbOKOnly, "Fehler" GoTo EXITHERE End If '*Durchlaufe den Feature-Baum und schau was bei Material steht Do While Not Feature Is Nothing FeatureName = Feature.Name FeatureTyp = Feature.GetTypeName Debug.Print Feature.Name & "(" & FeatureTyp & ")" Set Feature = Feature.GetNextFeature If IstMaterial = FeatureName Then Call RunMyMacro Exit Do End If Loop '*End If GoTo EXITHERE: swApp.SendMsgToUser runMacroError
EXITHERE: End Function Private Function swPart_ActiveConfigChangePostNotify() As Long NeuMaterial = SwModel.GetMaterialPropertyName2("Default", sMatDB) If NeuMaterial <> IstMaterial Then MsgBox IstMaterial End If End Function So sieht mein Code jetzt aus. Ist noch vieles auskommentiert aber einfach nicht beachten :P Ich wollte jetzt auch nur kurz schauen ob was beim aktualisieren des Fensters passiert aber es passiert leider nichts :/
Vielen Dank schon mal [Diese Nachricht wurde von EdKa am 29. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 30. Jan. 2018 07:20 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, das Event swPart_ActiveConfigChangePostNotify reagiert nur auf Konfigurationswechsel also wenn du die aktive Konfiguration umschaltest. Setzte in deinem Macro doch mal einen Haltepunkt in diese Funktion und schau ob er da auch wirklich reinspringt und dann mit F8 im Einzelschrittmodus weiter, weil wenn die Materialien in beiden Konfigurationen gleich sind sollte in deinem Fall auch nichts passieren. Des Weiterem verstehe ich nicht was du mit deiner Feature Schleife vorhast. Ich würde dir auch empfehlen ein Paar debug.print einzubauen an statt mit MsgBox zu arbeiten, damit kannst du meines Erachtens denn Macroablauf besser nachverfolgen, vor allem wann SWX welches Event triggert. Eine Weitere Frage, hast du mein Macro einfach mal probiert? Also meinen Code um deine Sub RunMyMacro erweitern und entsprechend das Debug.Print "Do what ever you want to do" in meinem Code durch Call RunMyMacro ersetzten. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 30. Jan. 2018 07:40 <-- editieren / zitieren --> Unities abgeben:
Also so langsam aber sicher bin ich mit meinem Latein am Ende Ich verstehe nicht, warum bei mir das Event nicht ausgelöst wird. Bis jetzt passiert nur bei einem Fensterwechsel was. Aber beim aktualisieren oder speichern der Datei passiert nichts. Ich verstehe doch richtig, dass das Event startet, wenn ich das Fenster mit STRG+Q oder STRG+B aktualisiere oder wo ist mein Denkfehler?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 30. Jan. 2018 07:56 <-- editieren / zitieren --> Unities abgeben:
Zitat: das Event swPart_ActiveConfigChangePostNotify reagiert nur auf Konfigurationswechsel also wenn du die aktive Konfiguration umschaltest.
Ok ja das habe ich auch bei mir nicht angewendet, da wir kaum mit Konfigurationen arbeiten. Zitat: Des Weiterem verstehe ich nicht was du mit deiner Feature Schleife vorhast.
Also damit gehe ich durch den Strukturbaum und wenn ich im Strukturbaum Bei Material den Materialnamen der dort steht gleich dem istMaterial dann startet er meine Makro. In der Makro schreibe ich ich dann in die Dateieigenschaften die Wekstoffsachnummer rein die ich dem je nach Material vorgegeben habe. Zur Zeit ist es so, dass wir jedes mal wenn wir ein Teil erstellt haben immer ein Macrobutton drücken damit er die Werkstoffsachnummer übernimmt. Ich möchte, dass wir einmal auf das Button drücken und er die ganze Zeit dann dies im Hintergrund macht wenn z.B. man STRG+S drückt oder STRG+Q drückst und nicht wie jetzt, dass er das bei einem Fensterwechsel tut. Zitat:
Eine Weitere Frage, hast du mein Macro einfach mal probiert? Also meinen Code um deine Sub RunMyMacro erweitern und entsprechend das Debug.Print "Do what ever you want to do" in meinem Code durch Call RunMyMacro ersetzten.
Ja ich habe deine Macro ausprobiert und komischerweise ist auch da nichts passiert. Ich arbeite fast nur mit Haltepunkten . Aber wie gesagt, es passiert bei mir nichts auch nicht bei deiner Macro Irgendwie funktioniert bei mir kein Event mit swPart Ich Danke dir nochmal vielmals für deine Geduld, Hilfe und Tipps.
Wäre super wenn wir das mit dem Event noch hinbekommen [Diese Nachricht wurde von EdKa am 30. Jan. 2018 editiert.] [Diese Nachricht wurde von EdKa am 30. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 30. Jan. 2018 08:38 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, das swPart_ActiveConfigChangePostNotify brauchst du nur wenn du mit Konfigurationen arbeitest und diese unterschiedliche Materialien haben. Das swPart_RegenPostNotify2 Event ist das was beim Aktualisierung getriggert wird (z.B. bei Strg + B/Q). Um auf das Speichern zu reagieren brauchst du das swPart_FileSaveNotify oder swPart_FileSaveAsNotify2 Event. Zitat: Also damit gehe ich durch den Strukturbaum und wenn ich im Strukturbaum Bei Material den Materialnamen der dort steht gleich dem istMaterial dann startet er meine Makro. In der Makro schreibe ich ich dann in die Dateieigenschaften die Wekstoffsachnummer rein die ich dem je nach Material vorgegeben habe.
Das verstehe ich irgenwie immernoch nicht, der FeatureName des Materials simmt doch immer mit dem IstMaterial überein, du (das Macro) musst hier doch eigentlich nur aktiv werden wenn sich das Material geändert hat? Wenn dein anderes Macro nicht so kompliziert ist, würde ich das an deiner Stelle direkt in das EventMacro mit übernehmen, das macht die Sache wahrscheinlich einfacher. Ich würde es auch nicht übertreiben bei jedem Event die ganze Prozedur zu durchlaufen sondern wirklich nur beim Regenerieren / Neuaufbauen und Speichern und dann beim Fensterwechsel wirklich nur das neue PartObject holen. EDIT: Ich hab mein Macro mal angehängt (.txt weglöschen). Zu beachten ist, dass das Macro so gedacht ist das es mit SWX mitgestartet wird, daher musst du das Macro starten wenn noch kein Dokument geöffnet ist oder erst einen Fensterwechsel (Datei öffnen) durchführen. Hatte oben ein paar Schreibfehler drin die evtl. verwirrend waren. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 30. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 30. Jan. 2018 09:25 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Zitat: ...
Code:
Private Function MyPart_RegenPostNotify2(ByVal stopFeature As Object) As Long sNewMaterialName = MyPart.GetMaterialPropertyName2("", sMatDB) If sNewMaterialName <> sStartMaterialName Then Debug.Print "Do what ever you want to do" sStartMaterialName = sNewMaterialName End If End Function
Hallo, zum "Regen" du brauchst das Event "RegenPostNotify2", das wird nach dem "Regen(erate)" geworfen. wenn jetzt dein Makro (an der Stelle "Do what ever you want...") auch einen Neuaufbau ("Regen") auslöst, wird sofort wieder das Event ausgelöst und du landest wieder in der Abfrage und wieder in deinem Makro und dann wieder und wieder ... deshalb würd ich die beiden Zeilen dort tauschen. und zu deiner Schleife: du gehst durch das TEIL, fragst jedes Feature, ob es zufällig wie das quasi zur gleichen Zeit ermittelte Material heißt? wie möchtest du da eine Änderung feststellen? Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 30. Jan. 2018 09:59 <-- editieren / zitieren --> Unities abgeben:
Ok ich hatte da ganz klar einen Denkfehler Aber gut das ich einmal mich mit dem Featurebaum beschäftigt habe . Werde ich bestimmt noch einmal nutzen aber klar du hast recht. Die Macro soll nur gestartet werden, wenn das IstMaterial ungleich dem neuen Material ist. Und danke für die Tipps und jetzt sogar für deine Macro. Nutzt du die eigentlich selber oder hast du die jetzt gerade ganz schnell geschrieben wegen diesem Beitrag? Also das ist auch nur solange ich teste. Dadurch möchte ich einfach das richtige Event finden. Ich werde mal schauen ob ich es nicht beim Speichern auslöse.
Danke nochmal Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 30. Jan. 2018 10:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian, ja das war ein echt dummer Gedanke von mir . Aber naja aus Fehlern lernt man....hoffentlich . Du hast mit dem Regen recht. Also er geht immer wieder in das Event und durchläuft es paar mal. Ich habe mich jetzt auch für das Save-Event entschieden. Das passt besser zu meinem Vorhaben. Aber dank Bernd bin ich jetzt so gut wie am Zeil. Danke euch nochmal allen!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 30. Jan. 2018 11:31 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, Zitat: Und danke für die Tipps und jetzt sogar für deine Macro. Nutzt du die eigentlich selber oder hast du die jetzt gerade ganz schnell geschrieben wegen diesem Beitrag?
das jetzt explitzit nicht, hatte mal ein ähnliches im Gebrauch und habe das nur etwas auf deine Anforderung umgeschrieben. Du würdest aus der Regen Schleife raus kommen, wenn du wie Christian schon schrieb die beiden Zeilen tauscht, also erst das neue Material in die Variable eintragen und dann "What ever you want to do" bzw. dein Macro startest. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 30. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 06. Feb. 2018 07:42 <-- editieren / zitieren --> Unities abgeben:
Hallo, da bin ich wieder . Also eins verstehe ich nicht. Ich möchte wenn ich nicht erst das Fenster wechsel, dass er in die Macro geht und diese dann durchläuft sondern wenn ich einmal die Macro starte und er jedes Mal wenn ich STRG+Q drücke, diese dann durchläuft. Zur Zeit ist es ja bei dem Macro so, dass erst bei einem Fensterwechsel das ganze durchlaufen wird und dann erst aktiv ist. Ist es möglich, die Macro mit STRG-Q zu starten. Ich weiß durch Bernd, dass das Event "Private Function MyPart_RegenPostNotify2" dafür zuständig ist. Aber dieses Event wird erst bei einem Fensterwechsel aktiv. Wo ist mein Denkfehler? Kann ich ihm nicht sagen: Wenn das Model aktualisiert wird, soll er die Macro durchlaufen ohne davor einen Fensterwechsel zu provozieren? Viele Grüße und vielen Dank EdKa Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 06. Feb. 2018 09:17 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo Edka, so wie dein letzter geposteter Code aussieht, hast du alles in
Code: Private Function swApp_ActiveDocChangeNotify() As Long
eingebaut. dann kann es auch nur nach dem Fensterwechsel funktionieren. Nimm dir doch mal von Bernd den ersten quellcode, da wird beim Fensterwechsel je nach Datei myPart, myAssembly, myDrawing aktiviert. wenn du dazu
Code: Private Function MyPart_RegenPostNotify2(ByVal stopFeature As Object) As Long
definierst und da deinen Code einbaust, sollte es passen. so ähnlich hatte Bernd dir auch schon einen Code hier eingestellt. Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 06. Feb. 2018 11:23 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, ich habe auch noch zusätzlich gesagt das mein Macro so gedacht ist das es mit SWX mitgestartet wird. Also wird es bei manuellem Ausführen erst beim Laden eines Dokumentes (z.B. durch Öffnen / Fensterwechsel) richtig aktiv, da erst hier ein Object für myPart gesetzt wird was überwacht wird. Du hast also drei Möglichkeiten das Macro zu starten und auch aktiv auf dein Dokument zu setzten: - Macro automatisch mit SWX starten - Macro manuell starten wenn noch kein Dokument geladen ist - Macro manuell starten und Fensterwechsel hin- und herwechseln Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 06. Feb. 2018 12:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian, danke für deine Antwort. Ich habe es auch so gemacht wie Bernd es auch in seiner Macro macht. Nur da ist dass ja auch soweit geregelt, dass erst bei einem Fensterwechsel geprüft wird, um welchen Typen es sich handelt. Ich möchte das Macro ohne einen Fensterwechsel starten. Das bedeutet, ich aktualisiere das Fenster und damit prüft er erstmal um welchen Typen es sich handelt und aktiviert dann das andere Macro.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 06. Feb. 2018 12:29 <-- editieren / zitieren --> Unities abgeben:
Ja habe dass auch nicht überlesen. Nur habe ich dass über die Verknüpfung von Solidworks--> Rechte Maustaste-->Eigenschaften--> Ausführen und dann zu dem Dateipfad noch diesen Teil mit eingetragen aber es passiert nichts.... "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS (2)" "/m" "Dateipfad\Makro\Event_Mat-Change.swp" oder wie startest du das Macro beim Starten? Vielen Dank schon mal
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 06. Feb. 2018 14:21 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Zitat: ... ich habe auch noch zusätzlich gesagt das mein Macro so gedacht ist das es mit SWX mitgestartet wird...
Hallo Bernd, stimmt, das hab ich übersehen, auch im Macro Verhalten. ... ;( als weitere Möglichkeit könnte man vielleicht auch das "Initialize" erweitern, auf activedoc überprüfen und je nach fall die Eventobjekte setzen. dann noch ggf. die erstmalige Materialfeststellung und gut ist? Muss man eigentlich etwas beachten, wenn das Makro mehrfach gestartet wird? Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 06. Feb. 2018 14:31 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo, ich glaube deine Pfadangabe ist falsch, diese müsste eher so aussehen: "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe" -m "Dateipfad\Makro\Event_Mat-Change.swp" bei Ziel. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 06. Feb. 2018 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo Christian, Zitat: als weitere Möglichkeit könnte man vielleicht auch das "Initialize" erweitern, auf activedoc überprüfen und je nach fall die Eventobjekte setzen. dann noch ggf. die erstmalige Materialfeststellung und gut ist?
Wäre auch eine Option wenn es den unbedingt von Hand gestartet werden soll. Zitat: Muss man eigentlich etwas beachten, wenn das Makro mehrfach gestartet wird?
Meinst du hier mehrer Benutzer oder innerhalb einer Sitzung? Bei mehreren Benutzern hatte wir keine Problem, das Andere kann ich nicht beurteilen, weil es ja bei uns immer automatisch mitgestartet wurde. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 06. Feb. 2018 14:54 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Zitat: ... Meinst du hier mehrer Benutzer oder innerhalb einer Sitzung? Bei mehreren Benutzern hatte wir keine Problem, das Andere kann ich nicht beurteilen, weil es ja bei uns immer automatisch mitgestartet wurde...
Hallo Bernd, ich dachte an mehrfachen Start und Deklaration von "myclass as new Notification_Class" wird damit das gleichnamige Objekt einfach nur "resetted"? oder liegen dann lauter Zombie-Objekte im Speicher? ich hab es jetzt mal ohne new deklariert, dann lässt es sich auf "is nothing" abfragen und man kann ein start/stop makro bauen und das mit dem automatischen Start werd ich mir wohl auch mal genauer ansehen ... Danke und Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 06. Feb. 2018 15:59 <-- editieren / zitieren --> Unities abgeben: Nur für EdKa
Hallo Christian, Zitat: ich dachte an mehrfachen Start und Deklaration von "myclass as new Notification_Class" wird damit das gleichnamige Objekt einfach nur "resetted"? oder liegen dann lauter Zombie-Objekte im Speicher?
Damit hast du wohl recht, da hier bei jedem neuen Ausführen theoretisch eine neue Instanz des Klassenobjektes erzeugt wird, wirst du hier dann wohl lauter Zombies in den Speicher bekommen. Die Zombies machen in diesem Fall dann auch noch alle immer das gleiche wenn ein Event getriggert wird, was evtl. sogar zu problemen führen könnte. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EdKa Mitglied Konstrukteur
Beiträge: 46 Registriert: 06.07.2017 SolidWorks 2017, PDM System: DBWorks
|
erstellt am: 07. Feb. 2018 07:29 <-- editieren / zitieren --> Unities abgeben:
|