Autor
|
Thema: Methoden per Methode in Netzwerk setzen (2467 mal gelesen)
|
alex-cad Mitglied Student
Beiträge: 14 Registriert: 25.03.2010 Windows XP CAD: Autodesk Inventor 2011 Professional Plant Simulation 9.0
|
erstellt am: 12. Jul. 2012 23:07 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe PS-Experten, ich befürchte ja schon das es nicht geht, aber ich wollte euch trotzdem nochmal um Rat fragen. Ich möchte ganz gerne mit einer Methode verschiedene Methoden (und auch Tabellen und Variablen) in ein Netzwerk einsetzen lassen. Ist sowas irgendwie möglich? Mit Tabellen habe ich es probiert und es funktioniert. Aber bei Methoden klappt es nicht. Habt Ihr eine Idee? Gruß
Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 13. Jul. 2012 08:06 <-- editieren / zitieren --> Unities abgeben: Nur für alex-cad
Methoden können Sie auch dynamisch erzeugen. Sie müssen allerdings mit ref() eine Referenz auf die Methode erzeugen, um einen Aufruf zu vermeiden: Code:
is met: object; do met:=ref(.Informationsfluss.Methode).erzeugeObjekt(root,50,50); met.programm:="Ihr Programm"; end;
[Diese Nachricht wurde von Bon Simul am 13. Jul. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ucbxi Mitglied
Beiträge: 6 Registriert: 16.01.2013
|
erstellt am: 08. Feb. 2013 18:17 <-- editieren / zitieren --> Unities abgeben: Nur für alex-cad
Hi, ich habe gerade ein ähnliches Problem und habe den Rat befolgt und die Methode dynamisch in mein Netzwerk eingefügt, allerdings habe ich jetzt folgendes Problem: Meine Unter-Methode besitzt Anweisungen für BEs die am Eingang eines Weges übergeben werden sollen, unter anderem @.Geschwindigkeit:=0; . Wenn ich nun meine Hauptmethode starte und die Unter-Methode einbaue wird diese automatisch durchlaufen und bricht natürlich ab, weil ein VOID keine @.Geschwindigkeit empfangen kann, was ja logisch ist da kein Fahrzeug auf dem Weg ist. Allerdings bricht nun auch meine komplette Hauptmethode mittendrin ab. Kann ich das irgendwie umgehen, das die im Netzwerk erzeugte Unter-Methode direkt gestartet wird? Sie soll ja nur aktiv werden, wenn später ein Fahrzeug drüber fährt.. Anzumerken ist noch, dass ich zuerst einen Bautstein Weg erzeugt hatte in dem die Untermethode schon in Steuerung/Eingang eingebaut war als ".Informationsfluss.Unter-Methode". Wenn nun aber das Fahrzeug an den Wegabschnitt kam, sagte mir das Programm, dass .Informationsfluss.Unter-Methode nicht bekannt sei obwohl es neben im Strukturbaum angezeigt wird. Kann da jemand helfen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 10. Feb. 2013 21:55 <-- editieren / zitieren --> Unities abgeben: Nur für alex-cad
Wie sieht denn Ihre Methode zur Erzeugung der "Untermethode" aus? Sie können auch die Methode als Methoden-Attribut im Weg in der Klassenbibliothek anlegen. Beim Erzeugen der Wege sind dann die Methoden bereits vorhanden und Sie müssen nur noch die Programmierung (Inhalt der Methode) übertragen. Ansonsten verhindern Sie mit ref(methode) den direkten Aufruf.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ucbxi Mitglied
Beiträge: 6 Registriert: 16.01.2013
|
erstellt am: 11. Feb. 2013 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für alex-cad
Also ich habe es hinbekommen aber warum weiß ich nicht genau.. In meiner Hauptmethode steht folgendes (wurde auch nicht verändert): is ... met : object; ... do ... met := ref(.Informationsfluss.Untermethode).erzeugeObjekt(.NeuerOrdner.Netzwerk.Unternetzwerk,250,1); ... end; Die Methode wurde dann nicht mehr durchlaufen, warum auch immer, allerdings bekam ich dann die Fehlermeldung "Die Eingangssteuerung(.NeuerOrdner.Netzwerk.Unternetzwerk.Zielst) des Objekts ".NeuerOrdner.Netzwerk.Unternetzwerk.Weg" existiert nicht. Soll die Simulation angehalten werden?"
Daraufhin habe ich die Zielsteuerung nicht mehr mit kompletten Pfad eintragen lassen (.NeuerOrdner.Netzwerk.Unternetzwerk.Zielst) sondern nur noch "Zielst" (welche vorher mit der ref Methode eingesetzt wurde) und dann funktionierte alles. Ich hoffe das hilft jemandem der das Gleiche Problem hatte! MFG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |