Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Probleme mit Makros

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Surf-Ace an!   Senden Sie eine Private Message an Surf-Ace  Schreiben Sie einen Gästebucheintrag für Surf-Ace

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Surf-Ace 10 Unities + Antwort hilfreich

Hallo Michael,

wahrscheinlich ist deine Verweise getauscht worden.
Einfach unter "Extras > Verweise..." die SolidWorks Verweise wie Typ Library auf die richtige Version umstellen.

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks Api Snippets

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Surf-Ace
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Surf-Ace an!   Senden Sie eine Private Message an Surf-Ace  Schreiben Sie einen Gästebucheintrag für Surf-Ace

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Swx07_Verweise.jpg

 
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


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Surf-Ace 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Surf-Ace an!   Senden Sie eine Private Message an Surf-Ace  Schreiben Sie einen Gästebucheintrag für Surf-Ace

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Surf-Ace 10 Unities + Antwort hilfreich

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)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Surf-Ace 10 Unities + Antwort hilfreich


16254_sldworks-application-clsid.gif


16254_sldworks-application-localsrever32.gif

 
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


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Surf-Ace 10 Unities + Antwort hilfreich

@ 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


Sehen Sie sich das Profil von Surf-Ace an!   Senden Sie eine Private Message an Surf-Ace  Schreiben Sie einen Gästebucheintrag für Surf-Ace

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 SWXSolidWorks-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)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Surf-Ace 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz