Autor
|
Thema: SelectElement3 abbrechen (2758 mal gelesen)
|
Watje Mitglied Ingenieur
Beiträge: 73 Registriert: 16.09.2005
|
erstellt am: 28. Okt. 2005 15:56 <-- editieren / zitieren --> Unities abgeben:
|
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 31. Okt. 2005 07:00 <-- editieren / zitieren --> Unities abgeben: Nur für Watje
Hallo, kommt drauf an, was du unter abbrechen verstehst. Status = oSelection.SelectElement3(InputObjectType, ....) If (Status <> "Normal") Then End Else ... End if Wenn du jetzt z.B. die ESC-Taste drückst, ist wird dein Script beendet. ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Watje Mitglied Ingenieur
Beiträge: 73 Registriert: 16.09.2005
|
erstellt am: 31. Okt. 2005 11:16 <-- editieren / zitieren --> Unities abgeben:
Es soll nicht mein ganzes Scrip abgebrochen werden sondern nur die Funktion. Ich habe z.B. als Filter "Point" angegeben. Wenn der Benutzer nun gar keinen Punkt in seinem Part hat, gibt es keine andere Möglichkeit für ihn als Catia komplett "abzuschießen" um aus der Funktion wieder heraus zu kommen. Das will ich natürlich nicht. Schön wäre z. B. das er während der Funktion Esc drücken könnte um die Funktion zu beenden, mein Scrip aber nach dem Funtionsaufruf weiter läuft. Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 31. Okt. 2005 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für Watje
Hi, der Code ist dann im Prinzip der gleiche. Wenn du in VB6.0 arbeitest, legst du dir ein neues Modul an (z.B. MOD_SelectElement3). Das ganze sieht also so aus: Sub Main() ' .... dein Script End Sub Sub SelectElement3() ' ...Code siehe oben, nur als Abbruchkriterium nicht "end" (beendet Script), sondern "exit sub" (beendet nur die sub und macht dann in der main weiter.) End Sub Wenn du nicht mit verschiedenen Modulen arbeiten willst, kannst du auch alles ins Hauptmodul packen. Folgende Unterschiede sind zu beachten: Dim einer Variale innerhalb einer Sub > die Variable ist nur in der Sub verfügbar Dim einer Variale am Anfang des Moduls (also über der ersten Sub) > die Variable ist in allen Subs des Moduls verfügbar Public einer Variable > die Variable ist in allen Modulen verfügbar Gruss TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 31. Okt. 2005 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für Watje
|
Watje Mitglied Ingenieur
Beiträge: 73 Registriert: 16.09.2005
|
erstellt am: 31. Okt. 2005 15:47 <-- editieren / zitieren --> Unities abgeben:
Ich glaub ich hab mich noch nicht klar genug ausgedrückt und du hast mich missverstanden oder ich versteh den Code nicht. Mit "es soll nur die Funktion abgebrochen werden" meine ich die Funktion "Status = oSelection.SelectElement3(InputObjectType, ....)" Am besten ein Beispiel: ---------------------------------------------------------------------- 1:Private Sub cmdOK_Click(Index As Integer) 2 im InputObjectType(0) 3 im Status As String 4:InputObjectType(0) = "Point" 5:Status = selection1.SelectElement3(InputObjectType, "Punkt auswählen", True, CATMultiSelTriggWhenSelPerf, False) 6:If (Status = "Cancel") Then 7: Exit Sub 8:Else 9: msgbox "Punkt ausgewählt" 10:End If 11:End sub ---------------------------------------------------------------------- Wenn der Benutzer auf den Ok-Button drückt, wird er aufgefordert einen Punkt auszuwählen. Hat er aber keinen Punkt in seinem Part kann er kein Element auswählen ( bei anderen Element, z.B. eine Linie erscheint ein Verbotsschild). Die Funktion "SelectElement3" läuft also immer noch weiter und wartet auf einen Punkt. Ich kann also gar nicht die If-Anweisung erreichen, oder? Vielen dank dafür das du versuchst mir zu helfen Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 01. Nov. 2005 07:01 <-- editieren / zitieren --> Unities abgeben: Nur für Watje
Hallo, Eigentlich denke ich, das mir klar ist, was du meinst. Oder ich seh' vor lauter Bäumen wirklich den Wald nicht mehr. Also noch mal haarklein: Wenn du in der CAA V5 Visual Basic Help nachschaust, findets du zur Selction-Methode (SelectElementt2 und 3 etc) für den OutpatState (das was im Script mit Status bezeichnet ist) folgende Angabe: oOutputState The state of the selection command once SelectElement2/3 returns. It can be either "Normal" (the selection has succeeded), "Cancel" (the user wants to cancel the VB command, which must exit immediately), "Undo" or "Redo". Wenn du also die ESC Taste drückst, ist die Selection genauso beendet, wie wenn du (in deinem Fall) einen Punkt auswählst. Nur das die Selection dann eben leer ist. Und überprüfen, ob die Selection durch die Auswahl eines Objektes oder durch Abbruch (z.B. ESC Taste) beendet wurde, kannst du nmit Hilfe des OutputState (Status). Kopiere den folgenden Code in ein CATScript. Starte ihn. Drück die ESC Taste. Die Selection ist beendet. Die Msgbox "ESC gedrückt. Das Abbruchkriterium ...." erscheint. Du bist also in der IF-Anweisung drin. Und jetzt kannst du die Funktion, in der die Selection abläuft (und damit meine ich nicht die Zeile Status = .... oder die Sub oder das Modul) beenden und dein Hauptscript läuft weiter. Jedenfalls ist das bei meiner CATIA-Applikation so. Passiert bei dir etwas anderes? Dann bin ich auf deinen Post gespannt. Bis dann, TomTom Sub CATMain() Set Selection1 = Catia.ActiveDocument.Selection Dim InputObjectType(0) InputObjectType(0) = "Point" Status = Selection1.SelectElement3(InputObjectType, "Punkt auswählen", True, CATMultiSelTriggWhenSelPerf, False) If (Status = "Cancel") Then msgbox "ESC gedrückt. Das Abbruchkriterium ist also erfolgt. Die Selection ist beendet." Exit Sub Else msgbox "Punkt ausgewählt" End If End Sub
------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Watje Mitglied Ingenieur
Beiträge: 73 Registriert: 16.09.2005
|
erstellt am: 02. Nov. 2005 09:12 <-- editieren / zitieren --> Unities abgeben:
Hi tomtom1972 War doch alles richtig was du mir geschrieben hast. Ich hatte ein anderes Problem warum es bei mir nicht funktioniert hat: Ich habe ein Formular programmiert und es so eingestellt das es immer im Vordergrund steht. Wenn nun die Funktion SelectElement3 aufgerufen wurde, hab ich immer direkt versucht die Esc-Taste zu drücken. Dann passierte entweder gar nichts oder es kam eine Fehlermeldung "An Action cannot be completed because....". Wenn ich aber nun einmal auf das Catiafenster klicke funktioniert es genau so wie ich es mir vorgestellt habe. Vielen Dank für deine Hilfe Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 02. Nov. 2005 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Watje
Hi, das Problem hatte ich auch schon in einem anderen Zusammenhang, aber man muss erst mal dran denken .... Die einfachsten Sachen dauern immer am längsten. Schön das es jetzt läuft. Gruss TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mgheinz1001 Mitglied Dipl.-Ing. (FH)
Beiträge: 109 Registriert: 17.03.2005
|
erstellt am: 08. Dez. 2005 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für Watje
Hallo, ich hätte da auch noch eine Frage zu dem Thema. Bei dem Start meines Makors wird der Benutzer direkt aufgefordert ein Element auszuwählen. Das Problem ist jetzt folgendes: wenn der Benutzer sich dazu entschließt das Programm ohne Selection sofort wieder abzubrechen (ohne vorheriges Esc), dann ist das Programm zwar beendet nur läuft der Befehl SelectElement immer noch. Mit dem Funktion "EndSelectElement" funktioniert es nicht. Die greift erst, wenn vorher etwas ausgeählt wurde. Hat da jemand eine Lösung? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 12. Dez. 2005 06:33 <-- editieren / zitieren --> Unities abgeben: Nur für Watje
Hallo, dazu eine Verständnisfrage: Wie beendest du (oder der User) das Program ohne Selection oder drücken von ESC während CATIA auf die Selection wartet? Arbeitest du mit VB (Abbruch-Button in einer Form?) TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |