Autor
|
Thema: Setzen der zeitlichen Simulationsgrenzen in der DMU Kinematics Umgebung (2095 mal gelesen)
|
mycad123 Mitglied
Beiträge: 3 Registriert: 21.06.2013
|
erstellt am: 05. Jun. 2014 15:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, nachdem ich nun schon zahlreiche hilfreich Tipps hier im Forum gefunden habe, hoffe ich, dass ihr mich bei der folgenden Frage auch unterstützen könnt. Ich bin dabei den Simulation Player der DMU Kinematics Umgebung programmatisch zu steuern. Nun wollte ich herausfinden, ob man die obere (ClockUpperBound) und untere Grenzen(ClockLowerBound) der Simulationszeit neben dem beziehen über die Methoden GetClockUpperBound und GetClockLowerBound auch programmatisch verändern kann.
Vielleicht kann mir hierbei die Methode SetClockInterval helfen, jedoch habe ich es noch nicht geschafft diese in meinem Code einzubinden. Bin ich mit dieser Methode tatsächlich an der richtigen Stelle oder gibt es möglicherweise keine programmatische Lösung zum Verändern des oberen und unteren Zeitlimits für eine kinematische Simulation?
Vielen Dank im Voraus für die Unterstützung!!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 09. Aug. 2019 07:32 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Hallo zusammen, ich möchte dieses Thema nach sechs Jahren mal wieder hervorholen, da ich aktuell vor demselben Problem stehe. Der Befehl SetClockInterval läuft jedes mal auf einen Fehler, obwohl grundsätzlich alles korrekt aufgebaut ist. Das Auslesen der oberen und unteren Grenze funktioniert analog einwandfrei. Hat sich eventuell jemand in den letzten Jahren mit diesem Problem beschäftigt und eine Lösung gefunden? In den CATIA-Hilfen sind die Befehle und Methoden leider nicht aufgeführt, sodass man dort keine Beispiele oder eine Lösung findet. Vielen Dank schon mal im Voraus! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 09. Aug. 2019 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus Willkommen im Forum. Das einzige was ich bisher da gemacht habe ist dieser zusammengebastelte Code. Welche Fehlermeldung kommt denn? Wie sieht denn dein Code aus? Gruß Bernd PS: Für was willst du den Befehl nutzen? Ich wüsste nicht das man den Intervall manuell einstellen kann. ggf geht das per Makro gar nicht. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 09. Aug. 2019 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Diesen Code von dir habe ich auch schon gefunden gehabt und meinen darauf aufgebaut. Die Fehlermeldung habe ich als Bild angehängt. Mein Code sieht so aus: ---------------------------------------------------------------------------------------------------------- Sub CATMain() Dim productDocument1 As ProductDocument Dim simulationWorkbench1 As SimulationWorkbench Dim KinematicsWorkbench1 As KinematicsWorkbench Dim simulationPlayer1 As SimulationPlayer Set productDocument1 = CATIA.ActiveDocument 'Workbenches aufrufen Set simulationWorkbench1 = productDocument1.GetWorkbench("SimulationWorkbench") Set KinematicsWorkbench1 = productDocument1.GetWorkbench("KinematicsWorkbench") 'Simulatonswiedergabegerät aufrufen Set simulationPlayer1 = simulationWorkbench1.SimulationPlayer 'den 2. Mechanismus aufrufen Dim mechanism1 As Mechanism Set mechanism1 = KinematicsWorkbench1.Mechanisms.Item(2) 'den Mechanismus dem Wiedergabegerät übergeben simulationPlayer1.LoadAgent mechanism1 'Zeit aus Steuerpart holen Dim DauerMechanismus As Double DauerMechanismus = productDocument1.Product.Products.Item(1).ReferenceProduct.Parent.Part. _ Parameters.RootParameterSet.ParameterSets.Item("Transfer_1").DirectParameters.Item(8).Value 'Test Time Range Dim Zeit As Long Zeit = simulationPlayer1.GetClockUpperBound 'Neuen UpperBound setzen '###### Hier kommt die Fehlermeldung ###### simulationPlayer1.SetClockInterval 0, DauerMechanismus 'Prüfen ob obere Grenze geändert wurde Zeit = simulationPlayer1.GetClockUpperBound MsgBox Zeit End Sub ---------------------------------------------------------------------------------------------------------- Die Frage ist auch, was der Befehl UnSetClockInterval(i) bewirkt. Allerdings bekomme ich diesen Befehl auch nicht ausgeführt. LG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 09. Aug. 2019 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus Ich vermute dass das keine Funktion hat. Die Grenzen müssten doch vom Mechanismus/Sequenz/... kommen Mit PlayBegin solltest du an den anfangen springen können oder vermutlich mit PlayJump an eine andere Stelle. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 09. Aug. 2019 09:43 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Ich habe den Mechnismus über Regeln gesteuert. Ich erzeuge Bewegungen (Mechanismen), die über Parameter (den Verfahrweg und die Geschwindigkeit) definiert sind (die Dauer der Bewegung ergibt sich daraus). Während der Anwendung kann/wird es passieren, dass durch Parameteränderungen die Bewegungsdauer auch länger oder kürzer wird. Mein Problem ist daher nicht, die Simulation von Beginn oder von einem beliebigen Punkt aus zu starten, sondern dass die Simulation bei Änderungen der Bewegungen entweder zu kurz oder zu lange läuft. Daher wird die Bewegung nicht wie gewünscht dargestellt. Ich möchte ungern den oberen Grenzwert händisch anpassen müssen. Über eine Formel kann er ebenfalls nicht gesteuert werden, sodass ein Makro die einzige Möglichkeit ist. LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 09. Aug. 2019 09:50 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus Du könntest vielleicht über PlayStepForward (in einer Schleife (ggf mit Sleep & DoEvents)) die Simulation "abspielen". Dann könntest du die Grenze bestimmen. (passend zu meiner Signatur) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 09. Aug. 2019 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Ich habe em ende mehrere Mechanismen dieser Art, die ich in eine Sequenze setze. Die Sequenz übernimmt als Dauer eben jenen Wert, sodass diese Variante mir nicht weiterhilft, sofern ich dich richtig verstehe: Einen hohen Wert für die obere Grenze zu beginn setzen und über das Makro nur so weit abspielen lassen, bis der gewünschte Wert erreicht ist? Könnte klappen, wenn ich nur den einen Mechanismus hätte. Für mich ist das jedenfalls keine praktikable Lösung denke ich. Ich könnte höchstens versuchen, ob ich die Dauer in der Sequenz anpassen kann. Das hat einen Versuch verdient. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 09. Aug. 2019 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus Ich befürchte dass du per Makro eine Sequenz nur über die Parameter ändern kannst. Wahrscheinlich wird aber durch den Parameter SCT nur der Mechanismus gestaucht oder gestreckt. AFAIK sind die Methoden der SimulationWorkbench nur für das "Wiedergabegerät", helfen dir somit auch nicht zur Modifikation des Mechanismus oder Sequenz. Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 12. Aug. 2019 07:34 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Ich habe bis jetzt die Sequenz noch nicht vollständig per Makro erzeugen können. Das Feature wird erzeugt und ich kann auch die Mechanismen als Kinder hinzufügen, sodass diese im Baum unter der Sequenz stehen. Allerdings werden die Kinder in der Sequenz nicht untereinander aufgeführt. Das ist mein Code: ------------------------------------------------------------------------ Sub CATMain() Dim productDocument1 As ProductDocument Dim simulationWorkbench1 As SimulationWorkbench Dim KinematicsWorkbench1 As KinematicsWorkbench Dim Sequenzen As SIMSequences Dim Sequenz1 As SIMSequence Dim mechanism1 As Mechanism Dim mechanism2 As Mechanism Set productDocument1 = CATIA.ActiveDocument 'Workbenches aufrufen Set KinematicsWorkbench1 = productDocument1.GetWorkbench("KinematicsWorkbench") 'Sequenz erstellen Set Sequenzen = productDocument1.Product.GetTechnologicalObject("SIMSequences") Set Sequenz1 = Sequenzen.Add 'die Mechanismen aufrufen Set mechanism1 = KinematicsWorkbench1.Mechanisms.Item(1) Set mechanism2 = KinematicsWorkbench1.Mechanisms.Item(4) 'Sequenz befüllen Sequenz1.AddChild mechanism1 Sequenz1.AddChild mechanism2 '####Ab hier weiß ich nicht mehr weiter#### End Sub ---------------------------------------------------------------------- Weiß jemand wie ich die Sequenz vollständig per Makro erstellen kann? LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Aug. 2019 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus Bei mir funktioniert dein Code. Manchmal musst ich aber zuvor erste das CATProduct schließen und wieder neu öffnen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 12. Aug. 2019 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Merkwürdig, bei mir will es nicht funktionieren. Hast du dann eine abspielbare Sequenz? Meine ist einfach leer, obwohl die Mechanismen im Baum aufgeführt werden. Ich habe das Bild mal angehängt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Aug. 2019 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
|
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 12. Aug. 2019 10:41 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Okay, abspielbar ist es bei mir auch. Das eigentliche Ziel mit dem Setzen der oberen Zeitgrenze eines Mechanismus kann so alleridngs nicht erreicht werden. Die Möglichkeiten zur Automatisierung in der Kinematik Umgebung scheinen wohl doch sehr begrenzt zu sein. LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Aug. 2019 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus Geht das setzen der Grenzen denn manuell? AFAIR kann man nur die Dauer strecken/stauchen und nicht einen Zeitintervall bestimmen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 12. Aug. 2019 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
In dem Bild aus dem Beitrag oben sieht man unter dem leeren Aktionsbereich das Eingabefeld 'Action duration (s)'(weil keine action geladen ist bzw dargestellt wird ist das feld gesperrt). Normalerweise kann man dort den Zeitwert eintragen, der vorgibt, wie lange die Bewegung in der Sequenz ausgeführt wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Aug. 2019 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus Ja, man kann dort die Dauer eintragen. Wenn der Mechanismus zB 10s läuft kannst du ihn auf zB auf 5s stauchen. Dann läuft der Mechanismus eben doppelt so schnell. Ist es aber das was du willst? (deine Pause am Ende (die du angesprochen hast) bleibt ja dann bestehen) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 12. Aug. 2019 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Aug. 2019 12:24 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Meine Idee dazu: Mechanismen immer so machen, das diese keine Pause am Ende haben. Falls erforderlich dann in der Sequenz die Dauer der einzelnen Mechanismen anpassen (über die einzelnen Parameter SCT der Sequenz). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 28. Aug. 2019 09:04 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Hallo zusammen, nach längerer Zeit melde ich mich wieder. Ich verfolge aktuell den geschilderten Ansatz von bgrittmann. Jeder Mechanismus hat eine feste Länge von 100s und soll in der Sequenz dann entsprechend über den Parameter SCT gestaucht werden. Ich erstelle die Sequenz wie oben beschrieben. Die importierten Mechanismen sind im rechten Fenster nicht aufgeführt und die Mechanismen laufen nicht wie gewünscht ab (Alle nur 5s und nicht geordnet nacheinander). Das ist mein Problem: Weiß jemand wie ich per Makro auf die "Kinder" einer Sequenz zugreifen kann und deren Parameter bearbeiten kann? Da komme ich nicht weiter. Ich habe es mit der Methode SIMSequence.GetItem(IDName As String) versucht. Allerdings bislang ohne Erfolg, da ich nicht weiß wie der IDName lauten muss. Hat da jemand Erfahrung? Ich komme ja sogar über den Formeleditor an die Parameter, dann müsste es ja irgendwie auch per Makro gehen. LG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Aug. 2019 19:01 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus Du könntest die Methode SubList auf deine Sequenz los lassen. Diese liefert dir dann alle Parameter die unterhalb der Sequenz liegen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 30. Aug. 2019 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Hallo, ich kann leider bis jetzt nicht auf die Parameter der Sequenz zugreifen. Die Methode SubList funktioniert ebenfalls nicht. Über set parameters1 = Sequenz1.Parameters bekomme ich auch keinen Zugriff. Und unter den Parametern des RootProducts sind die Sequenzparameter nicht aufgeführt. Weiß jemand wie ich an die Parameter der Sequenz gelange? Ich bin ratlos. LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 30. Aug. 2019 13:26 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
Servus zB so: Code: Sub CATMain()Dim oProductDoc as ProductDocument Dim oRootProduct as Product Dim oSequences as Object Dim oSequence as Object Dim oProductParameters as Parameters Dim oSequenceParameters as Parameters Dim oParameter as Parameter Set oProductDoc = CATIA.ActiveDocument Set oRootProduct = oProductDoc.Product Set oSequences = oRootProduct.GetTechnologicalObject("SIMSequences") Set oSequence = oSequences.Item(1)
Set oProductParameters = oRootProduct.Parameters Set oSequenceParameters = oProductParameters.Sublist(oSequence,true) for each oParameter in oSequenceParameters MsgBox oParameter.Name next End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lestieve Mitglied Maschinenbauingenieur
Beiträge: 12 Registriert: 07.08.2019 CATIA V5 R24
|
erstellt am: 02. Sep. 2019 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für mycad123
|