| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| AMB 2024 |
Autor
|
Thema: Probleme mit Makros (2748 mal gelesen)
|
Surf-Ace Mitglied Konstrukteur
Beiträge: 611 Registriert: 21.07.2001 Hardware: I7-980, 12GB, FX1800 DELL 3007WFP-HC DELL 2407WPF Software: Windows 7 64bit Swx 2007 SP 5.0 Swx 2010 SP 4.0 Rhinoceros v4.0 SR8 ProE 2001 / WF 2.0 Stampack
|
erstellt am: 29. Okt. 2008 08:24 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Frage zu Makros. Gestern habe ich, um testen zu können Solidworks 2009, installiert, ohne Probleme. Produktiv arbeite ich noch mit der 2007er version. Als ich heute morgen in der 2007er eines meiner Makros starten wollte, greift dieses Makro auf die frisch installierte 2009er Version zu. D.h. auch wenn nur 2007 gestartet ist, wird die 2009 geöffnet und die Makrofunktion ausgeführt . Wie bekomme ich meine Makros wieder dazu mit 2007 zu arbeiten? Vielen Dank für eure Hilfe. Grüße, Michael [Diese Nachricht wurde von Surf-Ace am 29. Okt. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 29. Okt. 2008 08:48 <-- editieren / zitieren --> Unities abgeben: Nur für Surf-Ace
|
Surf-Ace Mitglied Konstrukteur
Beiträge: 611 Registriert: 21.07.2001 Hardware: I7-980, 12GB, FX1800 DELL 3007WFP-HC DELL 2407WPF Software: Windows 7 64bit Swx 2007 SP 5.0 Swx 2010 SP 4.0 Rhinoceros v4.0 SR8 ProE 2001 / WF 2.0 Stampack
|
erstellt am: 29. Okt. 2008 08:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, danke für deine schnelle Hilfe, aber die Verweise hab ich schon geprüft. Wobei es so ist, dass ich mit der *.swp Datei eine kompilierte Exe-Datei starte. In der swp-Datei sind Verweise wie in Screenshot zu sehen aktiviert. In der Exe-Datei kann sich ja nicht geänderte haben da deren Kompilierung lange vor der 2009er Installation liegt. Woran könnte es den noch liegen? Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 29. Okt. 2008 09:18 <-- editieren / zitieren --> Unities abgeben: Nur für Surf-Ace
Hallo Michael, so ganz verstehe ich dein Problem nicht? Dein Makro arbeitet doch mit der SolidWorks Version aus welcher du das Makro startest. Durch die Initialisierung des SolidWorks Objekts mit:
Code: Set swApp = Application.SldWorks
ist das eigentlich gewährleistet.Wenn du allerdings mit CreateObject arbeitest, könnte das ein Grund sein. ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Surf-Ace Mitglied Konstrukteur
Beiträge: 611 Registriert: 21.07.2001 Hardware: I7-980, 12GB, FX1800 DELL 3007WFP-HC DELL 2407WPF Software: Windows 7 64bit Swx 2007 SP 5.0 Swx 2010 SP 4.0 Rhinoceros v4.0 SR8 ProE 2001 / WF 2.0 Stampack
|
erstellt am: 29. Okt. 2008 09:30 <-- editieren / zitieren --> Unities abgeben:
Hmm leider arbeite ich in meinem Makro mit Code: Set swApp = CreateObject("Sldworks.application")
ein Umschreiben des Makros würde ich vermeiden wollen. Zum Zeitpunkt des Makro-Starts ist aber nur solidworks 2007 geöffnet, von daher dürfte er auch nur 2007 finden oder? Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 29. Okt. 2008 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für Surf-Ace
Ich bin kein Fan von CreateObject, da es in meinen Augen in einem SolidWorks Makro der falsche Befehl ist. In einem externen Program kann ich es noch verstehen, aber in einem Makro. Aber dein Wunsch sein sei mir Befehl, mit:
Code: Set swApp = CreateObject("Sldworks.Application.15")
istCreateObject auf SolidWorks 2007 genagelt.Ist aber meiner Meinung nach auch nicht sinnvoll, da du dann alle Makros bei einem Versionswechsel anpassen musst. Ich kann dir wirklich nur
Code: Set swApp = Application.SldWorks
ans Herz legen.------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets 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: 29. Okt. 2008 10:07 <-- editieren / zitieren --> Unities abgeben: Nur für Surf-Ace
Hallo Michael, wenn du aus der SW2007 heraus das Makro startest darf das nicht einfach so eine andere Session von SolidWorks aufmachen. Im Gegensatz zu Daniel halte ich nichts von Verweisen und benutze immer CreateObject, auch in Makros. Das hat nämlich genau den Charme, dass immer die zuletzt aufgerufene Version von SolidWorks genutzt wird, die interaktiv gestartet wurde. Dabei trägt sich die SolidWorks mit seiner zur Version passenden CLSID im allgemeinen Schlüssel für Sldworks.Application ein, darüber sucht Windows dann die passende Applikation (es schaut also auf die CLSID, sucht die in der Registry, in dem Schlüssel gibt es dann den Key LocalServer32, der dann auf den Pfad zu der Datei zeigt, die dann per CreateObject erzeugt werden soll). Bei Start von SolidWorks schreibt jede Version dann immer seine eigene CLSID in den Schlüssel Sldworks.Application ... wenn dein Makro also eine zusätzlichen SW2009 Prozess aufmacht steht genau dessen CLSID in diesem Key. Und das kann eigentlich nur bedeuten, dass du entweder keine Schreibrechte auf dem Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SldWorks.Application\CLSID hast oder die SW2007 nicht zuletzt von Hand gestartet hattest. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 29. Okt. 2008 10:33 <-- editieren / zitieren --> Unities abgeben: Nur für Surf-Ace
@ Stefan, auch ohne Verweise zum Beispiel auf die SolidWorks Type Library ist doch Code: Set swApp = Application.SldWorks
, die bessere Alternative?Man bekommt immer die Instanz der SolidWorks Sitzung aus welcher man das Makro startet. Besonders wenn man mehrere Sitzungen gleichzeitig geöffnet hat ist das der sichere Weg. Ob mit oder ohne die SolidWorks Verweise ist doch in diesem Fall egal! Der Verweis auf die "SolidWorks Extensibility Type Library in dem, soviel ich weis Application.SldWorks enthalten ist, lässt sich sowieso nicht deaktiveren. Mit der Verweisen in SolidWorks Makros hast du mich überigens überzeugt , die lasse ich dort auch meist weg. In externen Anwendungen (z.B VB.NET Anwendungen) verzichte ich darauf allerdings nicht. ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Surf-Ace Mitglied Konstrukteur
Beiträge: 611 Registriert: 21.07.2001 Hardware: I7-980, 12GB, FX1800 DELL 3007WFP-HC DELL 2407WPF Software: Windows 7 64bit Swx 2007 SP 5.0 Swx 2010 SP 4.0 Rhinoceros v4.0 SR8 ProE 2001 / WF 2.0 Stampack
|
erstellt am: 29. Okt. 2008 11:00 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die schnelle und ausführliche Hilfe. Ich habe zunächst versucht mein Makro auf Set swApp = Application.SldWorks um zu schreiben, aber da ich dieses recht umfangreiche Makro vor 5 Jahren geschrieben habe, hat es nicht auf anhieb funktioniert , ja ich weis, es geht nichts über eine gute Dokumentation . Stefan's Post hat mich auf die Lösung des Problems gebracht. Ich arbeite auf einem Benutzerkonto mit eingeschränkten Rechten. Die 2009er Version hab ich als Admin installiert und gestern auch gleich mal ausprobiert, worauf sich die 2009er in die Registry eingetragen hat. Heute morgen habe ich mich unter meinem normalen Benutzernamen eingelogt und 2007 gestartet. Diese Version konnte sich aber wegen fehlender Benutzerrechte nicht in die Registry eintragen und somit war für die Makros noch der eintrag vom Adminaccount von gestern Abend gültig. Das Problem habe ich gelöst, indem ich als Admin einmal 2007 gestartet hat und dann wieder ausgeloggt. Somit finden meine Makros unter dem normalen Benutzerkonto nun nur die 2007er Version. Da ich 2009 noch nicht produktiv einsetze kann ich dort im Moment noch auf Makros verzichten. Ich weis das ist keine "saubere" Lösung, aber so kannich mir zumindest schnell und "unkompliziert" helfen, in dem ich als Admin immer die gewünschte SWX-version in die Registry eintragen lass . Grüße und noch einen erfolgreichen Tag, Grüße, Michael 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: 29. Okt. 2008 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für Surf-Ace
Hallo Daniel, ja, da hast du auch Recht, ist die bessere Alternative für SolidWorks eigene Makros. Da ich aber normalerweise nicht mit mehreren SolidWorks Sessions gleichzeitig arbeite und mit dem CreateObject auch noch kein Problem hatte war ich bisher wohl eher zu faul, meine ganzen Makros umzustellen. Aber ich versuche dann bei nächster Gelegenheit dran zu denken Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |