EASY Posted August 13, 2015 Posted August 13, 2015 Hallo Neo,ich habe mich etwas mit den "neuen" Kommando 303 beschäftigt. Um die Zusatzparameter "richtig" auslesen zu können (besonders für die Koordinaten der Segmente) müssen die Gleise ja eindeutige Namen haben. Dazu habe ich mir ein kleines Programm geschrieben, das alle Gleise zuerst eindeutig umbenennt, damit ich mich mit dem Auslesen und Verarbeiten der Segmentkoordinaten austoben kann. Wenn ich damit fertig bin, werden den Gleisen wieder die ursprünglichen Namen zugewiesen (um den User nicht zu verwirren). Nach meinen bisherigen Versuchen, macht die Ereignisverwaltung (wenn schon vorhanden) diese Umbenennerei klaglos mit (arbeitet meines Wisens mit IDs und nicht mit Namen)...Trotz dieser positiver Erfahrungen frage ich mal nach, ob diese Betrachtungsweise richtig ist oder Du noch irgendwelche mögliche Probleme erkennen kannst...... oder hast Du noch eine andere Idee für die Auswertung vom Kommando 303 ?P.S. Die Frage nach einem möglichen Zugriff auf die IDs über die Schnittstelle passt gerade zum Thema und sei hiermit gestellt...GrußEASY
EASY Posted August 16, 2015 Author Posted August 16, 2015 Hallo Neo,da mir die Antwort wichtig ist, ob es aus Deiner Sicht Probleme geben könnte, wenn ich massehaft umbenenne, hake ich noch einmal nach.GrußEASY
Neo Posted August 16, 2015 Posted August 16, 2015 Hallo Easy,es ist korrekt, dass die EV mit internen IDs arbeitet und du daher problemlos die Gleise umbenennen kannst. Das gilt aber nur, solange der Nutzer in der EV nicht per Variable auf ein Objekt zugreift, denn dann wird der Name ausgewertet. Probleme bekommst du also nur, wenn zwischen dem Umbenennen die EV abgearbeitet wird. Wenn das nicht relevant ist, dann kannst du problemlos die Objekte umbenennen, solange sie am Ende wieder den Originalnamen haben.Bezüglich IDs per Steuerschnittstelle: Bisher möchte ich es vermeiden, Zugriff auf die IDs nach Außen zu geben, da ich mit der aktuellen Implementierung noch nicht zufrieden bin. Die IDs werden nämlich bei jedem Laden einer Anlage neu verteilt. Eine ID ist daher nur während der Laufzeit einer Anlage verwertbar und kann nicht für einen späteren Zugriff wiederverwendet werden. Langfristig möchte ich das System ändern und konstante IDs nutzen, aber bisher bin ich noch nicht dazu gekommen, das zu implementieren.Viele Grüße,Neo
EASY Posted August 17, 2015 Author Posted August 17, 2015 Hallo Neo,ZitatDas gilt aber nur, solange der Nutzer in der EV nicht per Variable auf ein Objekt zugreift, denn dann wird der Name ausgewertet.... habe ich zugegebenermaßen bei meiner Betrachtung als "eindeutige" Feherquelle übersehen... Da werde ich noch einen Hinweis setzen.Mein "Härteversuch" war die 18-Zug Anlage von BahnLand. und das auch noch bei schon laufendem Betrieb.Für die Zeit des Umbenennens, wird die Animation im MBS angehalten und erst dann wieder freigegeben. Troz, daß die EV irgendwo steht, ist die Anlage problemlos weitergefahren... auch mit geänderten Gleisnamen... dies stimmte mich ziemlich optimistisch, da in der EV sofort die geänderten Gleisnamen eingetragen waren...Ist vielleicht etwas grenzwertig... und so setze ich doch vielleicht besser noch einen Hinweis auf den "ruhenden" Anfangszustand...Was mich noch sehr interessieren würde:Für allgemeine Programme ist es nach meiner Meinung irrelevant ob die IDs dynamisch oder statisch sind. Das Programm kann sowieso auch nur während der Laufzeit eines MBS-Projektes laufen. Mit jedem Programmstart müße man die IDs sowieso neu einlesen, da das Programm ja nicht weiß, was da auf es zukommt.Für über die Schnittstelle wäre es nach meiner Meinung nur dann relevant mit statischen IDs zu arbeiten, wenn das Programm auf ein (einmaliges !) MBS-Projekt (oder ein bestimmter Teilbereich eines MBS-Projektes) zugeschnitten ist.Interessant könnte es werden, wenn die EV "programmierbar" wird (was sie ja werden soll), da diese sowieso projektbezogen ist und man direkt "am Puls" der IDs sitzt...... oder habe ich da noch etwas übersehen?GrußEASY
Neo Posted August 17, 2015 Posted August 17, 2015 Hallo Easy,ich denke auch, dass viele Programme mit dynamischen IDs zurecht kommen würden. Allerdings bleibt dabei das Problem, die IDs zu Beginn der Anlage zu ermitteln, denn das geht auch wieder nur anhand des Namens (wenn man es auf bestimmte Objekte abgesehen hat). Ich denke das Problem lässt sich nicht lösen, solange es externe Anwendungen gibt, die für verschiedene Anlagen gedacht sind.Wenn die Skriptfunktionen kommen, werde ich die IDs überarbeiten, sodass im Skript mit diesen gearbeitet wird und zugleich sichergestellt ist, dass sich die ID für ein Objekt nicht mehr nachträglich ändern kann. Dann werde ich die IDs auch für die Steuerschnittstelle zugänglich machen.Viele Grüße,Neo
quackster Posted August 17, 2015 Posted August 17, 2015 hallo ESAY, Neosorry wenn ich einfach hier schreibe, wollte nur zur info anmerkenZitatDas gilt aber nur, solange der Nutzer in der EV nicht per Variable auf ein Objekt zugreift, denn dann wird der Name ausgewertet.das BahLandMein "Härteversuch" war die 18-Zug Anlage von BahnLand. und das auch noch bei schon laufendem Betrieb.bei dieser anlage komplett auf variablen verzichtet hatvg quackster
EASY Posted August 17, 2015 Author Posted August 17, 2015 Hallo quackster,Zitat...bei dieser anlage komplett auf variablen verzichtet hatnein, bedeutet es nicht.In dieser Anlage gibt es nur keine Variablen, in denen als Wert Gleisnamen stehen, die dann als (indirekten) Bezug für den Namen einer Variablen stehen, die ausgewertet werden soll... siehe wiki 6. Variablen ab "Das 3D-Modellbahn Studio unterstützt das Verschachteln von Objektvariablen..." oder den indirekten Zugriff auf einen Namen mit "$Variable"...Variablen in deren Werte z.B. Zahlen oder die Namen anderer Objekte (außer Gleise) stehen, bleiben davon ja unberührt.GrußEASY
MarkoP Posted August 17, 2015 Posted August 17, 2015 Hallo Easy,darf ich Fragen worin du den Sinn des Umbenennens siehst. Erschließt sich mir augenblicklich nämlich nicht.GrußMarkoP
EASY Posted August 17, 2015 Author Posted August 17, 2015 Hallo MarkoP,... ist für mich haupsächlich für das Arbeiten über die Schnittstelle gedacht. Die Schnittstelle arbeitet ausschließlich mit Namen, so daß jedes Objekt das angesprochen werden soll, einen eigenen (eindeutigen) Namen haben muß, der im Projekt nur einmal vorkommen darf. Wenn ich nun über die Schnittstelle z.B. eine Streckenverfolgung mache, muß jedes Gleis einen eigenen Namen haben, da jedes Gleis angesprochen wird... und das kann von Hand ganz schön aufwendig werden...Auch gehen in der EV indirekte Variablenbezüge (Name einer Variablen, die ausgewertet werden soll, steckt in einer anderen Variablen) nur nur mit eindeutigen Namen... so daß es auch hier ziemlich aufwendig werden kann, alles von Hand umzubenennen.GrußEASY
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now