| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | |  | Schulung 3D Fräsen HSS, ein Seminar am 01.04.2025
|
Autor
|
Thema: Teile einfrieren per Makro (1889 / mal gelesen)
|
ckoring Mitglied Ingenieur
 
 Beiträge: 229 Registriert: 09.06.2009 Fujitsu CELSIUS M740 Intel Xeon E5-1620v4 32 GB RAM Nvidia Quadro P4000 Windows 10 Pro SolidWorks 2017 SP4.1 DBWorks R16 SP1.7
|
erstellt am: 11. Jan. 2018 08:42 <-- editieren / zitieren --> Unities abgeben:         
Hi! Hab für interne Test nach einer Möglichkeit gesucht per API die Einfrieren-Leiste für alle Teile einer Baugruppe zu verschieben. Bin auf diesen Thread im offiziellen Solidworks-Forum gestoßen https://forum.solidworks.com/message/482618. Möchte euch meine "Erkenntnisse" und Ergebnisse aber nicht vorenthalten. Wie immer ohne Gewähr für physische und psychische Soft- und Hardwareschäden! Code:
' Rebuild and Freeze Part in Assy (SW2014).swp ---------------------------------02/04/15 ' Description: Macro to rebuild all parts and Freeze in active assembly. ' Precondition: An active assembly containing part Files. ' Postcondition: All part files in the active assembly will be force rebuild and freezed. ' Please back up your data before use and USE AT OWN RISK ' ' This macro is provided as is. No claims, support, refund, safety net, or ' warranties are expressed or implied. By using this macro and/or its code in ' any way whatsoever, the user and any entities which the user represents, ' agree to hold the authors free of any and all liability. Free distribution ' and use of this code in other free works is welcome. If any portion of ' this code is used in other works, credit to the authors must be placed in ' that work within a user viewable location (e.g., macro header). All other ' forms of distribution (i.e., not free, fee for delivery, etc) are prohibited ' without the expressed written consent by the authors. Use at your own risk! ' ------------------------------------------------------------------------------ ' Written by: Deepak Gupta (http://gupta9665.wordpress.com/) ' ----------------------------------------------------------------------------- ' https://forum.solidworks.com/message/482618#comment-482618 ' modified by CK 11.01.2018Option Explicit ' set to 1 moves the freeze bar to the end, set to 4 moves it to the top (unfreeze) Const FREEZE As Integer = 4 Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swAssy As SldWorks.AssemblyDoc Dim swConf As SldWorks.Configuration Dim swRootComp As SldWorks.Component2 Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long) Dim swChildComp As SldWorks.Component2 Dim swPart As SldWorks.ModelDoc2 Dim swChildModel As SldWorks.ModelDoc2 Dim swAssy As SldWorks.AssemblyDoc Dim swCompConfig As SldWorks.Configuration Dim vChildComp As Variant Dim sPadStr As String Dim i As Long Dim Errors As Long For i = 0 To nLevel - 1 sPadStr = sPadStr + " " Next i ' resolve all LightWeight components Set swChildModel = swComp.GetModelDoc Set swAssy = swModel swAssy.ResolveAllLightWeightComponents (True) Set swChildModel = Nothing vChildComp = swComp.GetChildren For i = 0 To UBound(vChildComp) Set swChildComp = vChildComp(i) Set swChildModel = swChildComp.GetModelDoc If Not swChildModel Is Nothing Then If swChildModel.GetType = 2 Then Debug.Print nLevel & " - " & swChildComp.GetPathName TraverseComponent swChildComp, nLevel + 1 Else Set swPart = swApp.ActivateDoc3(swChildComp.GetPathName, False, swDontRebuildActiveDoc, Errors) If swPart.IsOpenedReadOnly = False Then Debug.Print nLevel & " - " & swPart.GetPathName 'swPart.FeatureManager.EditFreeze 4, "", True ' Freeze bar to Top 'swPart.ForceRebuild3 (False) swPart.FeatureManager.EditFreeze FREEZE, "", True ' Freeze bar to End if FREEZE is set to 1 swModel.ShowNamedView2 "*Isometric", -1 swModel.ViewZoomtofit2 swPart.Save Else Debug.Print nLevel & " - " & swChildComp.GetPathName & " (READONLY)" End If swApp.CloseDoc swPart.GetTitle End If Else Debug.Print nLevel & " - " & swChildComp.GetPathName & " (skipped)" End If Next i End Sub Sub main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swConf = swModel.GetActiveConfiguration Set swRootComp = swConf.GetRootComponent3(True) Debug.Print "---START---" TraverseComponent swRootComp, 1 Debug.Print "---END---" 'swModel.ForceRebuild3 (False) 'swModel.ShowNamedView2 "*Isometric", -1 'swModel.ViewZoomtofit2 'swModel.Save End Sub
mfg Christian [Diese Nachricht wurde von ckoring am 11. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JoergKirchner Mitglied Dipl.-Ing.
 
 Beiträge: 174 Registriert: 18.06.2001 SWX2022 Edu - Dell Precision M4800
|
erstellt am: 16. Jan. 2018 15:23 <-- editieren / zitieren --> Unities abgeben:          Nur für ckoring
Hallo, super habe nicht gewust das ich sowas brauche ... Aber jetzt habe ich das Makro und finde es eigentlich sehr praktisch. Habe noch eine Abfrage rein ob es eine Baugruppe ist. Man muss im Makro selbst in der Const FREEZE Zeile eintragen ob man Freeze oder unfreeze machen will. Angehängt das .swp file für faule. Dolles Ding von mir gibts mal ein paar Punkte. Getestet auf SWX 2017 SP5.0 ! ------------------ http://www.braun.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
     
 Beiträge: 3281 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 17. Jan. 2018 09:30 <-- editieren / zitieren --> Unities abgeben:          Nur für ckoring
Sehr super, hatte das auch schon mal angefangen, mit Bearbeiten im Kontext hab ich den Aufruf aber nicht hinbekommen wie er sein soll. (zumindest in 2016 - unfreeze ging, freeze komplett nicht, nur wenn man die genaue Position kennt, ging es ...) activatedoc und closedoc ist dann wohl die funktionierende Lösung ...  Werde das Projekt wieder aufnehmen. Edith Die Richtung habe ich wechselweise gesteuert mit
Code:
Set swFreezePos = swFeatMgr.GetFreezeLocation If swFreezePos Is Nothing Then freezedirection = swMoveFreezeBarToEnd Else freezedirection = swMoveFreezeBarToTop End If
dann will ich noch "alreadytouched" integrieren (aber ich glaub in "Referenzen sperren" ist das falsch implementiert) Gruß, Christian [Diese Nachricht wurde von Christian_W am 17. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |