| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
Autor
|
Thema: GetDisplayStates (697 / mal gelesen)
|
Hermann75 Mitglied Konstrukteur
Beiträge: 128 Registriert: 04.05.2016 MS Windows 11 Pro; Intel i9-12900HX; HP ZBook Fury 16 G9 64GB Ram; 64bit; NVIDIA RTX A3000 SWX 2023 SP5 Professional SWX PDM 2023 Professional CAMWorks 2023 (SWX) HiCAD next 2008 Helios next 2008
|
erstellt am: 13. Nov. 2023 11:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen Vielleicht wurde die Frage ja bereits schon mal gestellt und beantwortet, bin leider aber nicht fündig geworden: Der Befehl GetDisplayStates gibt ein Array mit den Namen der einzelnen DisplayStates zurück. Leider ist der erste Name der des aktiven Anzeigestatus. Gibt es eine Möglichkeit Aktiven Display Status auf den Obersten Eintrag zu setzen? Bei uns oft "Anzeigestatus-1"? Sonnst muss ich darauf hoffen, dass der Bediener nichts falsch macht. Vielen Dank. Grüsse aus der Schweiz, Hermann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1094 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 13. Nov. 2023 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
|
Hermann75 Mitglied Konstrukteur
Beiträge: 128 Registriert: 04.05.2016 MS Windows 11 Pro; Intel i9-12900HX; HP ZBook Fury 16 G9 64GB Ram; 64bit; NVIDIA RTX A3000 SWX 2023 SP5 Professional SWX PDM 2023 Professional CAMWorks 2023 (SWX) HiCAD next 2008 Helios next 2008
|
erstellt am: 14. Nov. 2023 07:26 <-- editieren / zitieren --> Unities abgeben:
Der erste Eintrag ist so etwas wie die Basis. Alle Teile sind sichtbar. Die andern mit unter 30 Einträge sind entweder für die Zeichnung gedacht und stellen z.B. nur eine Unterbaugruppe dar, oder werden zukünftig für die Softwareentwicklung und Elektroplanung gebraucht. 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: 14. Nov. 2023 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
Zitat: Original erstellt von riesi: Und wenn Du den zweiten Eintrag nimmst, würde es passen?
vermutlich nicht, wenn der aktive bereits der oberste ist. Wenn der Algorithmus die Reihenfolge sonst beibehält und nur den aktiven nach vorne holt, könnte man wechseln und vergleichen, evtl braucht man 2 Wechsel, das ist was für einen Logiker 2. ist gleich geblieben --> 2. ist der oberste 2. ist nach vorne gerutscht --> ?? 1. ist auf 2 gerutscht --> ?? Alternative oder Ergänzung vielleicht die ausgeblendeten Komponenten zählen (bastelei mit GetDisplayStateComponentVisibility) und den mit den meisten sichtbaren Komponenten als obersten annehmen? Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1094 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 14. Nov. 2023 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
Wenn immer die gleich Vorlage genommen wird und die erste immer "Anzeigestatus-1" ist, könnte man die Liste auch durchlaufen und danach suchen. Alternativ auch mit Regex. Das Setzen der Anzeigestati setzt sowieso Disziplin voraus. Dann kann man auch erwarten, dass der erste immer einen bestimmten Namen hat. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermann75 Mitglied Konstrukteur
Beiträge: 128 Registriert: 04.05.2016 MS Windows 11 Pro; Intel i9-12900HX; HP ZBook Fury 16 G9 64GB Ram; 64bit; NVIDIA RTX A3000 SWX 2023 SP5 Professional SWX PDM 2023 Professional CAMWorks 2023 (SWX) HiCAD next 2008 Helios next 2008
|
erstellt am: 14. Nov. 2023 14:29 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen @Christian_W Es ist in der Tat so, dass der aktive Anzeigestatus an die erste Position rückt und danach alle andern bis zum Aktiven Anzeigestatus um eine Position verschoben werden. Was ich jetzt gemacht habe, aufgrund eurer Inspiration, dass ich schaue, ob der erste Anzeigestatus auch "Anzeigestatus-1" heisst. Wenn ja, gehe ich davon aus, dass der erste Anzeigestatus auch angewählt ist. Wenn der zweite so heisst, dann gehe ich davon aus, dass was verschoben ist. Dann kann ich diesen aktivieren und dann stimmt alles wieder. Wenn weder die erste noch die zweite Position "Anzeigestatus-1" heisst, dann wurde was umbenannt und der Benutzer muss selbst den ersten Ansichtsstatus anwählen. Das mit den Komponenten zählen. Dem vertraue ich nicht. Könnte ja sein, dass es einen Status gibt, wo der Benutzer die angrenzenden Teile eingeblendet hat. @riesi Das mit der Vorlage passt. Nur war es bis jetzt kein Problem, wenn man den ersten Anzeigestatus umbenannt hat. Danke euch für die Inspiration. Wäre hald schön gewesen, wenn es einen Trick gegeben hätte, um die richtige Reihenfolge erhalten zu können, ohne die Benennung berücksichtigen zu müssen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Swazi Mitglied
Beiträge: 6 Registriert: 10.02.2013 SOLIDWORKS 2021/2022/2023 SP0.1 WIN10x64 21H2
|
erstellt am: 15. Nov. 2023 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
Moin, ein „Trick“ würde mir einfallen, was aber eine Dokument Änderung zur Folge hätte. Zum Ablauf: 1. Erstelle ein neuen DisplayState (CreateDisplayState) bspw. mit dem Namen „temp“ • Nach dem Neuaufbau (ForceRebuild3) des Dokumentes ist der DisplayState „temp“ Aktiv und somit im Array von (GetDisplayStates) an erster Stelle. • Da die DisplayStates nicht sortiert werden, wird der „temp“ DisplayState an letzter Stelle gesetzt. 2. Aktiviere den DisplayState aus dem Array „1“ (ApplyDisplayState) 3. Lösche den neu erstellten DisplayState „temp“ (DeleteDisplayState) Nach meiner Logik, ohne es getestet zu haben, sollte nun der erste DisplayState Aktiv sein und der Array in der richtigen Reihenfolge. Ich hoffe es ist verständlich.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermann75 Mitglied Konstrukteur
Beiträge: 128 Registriert: 04.05.2016 MS Windows 11 Pro; Intel i9-12900HX; HP ZBook Fury 16 G9 64GB Ram; 64bit; NVIDIA RTX A3000 SWX 2023 SP5 Professional SWX PDM 2023 Professional CAMWorks 2023 (SWX) HiCAD next 2008 Helios next 2008
|
erstellt am: 20. Nov. 2023 07:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Swazi Danke für dein Mitdenken, werde mal deine Routine programmieren und austesten. Bin gespannt, was dabei rauskommt. Aktuell schlage ich mich aber noch mit einem Windowsupdate herum, dass mir fast PDM unbrauchbar macht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermann75 Mitglied Konstrukteur
Beiträge: 128 Registriert: 04.05.2016 MS Windows 11 Pro; Intel i9-12900HX; HP ZBook Fury 16 G9 64GB Ram; 64bit; NVIDIA RTX A3000 SWX 2023 SP5 Professional SWX PDM 2023 Professional CAMWorks 2023 (SWX) HiCAD next 2008 Helios next 2008
|
erstellt am: 06. Dez. 2023 08:57 <-- editieren / zitieren --> Unities abgeben:
So hab es nun hinbekommen: bRet = swConfig.CreateDisplayState("temp") 'Punkt 1 von Swazi DisplayStateNames = swConfig.GetDisplayStates 'Punkt 1A - Forcerebuild braucht es nicht, aber die Displaystatus müssen neu eingelesen werden, damit der erste Displaystatus sicher an Position 2 ist. bRet = swConfig.ApplyDisplayState(DisplayStateNames(1)) 'Punkt 2 von Swazi bRet = swConfig.DeleteDisplayState("temp") 'Punkt 3 von Swazi DisplayStateNames = swConfig.GetDisplayStates 'Neue Sortierung nochmals einlesen Danke fürs Lösungsfinden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |