Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Do Until Schleife, Ausgans-Prüfkriterium

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Do Until Schleife, Ausgans-Prüfkriterium (561 mal gelesen)
Macro_Man
Mitglied



Sehen Sie sich das Profil von Macro_Man an!   Senden Sie eine Private Message an Macro_Man  Schreiben Sie einen Gästebucheintrag für Macro_Man

Beiträge: 21
Registriert: 13.07.2006

Catia V5 R16 SP5

erstellt am: 18. Jul. 2006 09:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

folgendes Problem, ich möchte eine Do Until Schleife programmieren, die nach einer Selction überprüft ob die Selection vom Typ "Body ist.

Sub CATMain()


Dim Ref(0)
Ref(0)= "AnyObject"

Do

Dim UserSel As Selection
Set UserSel=CATIA.ActiveDocument.Selection
UserSel.clear

Dim E As CATBSTR
E = UserSel.SelectElement2(Ref,"TEST",true)

MsgBox(UserSel.Item(1).Value.Name)

UserSel.EndSelectElement
UserSel.Clear

Loop Until (E = "Body")


End Sub


So funktioniert es nicht, die Ausgangsbedingung wird nicht erkannt und die Schleife endlos durchlaufen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tapani.
Mitglied



Sehen Sie sich das Profil von Tapani. an!   Senden Sie eine Private Message an Tapani.  Schreiben Sie einen Gästebucheintrag für Tapani.

Beiträge: 56
Registriert: 12.05.2006

erstellt am: 18. Jul. 2006 10:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Macro_Man 10 Unities + Antwort hilfreich

moin,

dein E liefert den Status des Select-Commands, d.h. "Normal", "Cancel" etc. und nicht den Typ des Selected Element. Um das rauszukriegen gibts die VBS-Funktion typename.
Auch brauchst du bei SelectElement2 nicht EndSelectElement zu verwenden.
Und wenn du mit VB-Script arbeitest sollten Dim-Statements kein "as" enthalten. Gibt bei mir zumindest einen kritischen Fehler.
Dann sieht dein Script folgendermaßen aus:

Code:
Sub CATMain()
  Dim Ref(0)
  Ref(0)= "AnyObject"

  Do
    Set UserSel=CATIA.ActiveDocument.Selection
    UserSel.clear
   
    E = UserSel.SelectElement2(Ref,"TEST",true)
   
    msgbox typename(UserSel.Item(1).Value)
    UserSel.Clear
 
  Loop Until (typename(UserSel.Item(1).Value) = "Body")
End Sub


CUSee You
    Tapani

------------------
Don't take life so seriously....
it's not a permanent  condition

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Macro_Man
Mitglied



Sehen Sie sich das Profil von Macro_Man an!   Senden Sie eine Private Message an Macro_Man  Schreiben Sie einen Gästebucheintrag für Macro_Man

Beiträge: 21
Registriert: 13.07.2006

Catia V5 R16 SP5

erstellt am: 18. Jul. 2006 10:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Tapani,

erstmal dabke für deine Hilfe. Ich muss mit CATScript arbeiten da mein MACRO auch unter Unix laufen soll. Ich habe deinen Code mal als VB - Script laufen lassen, bekommen folegende Fehlermeldung: method Item failed

in Zeile ==Loop Until (typename(UserSel.Item(1).Value) = "Body")==

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Macro_Man
Mitglied



Sehen Sie sich das Profil von Macro_Man an!   Senden Sie eine Private Message an Macro_Man  Schreiben Sie einen Gästebucheintrag für Macro_Man

Beiträge: 21
Registriert: 13.07.2006

Catia V5 R16 SP5

erstellt am: 18. Jul. 2006 11:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe das Problem selber lösen können, zwar mit einem kleinem Umweg aber es geht als CATScript. Ich habe einfach eine neue Variable zum überprüfen der Bedingung definiert.

Sub CATMain()


Dim Ref(0)
Ref(0)= "AnyObject"

Do

Dim UserSel As Selection
Set UserSel=CATIA.ActiveDocument.Selection
UserSel.clear

Dim E,A As CATBSTR
E = UserSel.SelectElement2(Ref,"TEST",true)

Msgbox (typename(UserSel.Item(1).Value)

A = typename(UserSel.Item(1).Value)


UserSel.EndSelectElement
UserSel.Clear

Loop Until (A="Body")


End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz