|   |   | 
  | 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:  Macro anhalten und manuel fortsetzen (2849 /  mal gelesen)
 | 
 
                        4kspeed Mitglied
 
  
  
        Beiträge: 91 Registriert: 27.10.2016 
                         | 
                        
                         
                                                 
                        erstellt am: 08. Jun. 2017 10:29       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Wie kann ich ein Makro anhalten und per Tastenkürzel fortsetzen? Hier ein Beispiel. 3 Zoom Ansichten (in der Zeichnung)  Sub main()
 Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc Part.ViewZoomTo2 1.61428484062526E-02, 0.189996617565803, 0, 5.12796317673755E-02, 0.164106356141817, 0 Part.ViewZoomTo2 0.094174135771501, 0.183293267001821, 0, 0.130731359351257, 0.15605596801058, 0 Part.ViewZoomTo2 0.24137961471948, 8.64905701905415E-02, 0, 0.303846231983413, 5.16282485556224E-02, 0 End Sub Ich brauche die Pausen da ich jede Ansicht bearbeiten möchte, ist das möglich? Von mir aus kann man auch ein Timer einbauen z.b 30 Sekunden, dann kommt die nächste Ansicht usw.
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        HenryV Mitglied Konstrukteur, Engineering
    
  
        Beiträge: 824 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022 
                         | 
                        
                         
                                                 
                        erstellt am: 08. Jun. 2017 11:03       <-- editieren / zitieren -->           Unities abgeben:            Nur für 4kspeed  
                         | 
                        
                        4kspeed Mitglied
 
  
  
        Beiträge: 91 Registriert: 27.10.2016 
                         | 
                        
                         
                                                 
                        erstellt am: 08. Jun. 2017 12:37       <-- editieren / zitieren -->           Unities abgeben:           
                         | 
                        
                        Thisoft Mitglied Konstrukteur
   
  
        Beiträge: 178 Registriert: 10.04.2010 SWX 2018 Standard SP 3 Win10 Professional 64Bit Intel Core i7 7700K 16 GB RAM AMD FirePro W5000 =Beruf SW 2018 Standard SP0 Win10 Professional 64Bit Intel NUC Core i5-6260 12GB RAM Intel Onboard =Privat 
                         | 
                        
                         
                                                 
                        erstellt am: 08. Jun. 2017 13:16       <-- editieren / zitieren -->           Unities abgeben:            Nur für 4kspeed  
                        
  Ich mache das manchmal so: Code:         Do             swApp.Frame.SetStatusBarText("Mach was...! Enter = Beenden.")             System.Threading.Thread.Sleep(1000)             swApp.Frame.SetStatusBarText("")         Loop Until GetAsyncKeyState(Keys.Enter)
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        4kspeed Mitglied
 
  
  
        Beiträge: 91 Registriert: 27.10.2016 
                         | 
                        
                         
                                                 
                        erstellt am: 08. Jun. 2017 13:59       <-- editieren / zitieren -->           Unities abgeben:           
                         | 
                        
                        Thisoft Mitglied Konstrukteur
   
  
        Beiträge: 178 Registriert: 10.04.2010 SWX 2018 Standard SP 3 Win10 Professional 64Bit Intel Core i7 7700K 16 GB RAM AMD FirePro W5000 =Beruf SW 2018 Standard SP0 Win10 Professional 64Bit Intel NUC Core i5-6260 12GB RAM Intel Onboard =Privat 
                         | 
                        
                         
                                                 
                        erstellt am: 08. Jun. 2017 14:10       <-- editieren / zitieren -->           Unities abgeben:            Nur für 4kspeed  
                        
  Ich vermute mal du musst noch die Funktion "GetAsyncKeyState" deklarieren bzw. importieren: #Region "Win32 imports"     Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short #End Region Sagt meine leicht trübe Glaskugel zu deiner Aussage "funktioniert nicht!" - Mit einer konkreteren Fehlermeldung könnte ich vielleicht auch konkretere Hilfestellung geben     Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        4kspeed Mitglied
 
  
  
        Beiträge: 91 Registriert: 27.10.2016 
                         | 
                        
                         
                                                 
                        erstellt am: 09. Jun. 2017 10:13       <-- editieren / zitieren -->           Unities abgeben:           
                        
  VBA ist nicht meine Welt      Ich poste mal hier den ganzen Code..
 Code: Dim swApp As ObjectDim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc         Do             swApp.Frame.SetStatusBarText ("") Part.ViewZoomTo2 2.29833512322677E-02, 0.190099749959715, 0, 6.64287214703697E-02, 0.155763892836053, 0             System.Threading.Thread.Sleep (1000)             swApp.Frame.SetStatusBarText ("") Part.ViewZoomTo2 0.118716215856383, 0.194312575516218, 0, 0.189867225580949, 0.154290132546149, 0             System.Threading.Thread.Sleep (1000)             swApp.Frame.SetStatusBarText ("") Part.ViewZoomTo2 0.209477552181085, 8.65826510303085E-02, 0, 0.275119692877651, 4.16608830283659E-02, 0         Loop Until GetAsyncKeyState(Keys.Enter)              End Sub 
   Ergebniss: 
 "Fehler beim Kompilieren Sub oder Function nicht definiert"     Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Thisoft Mitglied Konstrukteur
   
  
        Beiträge: 178 Registriert: 10.04.2010 SWX 2018 Standard SP 3 Win10 Professional 64Bit Intel Core i7 7700K 16 GB RAM AMD FirePro W5000 =Beruf SW 2018 Standard SP0 Win10 Professional 64Bit Intel NUC Core i5-6260 12GB RAM Intel Onboard =Privat 
                         | 
                        
                         
                                                 
                        erstellt am: 09. Jun. 2017 10:31       <-- editieren / zitieren -->           Unities abgeben:            Nur für 4kspeed  
                        
  Ooch - ja, ich fürchte Du weißt zwar was du gern hättest verstehst aber noch nicht wirklich was dein per Rekorder erstellter Code da tut.    Ich versuch's mal zusammenzubringen... Code:
  Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As ShortDim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc Part.ViewZoomTo2 2.29833512322677E-02, 0.190099749959715, 0, 6.64287214703697E-02, 0.155763892836053, 0 Do     swApp.Frame.SetStatusBarText ("Erste Ansicht bearbeiten! Weiter mit Enter-Taste.")     System.Threading.Thread.Sleep (1000)     swApp.Frame.SetStatusBarText ("") Loop Until GetAsyncKeyState(Keys.Enter) Part.ViewZoomTo2 0.118716215856383, 0.194312575516218, 0, 0.189867225580949, 0.154290132546149, 0 Do     swApp.Frame.SetStatusBarText ("Zweite Ansicht bearbeiten! Weiter mit Enter-Taste.")     System.Threading.Thread.Sleep (1000)     swApp.Frame.SetStatusBarText ("") Loop Until GetAsyncKeyState(Keys.Enter) Part.ViewZoomTo2 0.209477552181085, 8.65826510303085E-02, 0, 0.275119692877651, 4.16608830283659E-02, 0 Do     swApp.Frame.SetStatusBarText ("Dritte Ansicht bearbeiten! Weiter mit Enter-Taste.")     System.Threading.Thread.Sleep (1000)     swApp.Frame.SetStatusBarText ("") Loop Until GetAsyncKeyState(Keys.Enter)             End Sub 
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        4kspeed Mitglied
 
  
  
        Beiträge: 91 Registriert: 27.10.2016 
                         | 
                        
                         
                                                 
                        erstellt am: 09. Jun. 2017 10:45       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hmm geht nicht...  "Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short" ist in roter Schrift     Das heißt ich muss nen GetAsyncKeyState Funktion importieren wie du gesagt hast? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
 
  
  
        Beiträge: 2809 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3 
                         | 
                        
                         
                                                 
                        erstellt am: 09. Jun. 2017 15:38       <-- editieren / zitieren -->           Unities abgeben:            Nur für 4kspeed  
                        
  Hallo, bei dir funktioniert das u.a. nicht, da das wohl VB.NET Schnippsel sind und noch nicht für VBA umgeschrieben, SWX  VBA erwartet z.B. die Declarationen als PtrSafe, genauso wenig ist VBA die Keys-Enumeration bekannt daher funktioniert Keys.Enter als Vergleiswert auch nicht, genauso wenig ist VBA System.Threading.Thread.Sleep (1000) bekannt. Bevor wir hier aber weiter über das Pausieren des Macros reden, was ist eigentlich dein genaues Ziel, was soll den in dieser "Pause" passieren? Gruß Bernd  ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht ---
 Staatlich anerkannte Deutschniete     [Diese Nachricht wurde von bk.sc am 09. Jun. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Thisoft Mitglied Konstrukteur
   
  
        Beiträge: 178 Registriert: 10.04.2010 
                         | 
                        
                         
                                                 
                        erstellt am: 12. Jun. 2017 08:24       <-- editieren / zitieren -->           Unities abgeben:            Nur für 4kspeed  
                        
  Ja, stimmt wohl. 4kspeed arbeitet noch mit VBA. Stand zwar nirgends aber hätte ich sehen können... Hab mein Beispiel mal drauf angepasst: Code: Private Declare PtrSafe Function GetAsyncKeyState Lib "User32" (ByVal vKey As Long) As LongConst VK_RETURN = &HD  ' Enter Taste Const VK_RBUTTON = &H2 ' Rechter Mausbutton  Const VK_MBUTTON = &H4 ' Mittlerer Mausbutton Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long  Sub main()
 Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Part.ViewZoomTo2 2.29833512322677E-02, 0.190099749959715, 0, 6.64287214703697E-02, 0.155763892836053, 0 Do     swApp.Frame.SetStatusBarText ("Erste Ansicht bearbeiten! Weiter mit Enter-Taste.")     DoEvents Loop Until GetAsyncKeyState(VK_RETURN) Part.ViewZoomTo2 0.118716215856383, 0.194312575516218, 0, 0.189867225580949, 0.154290132546149, 0 Do     swApp.Frame.SetStatusBarText ("Zweite Ansicht bearbeiten! Weiter mit Enter-Taste.")     DoEvents Loop Until GetAsyncKeyState(VK_RETURN) Part.ViewZoomTo2 0.209477552181085, 8.65826510303085E-02, 0, 0.275119692877651, 4.16608830283659E-02, 0 Do     swApp.Frame.SetStatusBarText ("Dritte Ansicht bearbeiten! Weiter mit Enter-Taste.")     DoEvents Loop Until GetAsyncKeyState(VK_RETURN)           End Sub 
  Wobei die Enter-Taste nicht unbedingt die glücklichste Auswahl dafür ist - kann u.U. je nachdem was du in SWX  dann gerade gemacht hast auch andere, an dieser Stelle nicht gewollte Funktionen auslösen. Ich nehme ganz gerne RMB für sowas - hab's oben schon mal mit deklariert... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        4kspeed Mitglied
 
  
  
        Beiträge: 91 Registriert: 27.10.2016 SW 2019 SP3.0 Windows 10 Pro 64bit CPU E3-1220 v5, Quadro M2000, 16GbRAM, 3DxWare 10.4.9, LGS 8.91.48 
                         | 
                        
                         
                                                 
                        erstellt am: 12. Jun. 2017 15:44       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo Thisoft danke ich probiers aus... Hallo  bk.sc Ziel ist es in der Pausen alle Deitailansichten zu bemaßen (aufgrund einer Änderung).  Weil mein Problem ist es das ich eine Ansicht oft vergesse zu bemaßen, da es sehr viele sind. Mit einer Zoom Makro Ansicht automatisch springen (nach einer Betätigung) finde ich sehr sinnvoll, dann ist man auf den sicheren Weg dies nicht zu vergessen, ich hoffe du verstehst mich. 
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        4kspeed Mitglied
 
  
  
        Beiträge: 91 Registriert: 27.10.2016 
                         | 
                        
                         
                                                 
                        erstellt am: 16. Jun. 2017 07:43       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo Thisoft, dein Makro läuft. Manchmal überspringt er die 2. Zoomansicht, Zoomansicht 1 und Zoomansicht 3 klappt gut, wenn dies noch gelöst werden kann wäre das optimal. Aber ich bin trotzdem froh auf die 2 Zoomansichten zuzugreifen (mit Pause dazwischen) danke. :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        4kspeed Mitglied
 
  
  
        Beiträge: 91 Registriert: 27.10.2016 SW 2019 SP3.0 Windows 10 Pro 64bit CPU E3-1220 v5, Quadro M2000, 16GbRAM, 3DxWare 10.4.9, LGS 8.91.48 
                         | 
                        
                         
                                                 
                        erstellt am: 23. Jun. 2017 08:10       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hat sich erledigt... Problem es waren viel zu schnelle Latenzen beim Tastendruck.  Habe jetzt eine neue Tastatur mit Anschlagverzögerung (programmierbar) und kann somit alle Schritte anhalten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                       
   
 |  | 
 
                        Thisoft Mitglied Konstrukteur
   
  
        Beiträge: 178 Registriert: 10.04.2010 
                         | 
                        
                         
                                                 
                        erstellt am: 26. Jun. 2017 08:08       <-- editieren / zitieren -->           Unities abgeben:            Nur für 4kspeed  
                         |