| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| CAD/CAM-Workshop in Suhl-Friedberg: SolidCAM + SOLIDWORKS |
Autor
|
Thema: Makro für SpeedPack Aktualisierung b. Modellen mit Konfigurationen (2070 mal gelesen)
|
RotMilan Mitglied Technischer Zeichner, Stahl-/Maschinenbau
Beiträge: 164 Registriert: 09.01.2008 SWX Workgroup 2010 x64, SP 4.0 SWX Workgroup PDM Server 2009, SP 2.0
|
erstellt am: 09. Dez. 2008 09:11 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, vorne weg möchte ich erst mal anmerken, dass die beschriebene Funktion eine neue Funktion der Version 2009 ist. Nun zum eigentlichen: nachdem hier auch oft über Makros diskutiert wird und ich nun gar keine Ahnung davon habe wollte ich mal Fragen ob es dieses Makro evtl. irgendwo schon gibt, bzw einer der versierten User hier sowas programmiert hat und evtl. weitergibt ;-) Ich fühle mich zumindest nicht imstande so etwas selbst zu programmieren. Problem: Ich habe Dateien (Baugruppen) mit mehreren Konfigurationen. Von jeder Konfiguration gibt es auch ein SpeedPack. Diese SpeedPack-Konfigurationen müssen einzeln erstellt, und einzeln aktualisiert werden. Nun bin ich vor allem auf der Suche nach einer Vereinfachung der Aktualisierung, bei der ich zum aktualisieren erst die Originalkonfiguration aufrufen muss, und danach erst die zugehörige SpeedPack-Konfiguration aktualisieren kann. Das ist manuell recht umständlich. Ebenso ist es beim erstellen. Aber das ist ja nur einmal zu machen, das aktualisieren kommt immer wieder mal vor - vor allem in der Entwicklungsphase. Schönen Tag und frohes schaffen noch euch allen! Gruß! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Liebezeit Mitglied Dipl.-Ing. Maschinenbau, CSWP
Beiträge: 114 Registriert: 01.07.2005 2007 SP5.0 2008 SP4.0 2009 SP3.0
|
erstellt am: 09. Dez. 2008 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für RotMilan
Hallo RotMilan, anbei ein von mir modifiziertes Makro von Stefan Berlitz. Es durchläuft alle Konfigurationen und updated ein evtl. vorhandenes SpeedPack. Habe es quick und dirty gemacht. Also teste es nochmal! Optional kannst Du deine Konfigs auch nochmal durchrechnen lassen.
Code:
' ********************************************************************** ' Originalmakro von Stefan Berlitz! Erweitert um die Aktualisierung von ' SpeedPacks von Konfigurationen ' ' 09.12.2008 Thomas Liebezeit ' Ich übernehme keinerlei Haftung für dieses Makro! ' ' Makro aktiviert nacheinander alle Konfigurationen und macht optional ' einen Rebuild dafür. Anschließend wird die vorher aktive Konfiguration ' wieder aktiviert. ' Kann hilfreich sein, um bei Problemen beim Speichern alle ' Konfigurationen eines Modells neu durchzurechnen. ' ' ACHTUNG: ' * Datei wird dadurch ggf. größer, vor allem bei vielen Konfs ' ' 26.11.2006 Stefan Berlitz ' Stefan.Berlitz@solidworks.cad.de ' http://solidworks.cad.de ' http://swtools.cad.de ' ********************************************************************** ' diese folgenden Werte können editiert werden ' ' RebuildFlag steuert, ob die Konfiguration neu durchgerechnet werden ' 0 = KEIN Rebuild ' 1 = normales Rebuild ' 2 = Fullrebuild Const RebuildFlag = 0 ' Definitions of typenames are consistent as in swconst.bas Option Explicit Const swDocPART = 1 Const swDocASSEMBLY = 2 Const swDocDRAWING = 3 Sub Main()
Dim swApp As Object Dim ModelDoc As Object Dim ConfigNames As Variant Dim vConfigName As Variant Dim swConfig As Object Dim swConfiguration As Object Dim bRetVal As Boolean Dim sConfigName As String Dim OldConfig As Object Dim OldConfigName As String Set swApp = CreateObject("SldWorks.Application") Set ModelDoc = swApp.ActiveDoc If ModelDoc Is Nothing Then ' Call MsgBox("Keine Datei geöffnet", vbOKOnly, "Information") Exit Sub End If ' ' alle Dateieigenschaften aus der Konfiguration holen ConfigNames = ModelDoc.GetConfigurationNames Set OldConfig = ModelDoc.GetActiveConfiguration OldConfigName = OldConfig.Name ' alle Konfigurationen durchlaufen For Each vConfigName In ConfigNames Call ModelDoc.ShowConfiguration2(vConfigName) sConfigName = CStr(vConfigName) ' Config holen und updaten falls SpeedPack Set swConfiguration = ModelDoc.GetConfigurationByName(sConfigName) bRetVal = swConfiguration.UpdateSpeedPak() ' Rebuild Select Case RebuildFlag Case 1 Call ModelDoc.EditRebuild3 Case 2 Call ModelDoc.ForceRebuild3(True) End Select Next ' und original Konfig wieder aktivieren Call ModelDoc.ShowConfiguration2(OldConfigName) End Sub
Grüße, Thomas ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RotMilan Mitglied Technischer Zeichner, Stahl-/Maschinenbau
Beiträge: 164 Registriert: 09.01.2008 SWX Workgroup 2010 x64, SP 4.0 SWX Workgroup PDM Server 2009, SP 2.0
|
erstellt am: 09. Dez. 2008 10:20 <-- editieren / zitieren --> Unities abgeben:
Das is ja super - jetzt muß ich nur noch rausfinden wie man das einbindet bzw. ausführt - aber das kann so schwer nicht rauszufinden sein (da gibts auch was in der Hilfe, soweit ich das gesehen hab). Was ich aber noch wissen müßte: nach aufrufen der Konfiguration (durch das Makro) - wird da erst mal die Zeichnung aktualisiert (Strg+Q)? Das wäre für mich wichtig, da das Modell sonst z.T. nicht richtig dargestellt wird. Und dann gleich noch die Frage - man verzeihe sie mir - wo gibts denn ne gute Befehlsübersicht der Makrobefehle, damit ich das ein wenig nachvollziehen kann? In der Hilfe hab ich nix gefunden. Gruß + frohes Schaffen weiterhin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Liebezeit Mitglied Dipl.-Ing. Maschinenbau, CSWP
Beiträge: 114 Registriert: 01.07.2005 2007 SP5.0 2008 SP4.0 2009 SP3.0
|
erstellt am: 09. Dez. 2008 10:43 <-- editieren / zitieren --> Unities abgeben: Nur für RotMilan
Hallo RotMilan, also aufrufen kannst Du das Makro, indem Du den Anhang (eine .swb Datei) in SolidWorks über Extras -> Makros -> Ausführen startest. Wenn Du es bearbeiten willst einfach Extras -> Makros -> Bearbeiten wählen. Die Hilfe zu den API Funktionen findest Du unter Hilfe -> API Hilfe. Damit ein Rebuild gemacht wird einfach die Konstante ändern.
Code:
' RebuildFlag steuert, ob die Konfiguration neu durchgerechnet werden ' 0 = KEIN Rebuild ' 1 = normales Rebuild ' 2 = FullrebuildConst RebuildFlag = 0
Bin mir jetzt aber nicht ganz sicher, ob es notwendig ist. Wenn ja, dann sollte man den Code nochmal ändern. Im Moment wird erst das SpeedPack aktualisiert und dann die Konfiguration durchgerechnet (falls gewünscht, steuerbar über die besagte Konstante). Diese Abfolge sollte man ändern. Grüße, Thomas ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RotMilan Mitglied Technischer Zeichner, Stahl-/Maschinenbau
Beiträge: 164 Registriert: 09.01.2008 SWX Workgroup 2010 x64, SP 4.0 SWX Workgroup PDM Server 2009, SP 2.0
|
erstellt am: 09. Dez. 2008 10:51 <-- editieren / zitieren --> Unities abgeben:
Coole Sache Thomas, vielen Dank! So sollte das funktionieren. Das durchrechnen ist unbedingt nötig! Muss ich jetzt manuell auch machen damits funzt! In der API-Hilfe finde ich jedoch keine Befehlsübersicht... Gibts sowas irgendwo? Gruß und frohes Schaffen! 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: 09. Dez. 2008 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für RotMilan
Hallo RotMilan, alle aktuellen API Methoden, Eigenschaften und Ereignisse findest du im Register Inhalt im Bereich "SolidWorks API Help - APIs". Dort sind diese nach Themen und Klassen sortiert. Das Bild zeigt zum Beispiel die Eigenschaft SldWorks.ActiveDoc. Ältere API Methoden findest du im Bereich "SolidWorks API Help - Obsolete APIs" ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Liebezeit Mitglied Dipl.-Ing. Maschinenbau, CSWP
Beiträge: 114 Registriert: 01.07.2005 2007 SP5.0 2008 SP4.0 2009 SP3.0
|
erstellt am: 09. Dez. 2008 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für RotMilan
Hallo RotMilan habe den Code dahingehend geändert, daß erst ein Rebuild und dann das Speedpack aktualisiert wird. Code:
' ********************************************************************** ' Originalmakro von Stefan Berlitz! Erweitert um die Aktualisierung von ' SpeedPacks von Konfigurationen ' ' 09.12.2008 Thomas Liebezeit ' Ich übernehme keinerlei Haftung für dieses Makro! ' ' Makro aktiviert nacheinander alle Konfigurationen und macht optional ' einen Rebuild dafür. Anschließend wird die vorher aktive Konfiguration ' wieder aktiviert. ' Kann hilfreich sein, um bei Problemen beim Speichern alle ' Konfigurationen eines Modells neu durchzurechnen. ' ' ACHTUNG: ' * Datei wird dadurch ggf. größer, vor allem bei vielen Konfs ' ' 26.11.2006 Stefan Berlitz ' Stefan.Berlitz@solidworks.cad.de ' http://solidworks.cad.de ' http://swtools.cad.de ' ********************************************************************** ' diese folgenden Werte können editiert werden ' ' RebuildFlag steuert, ob die Konfiguration neu durchgerechnet werden ' 0 = KEIN Rebuild ' 1 = normales Rebuild ' 2 = Fullrebuild Const RebuildFlag = 2 ' Definitions of typenames are consistent as in swconst.bas Option Explicit Const swDocPART = 1 Const swDocASSEMBLY = 2 Const swDocDRAWING = 3 Sub Main()
Dim swApp As Object Dim ModelDoc As Object Dim ConfigNames As Variant Dim vConfigName As Variant Dim swConfig As Object Dim swConfiguration As Object Dim bRetVal As Boolean Dim sConfigName As String Dim OldConfig As Object Dim OldConfigName As String Set swApp = CreateObject("SldWorks.Application") Set ModelDoc = swApp.ActiveDoc If ModelDoc Is Nothing Then ' Call MsgBox("Keine Datei geöffnet", vbOKOnly, "Information") Exit Sub End If ' ' alle Dateieigenschaften aus der Konfiguration holen ConfigNames = ModelDoc.GetConfigurationNames Set OldConfig = ModelDoc.GetActiveConfiguration OldConfigName = OldConfig.Name ' alle Konfigurationen durchlaufen For Each vConfigName In ConfigNames Call ModelDoc.ShowConfiguration2(vConfigName) sConfigName = CStr(vConfigName) ' Rebuild Select Case RebuildFlag Case 1 Call ModelDoc.EditRebuild3 Case 2 Call ModelDoc.ForceRebuild3(True) End Select ' Config holen und updaten falls SpeedPack Set swConfiguration = ModelDoc.GetConfigurationByName(sConfigName) bRetVal = swConfiguration.UpdateSpeedPak() Next ' und original Konfig wieder aktivieren Call ModelDoc.ShowConfiguration2(OldConfigName) End Sub
Eine vollständige API Befehlsübersicht findest Du nur in der API Hilfe. Um aber einen schnellen Einstieg in die API Programmierung zu bekommen kann ich Dir das Buch "SDA-Schulung Objekte und Dokumente" unter http://www.schuler-da.eu/freeware.html empfehlen. Grüße, Thomas ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RotMilan Mitglied Technischer Zeichner, Stahl-/Maschinenbau
Beiträge: 164 Registriert: 09.01.2008 SWX Workgroup 2010 x64, SP 4.0 SWX Workgroup PDM Server 2009, SP 2.0
|
erstellt am: 09. Dez. 2008 11:27 <-- editieren / zitieren --> Unities abgeben:
Was ich suche ist mehr eine Gesamtübersicht. Aber das hilft mir auch weiter denke ich. Hatte sowas mal vor Urzeiten für TurboPascal und fand das recht genial. Vielen Dank Daniel für Deine Mühe mit dem Bild. Gruß + frohes Schaffen weiterhin! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RotMilan Mitglied Technischer Zeichner, Stahl-/Maschinenbau
Beiträge: 164 Registriert: 09.01.2008 SWX Workgroup 2010 x64, SP 4.0 SWX Workgroup PDM Server 2009, SP 2.0
|
erstellt am: 09. Dez. 2008 11:35 <-- editieren / zitieren --> Unities abgeben:
Super Thomas, vielen Dank auch Dir nochmal für die Mühe, werd mir das mit dem Buch evtl. mal überlegen, vielleicht gehts für die wenigen Sachen, die ich hab auch mit der Hilfe... Gruß + frohes Schaffen weiterhin! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gegy3 Mitglied
Beiträge: 300 Registriert: 26.04.2006 SolidWorks 2012 SP 5.0
|
erstellt am: 09. Dez. 2008 12:37 <-- editieren / zitieren --> Unities abgeben: Nur für RotMilan
|