Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  for-schleife in Reaction

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
  
CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48
  
Mit der Kisters 3DViewStation komplexeste 3D CAD-Daten beherrschen, eine Pressemitteilung
Autor Thema:  for-schleife in Reaction (2703 mal gelesen)
gava90
Mitglied


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

Beiträge: 2
Registriert: 13.06.2014

Intel Xeon X5687 3,6GHz
12 GB RAM
Quattro 2000
Win 7 SP1
CATIA V5R19 SP9

erstellt am: 16. Jun. 2014 13:56    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


geometrie_reaction.png

 
Hallo zusammen,

nachdem ich in den letzten Monaten fleißig Forenbeiträge gelesen habe, die mir oft weitergeholfen haben, hab ich nun ein Problem für das ich keine Lösung finde.

Meine Problemstellung ist folgende:
Ich messe mit Parametern den Abstand zwischen einer Kurve und einer Fläche. Mit einer Reaction, die auf eine Parameteränderung reagiert ("ON-OFF-Schalter), möchte ich eine Art Optimierung starten.
Solange der Parameter mit dem gemessenem Abstand kleiner ist als ein Sollabstand sollen die Punkte mit denen die Kurve gesteuert wird verändert werden. Dies soll solange passieren bis der gemessene Abstand größer ist als der Sollabstand.
Ich habe das mit einer Reaction mit einer Knowledgeware action realisiert. Leider macht die for-Schleife Probleme.

Ich habe ein vereinfachtes Beispiel dazu aufgebaut. Das angehängte Bild zeigt die vorhandene Geometrie, Parameter und Formeln.

Im ersten Versuch hab ich folgende Reaction erstellt.

Source type: Selection
Sources: schalter
Available events: ValueChange

Knowledgeware action

Code:
let i = 1
let a(Length)
if schalter == "on"
{
    for i while mindest < soll
    {
          a = steuer
          steuer = a + 1mm
    }
}

Dieser Versuch scheitert. CATIA hängt sich auf, da wahrscheinlich die Schleife unendlich lang läuft, da nach einem Schleifendurchlauf der Parameter mindest=distance(test\Surface.1,test\Line.1) nicht aktualisiert wird.

Im zweiten Versuch habe ich die for-schleife weggelassen:


Source type: Selection
Sources: schalter
Available events: ValueChange

Knowledgeware action

Code:
let a(Length)
if schalter == "on"
{
    if mindest < soll
    {
          a = steuer
          steuer = a + 1mm
    }
}

Diese Reaction funktioniert. Schalte ich nun händisch den Parameter schalter immer wieder von "on" auf "off" usw... läuft die Reaction immer einmal durch und nach ein paar Durchläufen habe ich den gewünschten Mindestabstand. Anscheinend wird der Parameter mindest jedes Mal wenn die Reaction ausgelöst wird aktualisiert.
Manuell zu klicken ist aber eigentlich nicht mein Ziel ;)

Nachdem ich weitere Versuche mit der Schleife gemacht habe, die nicht erfolgreich waren, bin ich auf eine "Workaround"-Lösung gekommen.

Ich lasse die Reaction aus dem zweiten Versuch und erstelle noch eine zweite, in der ich das "Schalter ein-ausschalten" automatisiere:

Source type: Selection
Sources: echter_schalter
Available events: ValueChange

Knowledgeware action

Code:
let j = 1
if echter_schalter == "ON"
{
    for j while mindest < soll
    {
          schalter = "off"
          schalter = "on"
    }
}

Damit funktionierts dann 

Trotzdem würd mich interessieren ob es eine Möglichkeit gibt, das ganze mit einer Reaction zu automatisieren.
Nach meinen Versuchen denke ich, dass die Reaction aus dem ersten Versuch nicht funktioniert, weil der Parameter mindest = distance(test\Surface.1, test\Line.1) nicht aktualisiert wird nach jedem Schleifendurchlauf.

Gibt es eine Möglichkeit einen Befehl zur Aktualisierung des Parameters in die Reaction einzubauen?
Befehle wie:
mindest.Update
mindest -> Update
funktionieren nicht. Auch nicht beim ganzen Part (testpart.Update , testpart -> Update) oder zb. der Line (test\Line.1.Update, test\Line.1 -> Update)

Die CATIA Hilfe zum Knowledge Advisor habe ich auch schon durchgeforstet.
Auch für andere Ideen das Problem zu lösen bin ich dankbar. 


Vielen Dank schon mal

Grüße

Gabriel

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

ptit.tom
Mitglied
CAD-Berater


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

Beiträge: 115
Registriert: 11.02.2005

win10, CATIA R19 bis R30

erstellt am: 25. Jun. 2014 16:34    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 gava90 10 Unities + Antwort hilfreich

Hallo,

Es gibt die Möglichkeit VB für die Reaktionen zu verwenden (radio button bei der Erzeugung einer Reaktion). Dann sind Update und Schleife kein Problem mehr.

Sonst kann man mit EKL in einer Reaktion ein Macro with Argument starten. Es ist praktischer, um Parameter weiterzugeben.

Code:
Macro_Feature.Run(arg1, arg2,...)

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

gava90
Mitglied


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

Beiträge: 2
Registriert: 13.06.2014

Intel Xeon X5687 3,6GHz
12 GB RAM
Quattro 2000
Win 7 SP1
CATIA V5R19 SP9

erstellt am: 25. Jun. 2014 17:12    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,

Danke für die Antwort.
hab gehofft ich könnte das Problem ohne VB lösen. 
Anfangs hatte ich überlegt die Reaction komplett in VB zu schreiben, bin davon aber wieder abgewichen, weil es mir einfacher erschien eine Knowledgeware Action zu verwenden.
Die Lösung in der bestehenden Reaction eine Macro with Argument zu starten um den Parameter zu aktualisieren finde ich gut. Wenn ich Zeit habe werde ich das mal ausprobieren.

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)2025 CAD.de | Impressum | Datenschutz