Autor
|
Thema: Forschrittsanzeige!!! (3025 mal gelesen)
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 08. Aug. 2006 15:40 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich arbeite im Moment an einem Projekt an dem der Anwender mehrere Optionen zum Ausführen hat. Da diese Optionen mit Kopiervorgängen von der Laufzeit ziemlich lange dauern möchte ich eine Forschrittsanzeige implementieren, die das Warten etwas luxuriöser macht. Das Problem: Je nach Option dauert das Programm mal länger oder mal kürzer. Die Fortschrittsanzeige kann also nicht fix von den Werten her sein, sondern sie müsste interaktiv zur jeweiligen Laufzeit des Programms lauffen. geht das????? ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Maxe Mitglied CAD-Konstrukteur, CATIA V5
Beiträge: 37 Registriert: 16.06.2005 Windows7 Prof x64 CATIA V5R19 Dell Precision T5500 12GB NVIDIA Quadro FX 580 512MB
|
erstellt am: 08. Aug. 2006 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Hallo Timberwolve, da eine Fortschrittsanzeige darauf basiert, das mann vorher weiß wie lange etwas dauert, ist das bei CATIA etwas schwierig. Ich mache das dann immer so: in der Statusbar kannst du etwas ausgeben, ohne eine Box zu aktivieren zum Beipiel: CATIA.StatusBar = "Macro is working" wenn du irgendwelche Schleifen durchlaeufst auch so: CATIA.StatusBar = "Macro is working, Loop " & i & " of " & selection1.count so weisst du jedenfalls wieviel schon fertig ist, jedoch nicht wie lange es noch dauert... Gruß V5-Maxe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 08. Aug. 2006 16:14 <-- editieren / zitieren --> Unities abgeben:
naja nur liest der Anwender eben die Statuszeile nicht, deswegen würd ich gern nen Progressbar auf ner separaten Oberfläche haben. Das sieht halt einfach besser aus und man sieht das sich was tut ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Holger_BW Mitglied CAx Support
Beiträge: 80 Registriert: 23.01.2004 CATIA V5R21SP6 Enovia V4 VPM Enovia V6R2015c Creo 2.0
|
erstellt am: 08. Aug. 2006 16:44 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Hi Timberwolve, ich habe eine Fortschrittsanzeige wie von V5-Maxe beschrieben mal in VBA programmiert (erscheint in einem Extra-Fenster). Bei Interesse kann ich Dir den Code zukommen lassen. Für VBS wüßte ich allerdings keine Lösung. Gruß, Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
okl Mitglied Wirtsch-Ing (Maschbau)
Beiträge: 157 Registriert: 21.04.2006 2x3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1800, Delmia V5R16 SP1, Win XP Prof SP2, Office, VS 2005, VB 6, Inventor (Test), VBExpress .NET 2005 Adminrechte
|
erstellt am: 08. Aug. 2006 16:50 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Moin. Unter VBS geht das nicht. Entweder du nutzt als Oberfläche eine Art Bild, welches Du auf einer Form einbindest oder Du programmierst in VB/VBA oder Du hast keine Fortschrittsanzeige. In VB kannst Du übrigens auch eine Form erstellen, kompilieren und von Deinem Makro aus über Parameter die als fertiges Steuerelement vorliegende Standardprgressbar nutzen. Wird nur wieder extrem zeitraubend sein. Ich würde behaupten: schnapp Dir einen lustigen Kreis und lass solange Farben darauf erscheinen, bis Deine Funktion fertig ist. okl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001
|
erstellt am: 08. Aug. 2006 17:09 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Man kann es auch in vbs hinbringen. Hatte mal vor langer Zeit eine Lösung über HTML (HTML Seite generieren und Balken darin darstellen), ist aber sehr viel Aufwand. Muss mal suchen ob ich die noch finde. Persönlich würde ich jetzt alles mit vb.net machen (hab sogar angefangen meine vbs Scripts rüberzuziehen), die Express Version ist kostenfrei und dann sind solche Probleme kein Thema. Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 08. Aug. 2006 22:17 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Hab meinen alten Code noch gefunden, er ist aber schon über 3 jährig Code: Const min = 0 Const max = 100Set oIE = WScript.CreateObject("InternetExplorer.Application") MakeBar for I = 1 to 100 Progress i, min, max next Sub MakeBar () ' Internet Explorer mit Fortschrittsanzeige starten Dim html ' HTML-Code definieren html = "<html><head><title>Fortschritt</title></head>" & _ "<body bgcolor='silver'>" & _ "<B><div id='T0'> % Fertig </div></B>" & _ "<hr size='20' align='left' width='0' " & _ "color='#0000FF' id='T1' thick='20'>" & _ "<B><div id='T2'> 0</div></B></body></html>"
' *** Internet Explorer aufrufen *** Set oIE = WScript.CreateObject("InternetExplorer.Application") oIE.left=50 ' Fensterposition oIE.top = 100 ' etc. oIE.height = 120 oIE.width = 280 oIE.menubar = 0 oIE.toolbar = 0 oIE.statusbar = 0 oIE.navigate "about:" & html ' Formular oIE.visible = 1 ' anzeigen ' Warte bis MSIE fertig ist Do While (oIE.Busy) Loop End Sub '======================================================================================================================== Sub Progress(ByVal x, min, max) ' max. 200 Pixel-Bereich With oIE.Document.all If x < min Then x = min If x > max Then x = max ' Wert ermitteln .T1.width = 200 * x / (max-min) ' Wert anzeigen .T2.InnerHTML= "--> " & x End With End Sub ' Ende
Hab ihn allerdings auf die Schnelle nicht mehr zum Laufen gebracht (liegt vielleicht am IE6 oder am SP2), aber vielleicht dient er noch als Anregung . Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 09. Aug. 2006 08:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, kannst du mir den Code mal bitte schicken??? Das wäre sehr nett, dann kann ich mal schauen wie das ganz funkt, bzw. ob es dann so aussieht wie ich gerne hätte *g* Vielen Dank schonmal ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 09. Aug. 2006 09:00 <-- editieren / zitieren --> Unities abgeben:
Hallo, noch so neben bei, also ich progammier das ganze auf VB6 also sollte das mit zusätzlichen Formen kein Problem sein. In vbs brauch ich es eh nicht Gruss ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 09. Aug. 2006 09:31 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 09. Aug. 2006 10:23 <-- editieren / zitieren --> Unities abgeben:
Naja der Timer misst halt meine Laufzeit nicht ;-) Egal wie gesagt ist ja nur Kosmetik, hab jetzt ein Progressbar eingabut und das sieht ganz ok aus. der Wert wird von den jeweiligen Schleifen beeinflusst und somit sieht es immer so aus als ob sich grad was tut. Das genügt schon. Zur Laufzeit wäre es halt perfekt gewesen. Naja man kann nicht alles haben *g* ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Holger_BW Mitglied CAx Support
Beiträge: 80 Registriert: 23.01.2004 CATIA V5R21SP6 Enovia V4 VPM Enovia V6R2015c Creo 2.0
|
erstellt am: 09. Aug. 2006 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Hallo Timberwolve, auch wenn Du Dein Problem wohl inzwischen gelöst hast, stelle ich trotzdem zur Sicherheit noch meinen VBA-Code hier zur Verfügung. Ich habe ihn von allem unnötigen Ballast befreit, so daß er sicher nicht alleine läuft, aber mit etwas Programmiererfahrung dürfte die Adaption kein Problem sein. Noch eine kurze Erklärung, was die Progressform zeigt, damit es leichter zu verstehen ist: eine Anzahl von Zeichnungen wird in PDF/DXF umgewandelt. Die Progressform stellt dar, die wievielte von X Zeichnungen gerade bearbeitet wurde. Gruß, Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |