Autor
|
Thema: Parameter größer als anderer Parameter (2560 mal gelesen)
|
ichroque13 Mitglied
Beiträge: 7 Registriert: 14.10.2008
|
erstellt am: 14. Okt. 2008 14:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Arbeite seit 4 Wochen in meinem Praktikum mit catia, ihr könnt mir bestimmt helfen. folgendes: durch eingabe verschiedener Parameter entsteht eine Kabine. Anhand mehrerer zusammenaddierter Parameter entsteht ein weiteres Kettenmaß als Paramter y. Ein weiterer Parameter x den man eingibt darf dann nicht kleiner sein als dieser errechnete Parameter y da sonst gewisse Abstände nicht eingehalten werden. Ich will dem catia jetzt irgendwie klarmachen dass der einzugebende Parameter x auf jeden fall größer gleich dem errechneten Parameter y sein muss. man kann ja bei den parametern Wertebereiche festlegen, nur leider bringt mir das nichts weil dei sich nicht flexibel mit den parametern ändern und man nur feste werte angeben kann. dieser Bereich müsste sich aber mit den Parametern ändern. hoff habs versdtändlich erklärt und jemand kann mir helfen. bitteeee Danke und Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 14. Okt. 2008 15:07 <-- editieren / zitieren --> Unities abgeben: Nur für ichroque13
Hallo ichroque13, willkommen in Forum. Am einfachsten ist es, wenn du als Parameter x nur die Differenz eingibst (>= 0) und den dann zu y addierst. Falls das nich gewünscht ist, mußt du eine Regel einfügen. Dazu brauchst du eine KWA-Lizenz (die ich leider nicht habe). Gruß Bertel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ichroque13 Mitglied
Beiträge: 7 Registriert: 14.10.2008
|
erstellt am: 14. Okt. 2008 15:25 <-- editieren / zitieren --> Unities abgeben:
|
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 14. Okt. 2008 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für ichroque13
Hallo chroque13, vielleicht bringt dich eine Maximumformel weiter: Parameter_x = max(Parameter_y,Benutzerparameter) Ich denk mir das so: Du führst einen Parameter Typ Länge ein, dort kann der Benutzer einen beliebiegen wert eingeben. Der Parameter_x wird durch die obige Formel gesteuert: Gibt der Benutzer einen Wert ein, der größer ist als y, wird dieser für x verwendet. anderenfalls wird automatisch y zugewiesen. gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 14. Okt. 2008 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für ichroque13
Hallo ichroque13, sowas macht man wie schon erwähnt mit der KWA Lizenz (Knowledge Editor). Hier kann man einen Check definieren. Dieser Check fragt die eingegebenen Werte ab und bringt eine Fehlermeldung falls der X-Wert kleiner ist als der Y-Wert ABER: Es ist halt nur ein Check. Sprich der Wert wird falls du es so machst trotzdem für den x-Parameter übernommen und somit könnte es immer noch zu Fehler kommen. Ich würde das ganze mit einer "Reaction" machen. Jedes mal wenn der y-Wert geändert wird, soll die Untergrenze des X-Werts neu bestimmt werden. Hierbei gibt es dann die typische Fehlermeldung die du ja schon kennst und der Wert bleibt bei einer falschen Eingabe auf "0" stehen. Das ist dann ein bisschen offensichtlicher für die Anwender. Dazu braucht du eine Script welches ausgeführt werden soll sobald sich der Wert ändert und die Reaction selber. Ich habe dir mal einen Screenshot gemacht. Ich hoffe du bekommst es hin ansonsten einfach nochmal melden. Dabei könntest du deinen Sytsteminfo ausfüllen Hier jetzt zu guter letzt der Code der dir die Untergrenze deines Parameters ändert (Wie schon Screenshot erwähnt müsst du noch die Namen deiner Parameter im Script anpassen): Code:
Sub mainSet oDoc = CATIA.ActiveDocument Set oProd = oDoc.Product Set oParam = oProd.Parameters Set oLenghtX = oParam.Item("Grosser Wert (x)") Set oLenghtY = oParam.Item("Kleiner Wert (y)") oLenghtX.RangeMinValidity = 1 oLenghtX.RangeMin = oLenghtY.Value oLenghtX.RangeMaxValidity = 0 End sub
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ichroque13 Mitglied
Beiträge: 7 Registriert: 14.10.2008
|
erstellt am: 14. Okt. 2008 17:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel! ja das hört sich doch sehr gut an was du da schreibst! also die check-variante wäre es auf jeden fall ausreichend, das mit der reaction wäre natürlich ideal!! kann es leider erst morgen testen da da erst die lizenz frei wird. kann sein dass ich mich nochmal melde bzw. du kannst wohl sicher davon ausgehn...:-) aber schonmal danke, is genau was ich brauch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 14. Okt. 2008 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für ichroque13
Hallo, bin morgen leider auf Dienstreise kann also nicht sofort antworten. Spätestens am Abned bekommst du aber Antworten auf deine Fragen. Falls du nicht weiter kommst dann nicht gleich verzweifeln und auch mal die F1 Taste drücken ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ichroque13 Mitglied
Beiträge: 7 Registriert: 14.10.2008
|
erstellt am: 15. Okt. 2008 15:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel! folgende Probleme: das mit dem Wert 0 hat irgendwie nicht geklappt. auch muss der Eingabewert x größer gleich und nicht größer als y sein. aber das is jetz nicht so wichtig, der projektleiter will es nun doch anders, dafür brauch man denk auch ne reaction..: Sobald der x-wert durch ändern eines kettenmaßes unter den y-wert fällt, soll x- dem y-wert angepasst werden. dies soll aber mit einer meldung erfolgen! also nicht das einfach der x-wert geändert wird und der bediener bekommt es gar nicht mit! is das möglich?? hab es noch zusätzlich mit ner ampel gemacht,diese hat dann einfach bei x<y auf rot geschaltet. die lösung fand ich eigentlich nicht schlecht, aber nur ich halt...:-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 15. Okt. 2008 17:40 <-- editieren / zitieren --> Unities abgeben: Nur für ichroque13
Hallo, zuerst mal zu dem Wert 0. Meinst du den Wert hinter oLenghtX.RangeMaxValidity. Das ist eigentlich kein Wert sondern stellt eine Art boolesche Variable dar. 0 steht für false und 1 für true. Hier wird nur angegeben welche Grenzen der Wert hat. Hier wird die Obergrenze (RangeMax) auf nichts gesetzt. Sie ist also deaktiviert. Jetzt zu deinem Problem. Die Lösung mit der Check ist schon nicht ganz schlecht aber funktioniert leider in deinem Fall nicht. Du brauchst zum einen den Check der die Warnmeldung an den Anwender bereitstellt und zum anderen brauchst du eine Rule die den kleineren X-Wert an den Y-Wert angleicht. Hierbei tritt aber ein Konflikt auf. Die Rule ändert den Wert, der Check reagiert. Dazwischen baust du dir quasi eine Ringbeziehung auf die von CATIA nicht akzeptiert wird (Ringschleife). Falls du aber dennoch mal einen Check braucht und das Ergebniss nicht nur an der Ampel sehen willst musst du in der Check-Definition den "typ of check" von "Silent" auf "Warning" stellen und anschließend links daneben ("Message") einen Text eingeben. Sobald der Check "ungültig" ist, poppt die Warnmeldung auf und kann vom Anwender nur mit einem OK bestätigt werden (siehe Screenshot 1) Jetzt aber wirklich zur Lösung des Problems. In deinem Fall brauchst du eine "Reaction" da du damit erstens die Warnmeldung und zweitens das Ändern des Wertes erschlagen kannst. Hierzu musst du im Gegensatz zur ersten "Reaction" BEIDE Werte überwachen. Dazu einfach wie folgt vorgehen. Erst in die KWA Workbench welchseln, dann auf die Reaction klicken, dann die beiden zu überwachenden Werte im Strukturbaum anklicken, sodass sie im oberen Bereich stehen. (siehe Screenshot 2). Ich habe das Script jetzt nochmal angepasst und in R18 getestet. Bei mir läuft es einwandfrei. Musst halt wie immer die Namen der Parameter im Script auf deinen Names anpassen. Im 3. Screenshot siehst du mal wie es aussehen soll falls ein Anwender entweder für X einen kleiner Wert eingibt wie für Y oder sich der Y-Wert im Laufe der Konstruktion ändert und der X-Wert deswegen kleiner wird als der Y-Wert (könnte ja auch sein). Hier ist der Code den du dann noch reinkopieren musst: Code:
Sub mainSet oDoc = CATIA.ActiveDocument Set oProd = oDoc.Product Set oParam = oProd.Parameters Set oLenghtX = oParam.Item("Grosser Wert (x)") Set oLenghtY = oParam.Item("Kleiner Wert (y)") If oLenghtX.Value < oLenghtY.Value Then Box = MsgBox("Der X-Wert ist kleiner als der Y-Wert" + Chr(10) + "Der X-Wert wird nun an den Y-Wert angepasst", vbCritical + vbOKOnly, "X-Wert kleiner als Y-Wert") oLenghtX.Value = oLenghtY.Value End If End sub
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ichroque13 Mitglied
Beiträge: 7 Registriert: 14.10.2008
|
erstellt am: 16. Okt. 2008 08:19 <-- editieren / zitieren --> Unities abgeben:
Morgen Daniel! also das was du mit ampel und meldung schreibst hab ich gestern schonmal so hinbekommen,wäre zur not als lösung auch ok. aber ich probier natürlich das mit der reaction, wäte so ideal. leider muss ich auf ne lizenz warten.... halt dich auf dem laufenden.... nochmal vielen dank für deine hilfe!!! grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ichroque13 Mitglied
Beiträge: 7 Registriert: 14.10.2008
|
erstellt am: 16. Okt. 2008 09:33 <-- editieren / zitieren --> Unities abgeben:
|
ichroque13 Mitglied
Beiträge: 7 Registriert: 14.10.2008
|
erstellt am: 16. Okt. 2008 09:47 <-- editieren / zitieren --> Unities abgeben:
|