Hallo Andreas,
ja, das ist immer so, wenn du mit "externen" Tools oder Programmen an andere Prozesse heranwillst. Das hat etwas mit dem Prozess-Übergreifgenden Overhead zu tun.
Einfach ausgedrückt: jedesmal, wenn du von aussen (also Excel) einen Befehl für SolidWorks absetzt packt Excel das Ganze in ein kleines Paket ein, übergibt es an den Prozesshandler, der überprüft das ganze, schickt es an SolidWorks, das führt den einen Befehl aus, verpackt die Antwort, übergibt es wieder dem Prozesshandling, der sucht deine Applikation und reicht dem das Ergebnis.
Das passiert jetzt mit jedem Befehl!
Ein SolidWorks Makro läuft im selben Prozessraum wie SolidWorks und deswegen fällt dieses ganze Hin und Her weg; wenn du also sehr viele Befehle von SolidWorks ausführen musst ist das entsprechend innerhalb eines Makro viel schneller.
Deswegen laufen z.B. die kompilierten DLLs als Add-In auch viel schneller als externe EXEs.
Umgehen kann man das theoretisch schon, ich hab's aber bisher nur in der Theorie gemacht
Du kannst ein Makro schreiben, was die Daten komplett aufbereitet und z.B. in die Zwischenablage kopiert und dieses Makro von deinem Tool aus mit RunMacro aufrufen. Dasselbe geht natürlich mit einer DLL.
Du kannst das ganze natürlich auch andersherum machen: wenn du viel in SolidWork sund nur wenig in Excel machen musst kannst du natürlich auch eine SolidWorks-Makro schreiben, was dann Excel fernsteuert
Ciao,
Stefan
------------------
Inoffizielle deutsche SolidWorks Hilfeseite
http://solidworks.cad.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP