| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| PLM TechnologieForum Leipzig |
Autor
|
Thema: Makrobeschleunigung durch Menüaufklappen?! (2056 mal gelesen)
|
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 13. Jul. 2006 16:06 <-- editieren / zitieren --> Unities abgeben:
Ich mag ja Voodoo, aber heute war ich doch erstaunt, als ich ein Excel-Makro aufrief, das sich nacheinander alle Teile der aktiven SolidWorks-Baugruppe holt und untersucht. Große Baugruppe geladen, das Makro lief lange. Irgendwann habe ich mal das SolidWorks-Menü Extras aufgeklappt, um nach der Baugruppenstatistik zu sehen. Und interessanterweise lief das Makro bei aufgeklapptem Menü (egal welches) spürbar schneller?! Und ich kann es nachvollziehen. Ist das bei Euch auch so? Nur SolidWorks-Fenster aktivieren bringt nicht den Effekt. Ab morgen mit heruntergelassenen Menüs ? ------------------ Lutz Federbusch Mein Gästebuch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1732 Registriert: 06.04.2002
|
erstellt am: 14. Jul. 2006 04:50 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
|
RGR Mitglied
Beiträge: 218 Registriert: 17.04.2003 HPxw4600 IntelCore2 DUO CPU 3.00GHz - 3,48GB RAM NVIDIA Quadro FX3700, SWX 2008, SP4.0, Windows XP, SAP, Office 2003 und Diverse
|
erstellt am: 14. Jul. 2006 07:05 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
@Frank << erstellt am: 14. Jul. 2006 04:50 >> Guten Morgen Frank,
hast Du durchgearbeitet oder bist Du Frühaufsteher? Hat nichts mit dem Thema zu tun ich weiß, aber zu dieser Zeit schon am Rechner.... einen schönen Tag Romana ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
maximal Mitglied Konstrukteur
Beiträge: 508 Registriert: 08.01.2003 SolidWorks 2018 SP5 Keytech 13 WIN 10 Composer, Simulation, Tacton & Lino
|
erstellt am: 14. Jul. 2006 07:49 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Hi Lutz, kenne den Voodoo-Zauber auch in Verbindung mit ProfiDB! Das aktualisieren des Schriftkopfes ist manchmal quälend langsam, aber wenn man das ProfiDB-Menue in SWX aufklappt ist es auf einmal rasend schnell.. Tja wo sind die andren Turboknöpfe? Vielleicht sollte SWX nur nach den Knöpfen suchen .... Gruß, Max Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 14. Jul. 2006 12:17 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Hallo zusammen, ich glaube nicht so wirklich an Voodoo, hab aber (über Alex Häusler aka horrores ) ) von einem ähnlichen Phänomen gehört. Sie haben dort be sich festgestellt, dass Makros schneller laufen, wenn sie die ALT-Taste drücken Ich vermute hier denselben Zusammenhang, hab aber nur oberflächlich damals ein bisschen dran gekratzt, kann das in diesem Fall hier mit den geöffneten Menus nachvollziehen (was übrigens noch schneller geht als der ALT-Tasten-Trick): nach meinen Beobachtungen liegt es an den gefeuerten (bzw. nicht gefeuerten) Events von SolidWorks. Schau dir mal mit dem Notification-Monitor ( von http://www.solidworks.com/pages/services/APIDownloads.html runterladen, falls du es nicht hast) an, was SolidWorks so macht. Solange du nichts tust, wird ungefähr alle halbe Sekunde das SldWorks_OnIdleNotify abgefeuert. Laut API Hilfe wird es gefeuert wenn alles fertig ist und das nächste gemacht werden kann. Fired after all of the messages have been processed, included posted repaints Jetzt halt mal die ALT-Taste gedrückt, während dein SolidWorks-Fenster aktiv ist. Du siehst, die OnIdleNotify kommen jetzt viel schneller. Was passiert beim Drücken auf die ALT-Taste? Unter anderem werden die Tastenkombinationen zum Öffnen der Menus eingeleitet und SolidWorks oder Windows oder der Grafikkartenkartentreiber (so weit hab ich es nicht verfolgt) lassen daraufhin bestimmte Dinge ausfallen, weil es nicht mehr notwendig ist. Jetzt die Nadel in das Voodoo-Püppchen: wenn du das Menu aufklappst, wird das OnIdleNotify gar nicht mehr gefeuert, als ob SolidWorks das komplette Event-Handling abgeschaltet hätte. Und wenn jetzt ein externes Programm an SolidWorks ran will kann es das wohl mit Volldampf machen und ganz alleine damit flirten, ohne dass sich SolidWorks dauernd versucht an Anderen zu suchen. Die Diva verhält sich da wahrscheinlich ähnlich, wie im oben angelinkten Beitrag zu lesen Zumindest bis dahin bin ich gekommen, hört sich für mich schlüssig an. Es wäre sicher interessant, dass mal mit Earl Hasz zu diskutieren, vielleicht könnte man so etwas als gewolltes Flag in die API einbauen Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Member of CAD.de BOINC Team - | Seti@Home | CPDN | Einstein@Home Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 14. Jul. 2006 14:41 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Hi zusammen, ersteinmal Rechtgeb@Stefan alles was nicht an Events ausgeführt wird spart enorm Zeit. Ich selbst kenne das aus Excel -> Wenn der ScreenRefresh deaktiviert ist geht es schneller, allerdings bleiben die Events vorhanden! Wenn jemals einer von euch ein Taskbar Icon mit einem Popupmenü entwickelt habt, kennt Ihr sicherlich das Problem das die eigene App nicht mehr Reagiert bis der User das Menü geklickt oder wieder geschlossen hat. Kurze Rede wenig Sinn.. ich hab da noch was zum Thema gefunden und auch direkt ein kleines bsp Proggie gemacht. Bei mir gehts schneller wenn der ScreenRefresh deaktiviert ist ;o)... und nun zum selber Testen... achja (öffnet vorher eine Datei mit nicht allzuvielen Features! sonst kann dauern) Gruß Micha ------------------ http://classicvb.org/petition/ Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 14. Jul. 2006 16:41 <-- editieren / zitieren --> Unities abgeben:
|
Kalle Mitglied Student
Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 17. Jul. 2006 10:44 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Aheu, was passiert denn wenn mein Makro zum arbeiten irgendwelche SolidWorks-Events benötigt? Das geht ja dann vermutlich nicht mehr oder? Bis dann, Kalle ------------------ ----------------------------------------- Es gibt immer mehr Lösungen als Probleme. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 18. Jul. 2006 10:05 <-- editieren / zitieren --> Unities abgeben:
Dann klappste halt nichts herunter bzw. wieder hoch mit der Indianertechnik Sendkey. Wenn man in der Zwischenzeit mit einer anderen Anwendung weiterarbeiten will und diese aktiviert, klappt das Menü sowieso wieder hoch und außerdem sieht so ein heruntergelassenes Menü uncool aus. Die Lösung: Das Dialogfenster EXTRAS-ZUSATZANWENDUNGEN aufrufen. Dann kann man trotzdem andere Anwendungsfenster aktivieren und das Makro läuft trotzdem schnell! ------------------ Lutz Federbusch Mein Gästebuch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INKN Mitglied Consulant/Softwareentwickler
Beiträge: 277 Registriert: 22.08.2001
|
erstellt am: 15. Aug. 2006 10:00 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Hi API'ler, ich habe mal mit dem API Support wegen dieses Effektes konferiert, ob es nicht was Offizielles gibt. Hier die Anwort: An out-of-process application is an executable separate from SolidWorks. If this application is driving SolidWorks through the API, there may be no interactive user working with SolidWorks. So at some point there are no Windows messages (e.g. button clicks) in the message queue for SolidWorks. At this point the SolidWorks idle processing will kick in. For example it will check if any of the toolbars needs updating to ensure the button states are reflecting the state of the application. Of course, idle processing consumes CPU cycles too. You would prefer SolidWorks to spend these cycles on your API calls instead. Pressing the ALT-key or bringing up a menu, makes SolidWorks enters another message loop which does not perform any idle processing. Please have a look at the following method: SldWorks::CommandInProgress
which will tell SolidWorks to wait a bit longer before having the idle processing kick in, so it can get to your API calls sooner. The reason you have to explicitly tell SolidWorks is because the client making the API calls is in a separate process, so SolidWorks isn't aware someone wants it to do useful" things instead of idle processing. If the client would be in the same process in the form of an add-in, the add-in would simply keep SolidWorks busy, delaying the idle processing in a natural way. Usage is simple (VB pseudo code): swApp.CommandInProgress True ' your API calls go here...... swApp.CommandInProgress False Und das Beste ist es bringt auch was, ich habe Reduktionen von 80% bei langen Operationen erreicht.
------------------ Gruß Ingo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 15. Aug. 2006 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Hallo Ingo, jupp, die Antwort hatte ich auch erhalten, nur vergessen hier zu posten Vielleicht sollte man dazu noch erwähnen, dass der Call SldWorks::CommandInProgress erst ab SW2006 SP2 in der API drin ist, also Programme, die das nutzen, sollten vorher unbedingt einen Versionscheck machen, sonst landen die ggf. auf der Nase Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Member of CAD.de BOINC Team - | Seti@Home | CPDN | Einstein@Home Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 15. Aug. 2006 11:21 <-- editieren / zitieren --> Unities abgeben:
Jetzt habe ich eine gute Ausrede, wenn jemand hinter mir steht und sagt, daß ich doch endlich mal auf den OK-Knopf drücken soll. Ich verhindere, daß SolidWorks sich fertigmeldet, damit es sich schneller fertig melden kann ------------------ Lutz Federbusch Mein Gästebuch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |