| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | 7 Tipps für die Konstruktion von Kunststoffteilen und Spritzgussformen, ein Webinar am 27.06.2025
|
Autor
|
Thema: Struktiuranzeige in VBA anpassen (224 / mal gelesen)
|
KSAH Mitglied Freiberufler
 
 Beiträge: 211 Registriert: 18.06.2015 SolidWorks 2010 bis 2021
|
erstellt am: 13. Jun. 2025 11:59 <-- editieren / zitieren --> Unities abgeben:         
Servus, ich muss gerade meine Makros an sw2024 anpassen. Dabei ist mir was komisches aufgefallen. Ich kann in der Strukturanzeige die Haken einschalten aber nicht mehr ausschalten. Baugruppe Rechtsklick Strukturanzeige, Name und Beschreibung der Komponente, kommt das Menü im Bild. Ich habe es auf Englisch gestellt, damit ich in der API die Komponenten finde. Primary kann ich umschalten, Secondary einschalten, aber nicht mehr ausschalten. Auch wenn ich definitv 0 schreibe. Code: SetComponentIdentifiers(swComponentIdentifier_ComponentName, 0, 0)
Auch wenn ich überall Null schreibe oder sogar "swComponentIdentifier_None" was ja Null ist. Wo ist mein Fehler? Ein Get als Rückgabe habe ich auch nicht gefunden. Falls man wissen will was gesetzt ist. Gruß Andreas [Diese Nachricht wurde von KSAH am 13. Jun. 2025 editiert.]
[Diese Nachricht wurde von KSAH am 13. Jun. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3865 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 13. Jun. 2025 15:02 <-- editieren / zitieren --> Unities abgeben:          Nur für KSAH
|
KSAH Mitglied Freiberufler
 
 Beiträge: 211 Registriert: 18.06.2015 SolidWorks 2010 bis 2021
|
erstellt am: 13. Jun. 2025 15:16 <-- editieren / zitieren --> Unities abgeben:         
Aus SW2021 hat noch alles funktioniert. Ich bin jetzt mit SW2024 unterwegs. Ab 2022 entstand das Fenster siehe oben. Als mein Kunde umstieg hatte ich damals nur die gewissen Befehle ausgeklammert. Aber jetzt muss ich es bei mir hinbekommen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
 
 Beiträge: 151 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP5.0 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD Windows 11 23H2 22631.4460 Windows Feature Experience Pack 1000.22700.1047.0
|
erstellt am: 16. Jun. 2025 08:12 <-- editieren / zitieren --> Unities abgeben:          Nur für KSAH
Guten Morgen, nachfolgendes Skript funktioniert bei mir. Code:
Sub setupTreeDisplay(swPart As ModelDoc2) If (swPart Is Nothing) Then Exit Sub Dim swFeatMgr As SldWorks.FeatureManager Set swFeatMgr = swPart.FeatureManager swFeatMgr.ShowDisplayStateNames = False swFeatMgr.ShowComponentConfigurationNames = False swFeatMgr.ShowComponentConfigurationDescriptions = False swFeatMgr.ShowComponentNames = True swFeatMgr.ShowComponentDescriptions = True swFeatMgr.SetComponentIdentifiers swComponentIdentifier_ComponentName, swComponentIdentifier_ComponentDescription, swComponentIdentifier_None End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KSAH Mitglied Freiberufler
 
 Beiträge: 211 Registriert: 18.06.2015 SolidWorks 2010 bis 2021
|
erstellt am: 16. Jun. 2025 14:43 <-- editieren / zitieren --> Unities abgeben:         
Servus, ich verstehe jetzt gar nichts mehr. Das waren die alten Variablen. Die funktuionierten bis SW2021 sehr gut. Ein Kunde von mir hatte mit SW2022 mit Einführung des neuen Formulars massive Problenme. Ich schaltete damals mit einer Abfrage alles ab. Unf jetzt geht es wieder? Wozu wurde die neue Funktion oder oben als Sub eingeführt? Die SolidWorks API ist dermaßen kompliziert. Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
 
 Beiträge: 151 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP5.0 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD Windows 11 23H2 22631.4460 Windows Feature Experience Pack 1000.22700.1047.0
|
erstellt am: 16. Jun. 2025 14:49 <-- editieren / zitieren --> Unities abgeben:          Nur für KSAH
Zitat: Original erstellt von KSAH: Servus,ich verstehe jetzt gar nichts mehr. Das waren die alten Variablen. Die funktuionierten bis SW2021 sehr gut. Ein Kunde von mir hatte mit SW2022 mit Einführung des neuen Formulars massive Problenme. Ich schaltete damals mit einer Abfrage alles ab. Unf jetzt geht es wieder? Wozu wurde die neue Funktion oder oben als Sub eingeführt? Die SolidWorks API ist dermaßen kompliziert. Andreas
Keine Sorge, bei SWX verstehen die auch so einige Sachen nicht mehr. Ich hab keine Ahnung wie es vorher war, ich habe das Skript erst vor ein paar Monaten mit SWX 2024 eingeführt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KSAH Mitglied Freiberufler
 
 Beiträge: 211 Registriert: 18.06.2015 SolidWorks 2010 bis 2021
|
erstellt am: 16. Jun. 2025 15:29 <-- editieren / zitieren --> Unities abgeben:         
Ich wollte nur wissen warum die Funktion oder Sub (Wie man es halt schreibt) funktioniert. Einschalten geht, ausschalten nicht mehr. Zum Glück wollte ich alle Haken setzen. Aber was ist wenn alle Haken weg sollen? Erst die alten Valiablen löschen und dann die Funktion aufführen? Ein Witz. "swComponentIdentifier_None" heißt für mich nein. Ich will das nicht. In der Funktion ist jeder Haken ein Bit.
Code: swComponentIdentifier_ConfigurationName + swComponentIdentifier_ComponentDescription + swComponentIdentifier_ConfigurationDescription
schaltet alles ein. Es ist im Prinzip 32+4+64. Ich schakte 3 Bits ein. Und wenn ich die ausschalte müssten auch die Haken verschwinden. Es geht nicht. Es ist ein Witz. Eigentlich müsste der Fehler gemeldet werden. Aber ich weiß nicht wie. [Diese Nachricht wurde von KSAH am 16. Jun. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SLDW-FEM Mitglied Simulations-Ingenieur
  
 Beiträge: 656 Registriert: 21.02.2005 Solidworks 2017+2019+20+22 SpaceClaim Windows 11 64bit HP-ZBook 32gbRAM NVIDIA
|
erstellt am: 16. Jun. 2025 19:14 <-- editieren / zitieren --> Unities abgeben:          Nur für KSAH
|
KSAH Mitglied Freiberufler
 
 Beiträge: 211 Registriert: 18.06.2015 SolidWorks 2010 bis 2021
|
erstellt am: 17. Jun. 2025 09:53 <-- editieren / zitieren --> Unities abgeben:         
Moin, ich bin kein Programierer. ich kenne die Fachbegriffe nicht. Die Liste der Konstanten kenne ich. Daher habe ich meine Informationen. Auch habe ich schon einzelne Bits in einer Variable manipuliert. So kann man mehrere Informationen in einer Variable unterbringen. Sogar ganze Koordinaten kann man in einer Variable verstecken. (Leider gibt es in VBA kein unsignet int oder long. Ans letzte Bit möglichst nicht gehen.) Dieser Code ist auch aus der API Hilfe:
Code: ' Do show configuration or display state name if only one exists swFeatMgr.HideComponentSingleConfigurationOrDisplayStateNames = False ' Set primary identifier compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, 0, 0) Stop compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentDescription, 0, 0) Stop ' Set primary and secondary identifiers compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, swComponentIdentifier_ConfigurationName, 0) Stop compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, swComponentIdentifier_ConfigurationDescription, 0) Stop compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, swComponentIdentifier_ComponentDescription, 0) Stop 'Set primary, secondary, and tertiary identifiers compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, swComponentIdentifier_ConfigurationName + swComponentIdentifier_ConfigurationDescription + swComponentIdentifier_ComponentDescription, swComponentIdentifier_DisplayStateName) Stop
DA funktioniert das Einschalten perfekt. wenn ich vorher die Haken manuell eintferne geht es. Nur ich kann nicht ausschalten. Laut Hilfe müsste: Code: SetComponentIdentifiers(swComponentIdentifier_ComponentName, 0, 0)
alle Haken ausschalten und ganz links den oberen Optionbutton ein. Erste Übergabe gibt den primären Wert an, nächste Übergabe den Sekundären Wert. Und wenn ich da Null übergebe will ich keinen Haken stehen haben. Bei der MsgBox funktioniert es doch auch. (VBInformation, VBQuestion usw.) Ich setze ein Bit. Und jedes Bit hat eine andere Bedeutung. Andreas [Diese Nachricht wurde von KSAH am 17. Jun. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
 
 Beiträge: 151 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP5.0 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD Windows 11 23H2 22631.4460 Windows Feature Experience Pack 1000.22700.1047.0
|
erstellt am: 17. Jun. 2025 12:00 <-- editieren / zitieren --> Unities abgeben:          Nur für KSAH
Zitat: Original erstellt von KSAH: Moin,ich bin kein Programierer. ich kenne die Fachbegriffe nicht. Die Liste der Konstanten kenne ich. Daher habe ich meine Informationen. Auch habe ich schon einzelne Bits in einer Variable manipuliert. So kann man mehrere Informationen in einer Variable unterbringen. Sogar ganze Koordinaten kann man in einer Variable verstecken. (Leider gibt es in VBA kein unsignet int oder long. Ans letzte Bit möglichst nicht gehen.) Dieser Code ist auch aus der API Hilfe:
Code: ' Do show configuration or display state name if only one exists swFeatMgr.HideComponentSingleConfigurationOrDisplayStateNames = False ' Set primary identifier compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, 0, 0) Stop compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentDescription, 0, 0) Stop ' Set primary and secondary identifiers compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, swComponentIdentifier_ConfigurationName, 0) Stop compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, swComponentIdentifier_ConfigurationDescription, 0) Stop compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, swComponentIdentifier_ComponentDescription, 0) Stop 'Set primary, secondary, and tertiary identifiers compIdentifierRet = swFeatMgr.SetComponentIdentifiers(swComponentIdentifier_ComponentName, swComponentIdentifier_ConfigurationName + swComponentIdentifier_ConfigurationDescription + swComponentIdentifier_ComponentDescription, swComponentIdentifier_DisplayStateName) Stop
DA funktioniert das Einschalten perfekt. wenn ich vorher die Haken manuell eintferne geht es. Nur ich kann nicht ausschalten. Laut Hilfe müsste: Code: SetComponentIdentifiers(swComponentIdentifier_ComponentName, 0, 0)
alle Haken ausschalten und ganz links den oberen Optionbutton ein. Erste Übergabe gibt den primären Wert an, nächste Übergabe den Sekundären Wert. Und wenn ich da Null übergebe will ich keinen Haken stehen haben. Bei der MsgBox funktioniert es doch auch. (VBInformation, VBQuestion usw.) Ich setze ein Bit. Und jedes Bit hat eine andere Bedeutung. Andreas [Diese Nachricht wurde von KSAH am 17. Jun. 2025 editiert.]
Genau so funktioniert das bei mir auch, gerade getestet.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |