| | |
 | BOM Assistant für Stücklistenerstellung , eine App
|
|
Autor
|
Thema: Fortschrittanzeige in Schleife (93 mal gelesen)
|
sas-m2n Mitglied Mechanical Design Engineer

 Beiträge: 50 Registriert: 02.03.2011 @Work: HP Z4, NVIDIA Quadro P1000, 32 GB RAM, WIN11 X64 Creo Elements/Direct 20.6.3.0 Modelmanager 20.6.2 @home: DELL Precision M4500 PE8.0 auf Win11 pro X64
|
erstellt am: 28. Aug. 2026 07:21 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Zusammen, ich möchte gerne in einer Schleife eine Fortschrittsanzeige mit ausgeben (siehe generated_code.lsp) (display (format nil "Stanzung ~A von ~A" STANZUNG GESAMTSTANZUNGEN)) Leider wird die Anzeige die ich verwende, erst nach Erstellung des Bauteils ausgegeben. Gibt es hierzu andere Möglichkeiten? Vielen Dank im Voraus. Grüße Steffen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sas-m2n Mitglied Mechanical Design Engineer

 Beiträge: 50 Registriert: 02.03.2011 @Work: HP Z4, NVIDIA Quadro P1000, 32 GB RAM, WIN11 X64 Creo Elements/Direct 20.6.3.0 Modelmanager 20.6.2 @home: DELL Precision M4500 PE8.0 auf Win11 pro X64
|
erstellt am: 28. Aug. 2026 07:23 <-- editieren / zitieren --> Unities abgeben:         
|
MiBr Mitglied Konstrukteur
  
 Beiträge: 601 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 28. Aug. 2026 09:21 <-- editieren / zitieren --> Unities abgeben:          Nur für sas-m2n
Hallo, ein Möglichkeit gibt es z.B. mit der Konsole. Beim Start: (sd-show-console-window) In der lisp 'display' durch 'pprint' ersetzen, und am Ende Konsole nach 2 Sekunden wieder schließen! (sleep 2) (sd-hide-console-window) Oder, Du könnest aber auch mittels 'sd-defdialog' ein Dialog öffenen und dir über den ':value-type :display-only' den Fortschritt anzeigen lassen. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     

 Beiträge: 2466 Registriert: 3.20. ● PE60+80+90@home ● W10 Pro Bld19045.6466 ● Drafting V17~V20.6@job ● Modeling V17~V20.7.2@job ● Windchill 12.1.2.8@job ● UWGM Client 13.1.0.1@job ● Taschenrechner ● brain 6.4 ● Stift+Zettel V8.42
|
erstellt am: 28. Aug. 2026 09:47 <-- editieren / zitieren --> Unities abgeben:          Nur für sas-m2n
Zitat: Original erstellt von sas-m2n: ich möchte gerne in eine Schleife eine Fortschrittsanzeige mit ausgeben.
Hi Steffen, schöne Frage! Erklärbär: Modeling hat die Angewohnheit das UI erst dann zu erneuern wenn Zeit dafür ist. Bei längeren, sagen wir Berechnungen, sind die Berechnungen, die Arbeit an Model-Daten, an den Zeichnungs-Daten viel wichtiger als dieses bunte UI, was nur aus Pixeln besteht. ;-) Daher 'malt' ein Dialog sein UI erst später frisch, oder der Strukturbaum wird eneuert, oder eben aber (am wichtigsten) der/die Vierwports. Oder eben schlussendlich auch die 'display box' Es gibt aber zwei recht einfache Möglichkeiten. Beide sind nicht offiziell supported, aber seit ~20++ Jahren in vielen Consulting Lösungen in Benutzung. Und (dank der PTC Prioritäten) wird sich daran auch nix mehr ändern.
a) die Prompt Zeile: => set-prompt b) der grüne Fortschrittsbalken: => ui:win..progress-bar 
Die Erklärungen habe ich im beifliegenden LISP versenkt. Dann ist beides zusammen. Jenes einfach in Modeling laden. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ●
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     

 Beiträge: 2466 Registriert: 3.20. ● PE60+80+90@home ● W10 Pro Bld19045.6466 ● Drafting V17~V20.6@job ● Modeling V17~V20.7.2@job ● Windchill 12.1.2.8@job ● UWGM Client 13.1.0.1@job ● Taschenrechner ● brain 6.4 ● Stift+Zettel V8.42
|
erstellt am: 28. Aug. 2026 10:21 <-- editieren / zitieren --> Unities abgeben:          Nur für sas-m2n
|
MiBr Mitglied Konstrukteur
  
 Beiträge: 601 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 28. Aug. 2026 13:29 <-- editieren / zitieren --> Unities abgeben:          Nur für sas-m2n
Hallo und sry, meine bisherige Meinung war immer mit (setf var xx) wird der Wert geändert aber keine Änderung im Ui. Und bei (sd-set-variable-status :value xx) wird der Wert geändert mit Ui und z.B. ein after-input wird auch ausgeführt. Aber das lag ich dann wohl falsch und ehrlich gesagt ist der grüne Balken auch hundert mal schicker! Ich mach mich gerade schon auf die Suche nach Einsatzmöglichkeiten! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     

 Beiträge: 2466 Registriert: 3.20. ● PE60+80+90@home ● W10 Pro Bld19045.6466 ● Drafting V17~V20.6@job ● Modeling V17~V20.7.2@job ● Windchill 12.1.2.8@job ● UWGM Client 13.1.0.1@job ● Taschenrechner ● brain 6.4 ● Stift+Zettel V8.42
|
erstellt am: 28. Aug. 2026 14:31 <-- editieren / zitieren --> Unities abgeben:          Nur für sas-m2n
|
der_Wolfgang Moderator Tastenhauer
     

 Beiträge: 2466 Registriert: 3.20. ● PE60+80+90@home ● W10 Pro Bld19045.6466 ● Drafting V17~V20.6@job ● Modeling V17~V20.7.2@job ● Windchill 12.1.2.8@job ● UWGM Client 13.1.0.1@job ● Taschenrechner ● brain 6.4 ● Stift+Zettel V8.42
|
erstellt am: 28. Aug. 2026 14:41 <-- editieren / zitieren --> Unities abgeben:          Nur für sas-m2n
Zitat: Original erstellt von MiBr: ...ehrlich gesagt ist der grüne Balken auch hundert mal schicker!
Ja, aber .. wie ich gerade selber gelernt habe. Um mal den 'Overhead' für die verschiedenen Fortschrittsanzeigen zu messen, habe ich die Schleife in verschiedenen Varianten laufen lassen mit 10.000 Durchläufen.
Code: ;without any output - loop overhead ; => 0.00200 sec for loop ;(display (format nil "Progress ~3D" i)) ;; => 0.51820 sec for loop ;(print (format nil "Progress ~3D" i)) ;; => 1.04588 sec for loop ;(pprint (format nil "Progress ~3D" i)) ;; => 1.07252 sec for loop ;(format T "~&Progress ~3D~%" i) ;; => 0.55002 sec for loop ;(format T "Progress ~3D~c" i cr); #\Return) , wo linefeed ;(frame2::set-prompt(format nil "Progress ~3D"i):flush);; => 0.04932 sec for loop ;(UI::WIN-UPDATE-PROGRESS-BAR 1 i max-loop);; => 147.19527 sec for loop
gemessen auf einem 10 Jahre alten refurbished SFF PC. 1/10 Sekunden sind natürlich schon Wackler beim Messen, issklarne. Bei der Progress-Bar bin ich dann doch zusammen gezuckt 😵. Das hübscheste UI Erlebnis kostet eben auch am meisten 😳. Hier sollte man sich überlegen, ob man die Ausgabe nur triggert wenn sich z.B. der Ganzzahl Prozentwert tatächlich ändert. Die Progress Bar löst halt nicht so gut auf. Daher bringt es ja nichts sie bei minimalen Änderungen dauernd zu erneuern. Das ist hier nun aber auch bedingt durch die hohe Anzahl an Schleifendurchläufen, was allerdings beim 'durchnudeln' aller Instanzen einer ordentlich Baugruppe durchaus realistisch ist.
Code: ;(when (zerop (mod i 100))(UI::WIN-UPDATE-PROGRESS-BAR 1 i max-loop));; => 1.45775 sec for loop
So z.B. mit beliebigem max-loop Wert 🙂: Code: (setq percentage (round (/ i max-loop 0.01))) (unless (equal percentage-prev percentage) (UI::WIN-UPDATE-PROGRESS-BAR 1 i max-loop) (setq percentage-prev percentage) );; => 1.46533 sec for loop
Empfehlung wäre also SET-PROMPT in der Kombination mit geschicktem Aufruf von WIN-UPDATE-PROGRESS-BAR, ersteres weil es am einfachsten implementiert ist, letzteres wegen der Optik. ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ Bei halbwegs schnellen Schleifen kann man die Overheadzeit weiter drücken in dem man MODOLU zusätzlich einsetzt: Code: (setq percentage (round (/ i max-loop 0.01))) (when (and (not (equal percentage-prev percentage)) (zerop (mod percentage 5)) ;; means 5% steps as progress bar resolution ) (UI::WIN-UPDATE-PROGRESS-BAR 1 i max-loop) (setq percentage-prev percentage) ) ;; 0.30117 sec for loop
.. wenn dann da unbedingt ne grünen Balken sehen möchte. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     

 Beiträge: 2466 Registriert: 3.20. ● PE60+80+90@home ● W10 Pro Bld19045.6466 ● Drafting V17~V20.6@job ● Modeling V17~V20.7.2@job ● Windchill 12.1.2.8@job ● UWGM Client 13.1.0.1@job ● Taschenrechner ● brain 6.4 ● Stift+Zettel V8.42
|
erstellt am: 28. Aug. 2026 18:36 <-- editieren / zitieren --> Unities abgeben:          Nur für sas-m2n
|