| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | Mit dem all4cad-Blog immer bestens informiert! - Neues zu Lösungen und Entwicklungen rund um ERP und PDM, eine Pressemitteilung
|
Autor
|
Thema: Alle offenen Fenster schliessen (5673 mal gelesen)
|
Klaus-Heinz Mitglied
 
 Beiträge: 219 Registriert: 30.10.2009
|
erstellt am: 20. Jan. 2012 12:42 <-- editieren / zitieren --> Unities abgeben:         
|
tberger Mitglied Application Manager CATIA V5 / V6
   
 Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 20. Jan. 2012 12:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Klaus-Heinz
Ja, per Makro: [EDIT]: Dim's eingebaut für CATScript Sub CATMain ()
Dim N As Long N = CATIA.Documents.Count If N = 0 Then MsgBox "Es befinden sich keine Dokumente in der Sitzung." Exit Sub End If Dim AllWindows Set AllWindows = CATIA.Windows Dim SelWindow Dim WindowDocument Dim Message Message = "Es sind " & N & " Dokumente geöffnet" & Chr(10) & "Sollen jetzt alle ohne zu sichern geschlossen werden?" answer = MsgBox(Message, vbYesNo) If answer = vbYes Then For I = N To 1 Step -1 Set SelWindow = AllWindows.Item(I) SelWindow.Activate Set WindowDocument = CATIA.ActiveDocument WindowDocument.Close Next End If End Sub ------------------ Grüße aus dem Thurgau Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ...
[Diese Nachricht wurde von tberger am 20. Jan. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus-Heinz Mitglied
 
 Beiträge: 219 Registriert: 30.10.2009
|
erstellt am: 20. Jan. 2012 13:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas Habe dein Makro erzeugt.Beim ausführen bekomme ich leider ein Fehler. die Zeile --- Set SelWindow = AllWindows.Item(I)-- Zuvor schreibt es mir wieviel Fenster ohne speichern geschlossen werden sollen. Vielleicht hast du eine Lösung dafür. Gruss KH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
   
 Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 20. Jan. 2012 13:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Klaus-Heinz
Ich habe bereits das Makro editiert, die Dim-Anweisungen waren für CATScript nötig. Hatte es aus meinem vba-Projekt kopiert, da waren die nicht nötig. ------------------ Grüße aus dem Thurgau Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus-Heinz Mitglied
 
 Beiträge: 219 Registriert: 30.10.2009
|
erstellt am: 20. Jan. 2012 13:29 <-- editieren / zitieren --> Unities abgeben:         
|
Klaus-Heinz Mitglied
 
 Beiträge: 219 Registriert: 30.10.2009 MS Windos 7 64 bit V5 R19 SP9 64 bit V5 R24 SP1
|
erstellt am: 20. Jan. 2012 13:42 <-- editieren / zitieren --> Unities abgeben:         
|
tberger Mitglied Application Manager CATIA V5 / V6
   
 Beiträge: 1385 Registriert: 13.01.2007
|
erstellt am: 20. Jan. 2012 15:08 <-- editieren / zitieren --> Unities abgeben:          Nur für Klaus-Heinz
Wenn man das "Oberprodukt", was ich annehme, im ersten Fenster oder einem der ersten Fenster liegen hat, könnte man die Schleife manipulieren und nicht bis zum letzten ersten Fenster zurück alles schliessen lassen. Also so was wie For I = N to 2 Step -1 Dann würde das erste Fenster übrig bleiben. Alles andere ist dann schon wieder mit mehr Programmieraufwand möglich. Ebenso habe ich mal das so programmiert, dass nur wirklich auch gesicherte Dokumente geschlossen wurden und andere "nur offene" ohne Rückfrage geschlossen wurden. ------------------ Grüße aus dem Thurgau Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus-Heinz Mitglied
 
 Beiträge: 219 Registriert: 30.10.2009 MS Windos 7 64 bit V5 R19 SP9 64 bit V5 R24 SP1
|
erstellt am: 23. Jan. 2012 07:57 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas ! Danke für die neue Möglichkeit ein Fenster noch offen zu lassen. Ich musste heute morgen feststellen das wenn ich die von dir geschriebene Zeile austausche funktioniert es leider nicht. Als ich dann versuchte das ,,alte,, wieder zu erzeugen ging das auch nicht mehr.Bitte kann du mir nochmal sagen als was ich es erzeugen muss. MS VB Script oder CAT Script Bekomme immer wieder diese Zeile - Set SelWindow = AllWindows.Item(I- vielen Dank im voraus KH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
   
 Beiträge: 1385 Registriert: 13.01.2007
|
erstellt am: 23. Jan. 2012 14:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Klaus-Heinz
Hallo KH, also bei mir geht es ganz normal. Es muss als .CATScript gesichert sein. Anbei das Makro, das dann das erste Fenster übrig lässt (runterladen, .txt entfernen). ------------------ Grüße aus dem Thurgau Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus-Heinz Mitglied
 
 Beiträge: 219 Registriert: 30.10.2009 MS Windos 7 64 bit V5 R19 SP9 64 bit V5 R24 SP1
|
erstellt am: 24. Jan. 2012 09:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas ! Habe wirklich umprobiert (beide Scripts) und wenn ich es nicht schon mal hingekriegt hätte , fängt man an an sich zu zweifeln. Habe dir mal eine PDF angehangen. Vielleicht kannst du daraus lesen warum es nicht funktioniert. Gruss und Danke KH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
   
 Beiträge: 1385 Registriert: 13.01.2007
|
erstellt am: 24. Jan. 2012 10:00 <-- editieren / zitieren --> Unities abgeben:          Nur für Klaus-Heinz
Hast du evtl. auch den "Schreibtisch" als Fenster auf? Da habe ich festgestellt, läuft es nicht durch und schliesst Fenster nur bis zum Schreibtischfenster und bleibt dann hängen. Füge einfach zu Beginn des Codes nach dem Sub CATMain() On error resume next ein. Dann sollten die Fenster geschlossen werden und das Schreibtischfenster bleibt übrig. ------------------ Grüße aus dem Thurgau Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus-Heinz Mitglied
 
 Beiträge: 219 Registriert: 30.10.2009 MS Windos 7 64 bit V5 R19 SP9 64 bit V5 R24 SP1
|
erstellt am: 24. Jan. 2012 10:48 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas ! Nein ich habe bei den Produkten und Parts nicht noch den Schreibtisch offen.Habe die Zeile -On error resume next-eingefügt in beide Scripts (alle schliessen und eins offen lassen). Gute Nachricht : Es gehen beide Scripts wieder ,bis auf die Kleinigkeit das dieses welches ein Fenster noch offen lassen soll, trotzdem alle schliesst. Frage : Wie wähle ich denn welches Fenster noch offen sein soll ? Oder ist es das Fenster was ich auch als erstes ( Oberprodukt) öffne ? Gruss Klaus-Heinz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
   
 Beiträge: 1385 Registriert: 13.01.2007
|
erstellt am: 24. Jan. 2012 12:31 <-- editieren / zitieren --> Unities abgeben:          Nur für Klaus-Heinz
Tja, ich habe keine weitere zündende Idee. Dafür bräuchte man auch die Fensterzusammenstellung, bei der es bei dir nicht geht. Das Makro "works as designed" bei mir. Ich habe aber auch die R19SP5. Lass dir doch mal die Anzahl der Fenster per MsgBox ausgeben um einen Anhalt zu bekommen, wieviele wirklich von deiner Session "gezählt" werden. Z.B. zu Beginn einbauen: MsgBox " Anzahl zu schliessender Fenster = " & CATIA.Windows.Count Wenn du ein spez. Fenster zum Beispiel das gerade aktive behalten möchtest und alle anderen schliessn, liesse sich das auch bewerkstelligen. Wie auch immer: für eine saubere Programmierung hilft eine saubere Spec.
Ich bin aber hier nur im Forum tätig um Ideen zu geben oder einfache Scriptansätze aufzuzeigen (und natürlich auch abzuholen ;-) ). Ab einem gewissen Zeitpunkt sehe ich das aber als "Auftrag" mit "Aufwand" und dann ziehe ich mich - ohne Auftrag - wieder aus dem Forum zurück. Wenn ich schreibe, dass es eine einfache Möglichkeit wäre die Schleife zu reduzieren wie oben und man etwas Programmier-Kenntnisse hat kann man daraus erkennen, dass bei einem N To 2 STEP -1 die 1 und damit das erste Fenster hier übrig bleiben sollte. Bleibt es nicht übrig, stimmt vlt. die Anzahl der Fenster nicht. ------------------ Grüße aus dem Thurgau Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus-Heinz Mitglied
 
 Beiträge: 219 Registriert: 30.10.2009 MS Windos 7 64 bit V5 R19 SP9 64 bit V5 R24 SP1
|
erstellt am: 24. Jan. 2012 12:57 <-- editieren / zitieren --> Unities abgeben:         
Danke sehr für die bisherige Hilfe und Bereitstellung dieses Scripts. Habe mich ein bisschen in diese Sache verrannt.Leider nicht beachtet das Du und andere die ,,Arbeit,, haben und ich nur die Probleme und Wünsche äussere. Werde deinen neuen Lösungsvorschlag probieren und sehen was event. das Problem sein könnte. mit freundlichen Grüssen Klaus-Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bemue Mitglied Mechanic Application Engineer
 Beiträge: 4 Registriert: 16.10.2003
|
erstellt am: 02. Feb. 2012 11:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Klaus-Heinz
Hallo Thomas ich habe dein Script auch ausprobiert, da ich genau so etwas auch gesucht habe. Dabei bin ich auf den gleichen Fehler gestossen, den Karl-Heinz auch hatte. Das Programm bleibt bei der Zeile Set SelWindow = AllWindows.Item(I) hängen. Mit Hilfe eines Debuggers habe ich dann herausgefunden, woher der Fehler kommt. Mein Test: Ich hatte 4 Produkte geöffnet, so dass 4 Fenster in Catia vorhanden waren. Ziel: Alle 4 Fenster sollten ohne Speichern geschlossen werden. Die Message, die das Programm rausschreibt, sagte, dass 186 Dokumente geöffnet sind. Anscheinend werden alle Dokumente gezählt, sprich alle CATParts und CATProducts. Durch die hohe Zahl funktioniert dann die Schleife nicht mehr, weil N viel höher ist als Fenster vorhanden sind. Ich habe daraufhin nur die Zeile geändert N=Catia.Documents.Count in N=Catia.Windows.Count Damit läuft das Programm durch und alle Fenster werden geschlossen. Vielleicht nützt euch dieser Hinweis etwas. Viele Grüße Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |