Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  SolidWorks
  Struktiuranzeige in VBA anpassen

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


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

Beiträge: 211
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 13. Jun. 2025 11:59    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


Screenshot2025-06-12120146.png

 
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



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

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 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 KSAH 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von KSAH:
Ein Get als Rückgabe habe ich auch nicht gefunden. Falls man wissen will was gesetzt ist.

Die drei Identifier sind Publics. Zumindest ab 2022.

https://help.solidworks.com/2024/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IFeatureManager_members.html

Davor gab es offenbar auch Deinen Setter noch nicht.  
Bist Du wirklich noch mit SWX 2021 unterwegs?

[Diese Nachricht wurde von Torsten Niemeier am 13. Jun. 2025 editiert.]

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

KSAH
Mitglied
Freiberufler


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

Beiträge: 211
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 13. Jun. 2025 15:16    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

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


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

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 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 KSAH 10 Unities + Antwort hilfreich

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


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

Beiträge: 211
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 16. Jun. 2025 14:43    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

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


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

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 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 KSAH 10 Unities + Antwort hilfreich

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


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

Beiträge: 211
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 16. Jun. 2025 15:29    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

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


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

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 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 KSAH 10 Unities + Antwort hilfreich

Hallo KSAH
Das ist bitset (Überbleibsel aus 8MB-RAM-Zeiten, aber durchaus noch sinnvoll)
Somit geht kein None=0 mit anderen zusammen !

https://help.solidworks.com/2024/english/api/swconst/solidworks.interop.swconst~solidworks.interop.swconst.swcomponentidentifier_e.html

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

KSAH
Mitglied
Freiberufler


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

Beiträge: 211
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 17. Jun. 2025 09:53    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

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



Anzeige:Infos zum Werbeplatz >>

GeoVisual Civil Engineer CAD APP für 3D, Tiefbau, AEC - Architektur-, Ingenieur- und Bauwesen

Die benutzerfreundliche Softwarelösung zur Visualisierung von Infrastrukturplanungen

R3vo
Mitglied
staatl. gepr. Techniker, Konstrukteur


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

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 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 KSAH 10 Unities + Antwort hilfreich

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

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)2025 CAD.de | Impressum | Datenschutz