Autor
|
Thema: Parameter Loop (2076 mal gelesen)
|
Gaucho Mitglied Konstrukteur
Beiträge: 52 Registriert: 07.05.2008 CATIA V5 R16 Sp5 CATIA V5 R17 SP5 CATIA V5 R19 SP3 64
|
erstellt am: 15. Jun. 2009 17:52 <-- editieren / zitieren --> Unities abgeben:
Servus beinand, ich frage in CATIA Längen Parameter ab und gebe eine Information (KWA) wenn ein bestimmter Wert überschritten wird. Was mich nun stört, dass in der KWA Umgebung ständig der Wert kontrolliert wird, egal ob ich die Werte mit einer Rule, Reaction oder mit einem Check kontrolliere. Jetzt habe ich mir gedacht, ich könnte dies mit VB realisieren, dass ich den Parameter Wert erst dann abfrage, wenn die Eingabe innerhalb der Funktion mit "OK" abgeschlossen wurde. Da meine VB Kenntnisse leider noch mau sind, weiß ich leider nicht, wie ich genau dies aussehen muss. Ich komme an das "ok" innerhalb der Funktion nicht ran, selbst wenn ich ein Makro aufzeichnen lasse erscheint der "ok" Button nicht. Kann mir jemand helfen? ------------------ mfg Gaucho Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. 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: 16. Jun. 2009 06:55 <-- editieren / zitieren --> Unities abgeben: Nur für Gaucho
Hallo Gaucho, mit einem VB-Script wirst du die Sache auch nicht zufriedenstellend lösen können und ich erklär dir auch warum. Das VB-Script deckt zwar voll und ganz die Funktionalität ab von dem was du machen möchtest nur musst du es ja irgendwann auch auslösen. Das ganze soll der Anwender aber nicht per Hand machen (also Makro starten) sondern das Script soll ausgelöst werden wenn du „OK“ klickst. Dieses Ereignis (so wird das genannt wenn man auf ein bestimmtes Ereignis reagieren möchte), gibt es in CATIA aber nicht. Je nach Anwendungsfall gibt es aber schon Lösungen. Die Frage ist hier auf was beziehen sich die Parameter bzw. welche Maße hängen an den Parameter. WARUM? -> Das Problem bei den Parameter ist, das es nur ein ChangeValue-Ereignis (in einer Reaction) gibt. Dies zeigt aber dasselbe Verhalten wie eine ganz normale Rule. Wenn du die Reaktion auf ein Constraint (also z.B. direkt auf das Teil im Sketch anwendest) dann gibt es das Ereignis "Update". Diese wird erst ausgelöst wenn das Maß ein Update erfährt. Wenn jetzt der Parameter mit dem Maß verknüpft ist und er wird geändert, erfährt das Maß ERST das Update wenn beim Parameter auf OK geklickt wird. So hast du dein gewünschtes Verhalten erzielt. ANMERKUNG: Das wird dann aber nur einmal z.B. als MsgBox im Script angezeigt. D.h. man sollte dann zusätzlich noch eine Rule definieren, die wiederrum von der Reaction abhängt die dem Anwender anzeigt das sein Maß zu groß ist Leider hast du nur R16 sonst hätte ich dir das ganze Part mal zur Verfügung gestellt (R19). Ansonsten hoffe ich, hilft die Erklärung. Nochmal in Kurzform: 1. Das unten aufgeführte Script kopieren 2. KWA-Reaction definieren 3. Als Quelle klickst du auf das Maß (im Konstruktionsbaum) und zwar auf das Maß das von dem Parameter gesteuert wird den du kontrollieren möchtest (z.B. hier in meinem Fall Sketch.2 -> Lenght.5) Bei „available events“ stellst du „update“ ein. 4. Jetzt stellst du auf VB Action um 5. Jetzt kopierst du mein Script rein und passt es ggf. an deine Bedürfnisse an Fertig ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gaucho Mitglied Konstrukteur
Beiträge: 52 Registriert: 07.05.2008 CATIA V5 R16 Sp5 CATIA V5 R17 SP5 CATIA V5 R19 SP3 64
|
erstellt am: 16. Jun. 2009 09:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, erstmal vielen Dank für Deine Antwort. Ich habe früher mal ein bisschen mit VB "gespielt" und Eingabefelder erstellt. Dort konnte ich auf das Ereignis "OK" reagieren, ich hatte gehofft, dass ich dies nun auch bei Längen Parametern verwenden kann, deswegen meine Frage. Deine Idee mit dem Update ist gut, aber ich checke die Längenparameter aus dem 3D, und da habe ich, wie von Dir schon erwähnt, nur den ValueChange zur Auswahl. Wo finde ich denn Dein Beispiel Script? ------------------ mfg Gaucho Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. 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: 16. Jun. 2009 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für Gaucho
Hallo, upps mein Fehler tut mir leid ich habs nicht mit angehängt. Hab jetzt gerade keinen Zugriff drauf weil ich in der Arbeit bin aber sobald ich daheim bin werde ich dir das Script nochmal reinstellen. Ja das mit den 3D Parametern war mir klar, aber die müssen ja irgendwelche Kinder haben. z.B. die Höhe eines Blocks ist mit dem Parameter verknüpft. Dann musst du direkt die Höhe des Blocks nehmen und nicht den Parameter. Kannst du mir ev. mal eine Beispieldatei von deiner Konstruktion anhängen dann schau ich´s mir mal an und sag dir dann wie man es in deinem Fall lösen könnte. ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. 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: 17. Jun. 2009 06:57 <-- editieren / zitieren --> Unities abgeben: Nur für Gaucho
Hallo Gaucho, hatte ja gestern gesagt ich reiche das Beispeilscript noch nach und hier kommt es. Anbei ist auch ein Screenshot von dem Baum und die Reaction. In meinen Baum gibt es noch einen Check. Dieser wird gesteuert von dem "Steuerungsparameter Kontrollmaß" und soll dem Anwender lediglich visualisieren das sein Kontrollmaß nicht io ist. Gesteuert wird der Parameter von dem Script in der Reaction. Des weiteren habe ich auch die komplette *.catpart Datei angehängt falls es sich jemand "Live" anschauen will (CATIA V5 R19!!!) Hier nun das Script (bevor ich´s wieder vergesse ) Code:
Sub main 'Deklarationen Dim oDoc As PartDocument Dim oPart As Part Dim oBodies As Bodies Dim oBody As Body Dim oShapes As Shapes Dim myPad As Pad Dim oParas As Parameters Dim myPara As BoolParam Dim myPadLenght As Double Dim myParaVal As Boolean 'Instanz auf das Pad erstellen / Instanz auf den Kontrollparamter erstellen Set oDoc = CATIA.ActiveDocument Set oPart = oDoc.Part Set oBodies = oPart.Bodies Set oBody = oBodies.Item("Hauptkoerper") Set oShapes = oBody.Shapes Set myPad = oShapes.Item("Testvolumen") Set oParas = oPart.Parameters Set myPara = oParas.Item("Steuerungsparameter Konstrollmaß") 'Wert für den Body auslesen myPadLenght = myPad.FirstLimit.Dimension.Value 'Fallunterscheidung If myPadLenght > 100 Then Box = MsgBox("ACHTUNG das Kontrollmaß für das " + Chr(34) + "Testvolumen" + Chr(34) + " wurde überschritten", _ vbCritical + vbOKOnly, "Konbstrollmaß überschritten") myPara.Value = False Exit Sub Else myPara.Value = True 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 |
Gaucho Mitglied Konstrukteur
Beiträge: 52 Registriert: 07.05.2008 CATIA V5 R16 Sp5 CATIA V5 R17 SP5 CATIA V5 R19 SP3 64
|
erstellt am: 17. Jun. 2009 09:50 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|