-
Gesamte Inhalte
670 -
Benutzer seit
-
Letzter Besuch
Alle erstellten Inhalte von gmd
-
Hallo, unser sommer geht langsam zu ende und die grosse hitze in Perth ist langsam vorbei. Wir sind immer noch in unserem sommerdomizil, fahren aber naechste woche wieder nach hause. Ich dachte ich schreibe mal wieder einen update, ueber das was ich in der letzten zeit mit dem MBS gemacht habe. Ich habe ein pause von der codierung fuer meine gleissteuerung eingelegt, um die verhaeltnisse mit strassenfahrzeugen besser kennenzulernen und moegliche parallelen zu erkennen. Ich habe mir drei scenarien ueberlegt, eine RoLa, eine grosse spedition und einen grossen bahnhofsparkplatz, die ich automatisieren moechte mit weitestgehend wiederverwendbaren scripten. Das bauen von umfangreichen, virtuellen strecken mit vielen verzweigung kann muehsam sein, aber nach einer weile bekommt man uebung. Ich habe viele einzelne funktionen implementiert und stueck fuer stueck gelernt, wie ich abstrahierte funktionen mit Lua implementieren kann. Die verallgemeinerung ist aber noch nicht vollstaendig abgeschlossen, jetz folgt eine "Ordnungsphase" die einzelnen funktionen in leicht wiederverwendbare einheiten zu verpacken. Dazu habe ich angefangen eine dokumentation zu schreiben mit der RoLa als beispiel, die den entwurfsprozess mehr top down formalisiert und nun eine klare richtlinie wird, wie ich die scripte gruppiere und parametrisiere um die moeglichst beste wiederverwendbarkeit zu erreichen. Anbei ist das dokument, welches erweitert wird und schliessendlich die gesamte beschreibung der verwendung der scripte enthaelt. Das dokument ist in English aber es gibt ja uebersetzer. Ich schreibe lieber in English. Ich bin nicht versiert in deutscher IT sprache. Gruss Gmd Lua_Rola_Dokumentation.pdf
-
Hallo, Ich verwende keine kommentare um code zu deaktivieren, auch wenn ich damit microsekunden verschenke. Ich vermisse mehr #region #endregion um code segmente zu kollabieren, da meine skripte sehr umfangreich sind Fuer debug und test verwende ich $("Ereignisse").variables["Debug"] = true $("Ereignisse").variables["ErrorPrint"] = true function IsPrintError () if $("Ereignisse").variables["ErrorPrint"] == true then return true else return false end end function IsDebug () if $("Ereignisse").variables["Debug"] == true then return true else return false end end -- use the debug variable instead of print in the main script (print not implemented yet in MBS) function debugMessage(msg) if IsDebug then $("Ereignisse").variables["DebugOutput"] = msg -- Store only the last message will be displayed in the Eventlist end end Man kann das auch noch differenzieren fuer teile von skitpten mit anderen oder mehrfach bedingungen. Das finde ich wesentlich flexibler. Am editor nerven mich andere dinge: zum beispiel dass der curser mit down nicht and das jeweilige ende der zeile springt, double click drag markiert nicht wortweise sondern nur das erste wort, usw. Verglichen mit einem richtigen editor ist der studio editor ein absolutes spielzeug. Viele teile meine scriptes schreibe ich in Visual Studio Code mit Lua by sumneko. Ich verwende den editor nicht um kleinkram zu testen (zuviel copy und paste), ich konsolidiere meine scripte hier. Da ich nur wenige event module verwende (meist nur globale scripte) is das copy und paste akzeptabel. Trotzdem waere es schoen einen externen editor anschliessen zu koennen wie bei EEP, eines der wenigen features in EEP die ich ok finde. VS Code ist frei, so ist die Lua extension und kann Windows: Shift + Alt + A Gruss Gmd Edit: Posted in the wrong thread
-
.... und damit man ein performance problem umgeht. Im bild unten geht das anlegen einer langen fahrstrasse in den minutenbereich. Nicht in allen situationen sind fahrstrassen eine erleichterung. Man kann sie auch fuer strassenfahrzeuge anlegen, aber zumindest fuer meine anwendungen ist das einfach nicht sinnvoll. Sobald eine anlage mehr "Bewegung" hat kommt man schnell an verwaltbare grenzen. Hier ein beispiel and dem ich derzeit meine scriptkomponenten (erstellt fuer die RoLa und Spedition) teste und varianten einbaue. Fuer diese situation, fahrstrassen vor dem betrieb einzurichten ist nicht das was man machen will. Die zieldefinition ist hier voellig ausreichend bis auf die performance. Ich hangele mich von kontakt zu kontakt und das macht die kalkulation tragbar, allerdings haengt das auch stark davon ab wieviele fahrzeuge in solchen situationen unterwegs sind. Hier im beispiel parkplatz ist das ziel typisch zwischen 5 und 10 fahrzeuge gleichzeitig ein- und ausfahren zu lassen, mit ein- und ausparken. Das ziel zumindest meiner scripte ist es, so viel wie moeglich bewegung und abwechslung auf einer anlage zu schaffen, die dann ueber entsprechende kamerafuehrung projektiert wird. Es macht also durchaus sinn eine zieldefinition "aufzuheben", was ja einer "einfachen" fahrstrasse entspricht (ohne weichen). Abgespeicherte zieldefinitionen abzurufen macht das alles sehr viel effizienter. Wenn eine zieldefinition ungueltig wird dann bleibt das fahrzeug halt stehen. Ich wuerde bei anlagen start eine initialisierung durchfuehren, die wichtige, lange zieldefinitionen einrichtet. Wuensche wie, "Bessere Ubersicht fuer Fahrstrassen" etc. zeigen die grenzen der manuellen verwaltbarkeit. Ich weiss, ich bin mal wieder ein "Einzelfall" aber auch andere werden mehr und mehr ueber automatisierung und "script bibliotheken" nachdenken. Und noch ein weiterer gedanke: Ich habe auch kein problem 100 Euro im jahr fuer eine "Expert" version zu zahlen, die dann vielleicht nur auf einem etwas anspruchsvolleren rechner laeuft. Die hardware wird immer schneller und billiger. Gruss Gmd
-
Ich antworte mal ohne dein beispiel anzuschauen. Ich wuerde keinen timer verwenden, der loest event aus auch wenn nichts zu tun ist und loest nicht gleich aus wenn was tun ist, jenachdem wie oft er eingestellt ist. In meinen augen die bessere loesung ist, entweder einfahr- und ausfahrgleisen, oder kontakten das gleiche schlagwort zuweisen und einen event verwenden, der bei diesem schlagwort entweder fuer gleis oder kontakt ausloest. Damit weisst du ganz genau dass es lohnt etwas zu tun, und wenn du jetzt noch das gleis oder kontakt benennst und abfragst weist du auch welches gleis betroffen ist. Mit diesem konzept vermeide ich timer generell. gruss Gmd
-
Hallo, Ueber die schnittstelle habe ich ja editor.createEntity, was in lua nicht existiert. Ich habe mehrfach die anwendung fahrzeuge aus einem depot zu holen, habe aber nicht die geringste lust fuer alle diese situationen die fahrzeuge manuell zu plazieren und in ein oder viele depots zu schicken. Wuerde gerne in Lua fahrzeuge aus dem katalog direct ins depot schicken. Das depot kann ja einen fahrzeugverbund verwalten, das wuerde ich nicht mit einbeziehen. Einzelne fahrzeuge mit antrieb sind ausreichend und ist einfach zu realisieren., inclusive setzen der ausfahrgeschwindigkeit. Ich kann das mit meinem programm erledigen, aber die Lua scripte die ich stueck fuer stueck erstelle und auch plane zu veroeffentlichen, wuerden von einer automatischen fahrzeugbereitstellung profitieren. Verbund konfiguration koennte ueber "Meine modelle" abgewickelt werden, aber das nur um es zu erwaehnen. Gruss Gmd
-
siehe oben -- empty, check for keyword if v == keyword gruss Gmd
-
for k, v in pairs(contact.variables) do print("VAR: " .. tostring(k) .. " = " .. tostring(v)) if v == keyword then print("VAR is keyword") end end Zum beispiel, empty v test fuer keyword. Ich nutze das jetzt um keywords der beteiligten objekte abzufragen. Gruss Gmd
-
Ha, und ich koennte schwoeren dass ich das probiert habe .. Ist aber logisch, danke fuers finden. Gruss Gmd
-
Wen es interessiert - hier eine loesung die ich fuer mich ausgetueftelt habe .. Ich verwende schlagworte fuer eine serie von objekten, kennzeichne aber einige mit zusaetzlichen merkmalen wie "_Start" oder "_Ende" usw. also zum Beispiel XYZ und XYZ_Start wenn nun XYZ ausloest (weil ich alle XYZ haben will) aber fuer _Start etwas anderes tun will dann benutze ich function GetStartKeywordPrefix(contact) for k, v in pairs(contact.variables) do local prefix = string.match(k, "^(.-)_Start$") if prefix then return prefix end end return nil -- Not found end und bekomme das ausloesende schlagwort und gleichzeitig die information _Start. (_Start is bei mir immer nur einmal vorhanden) Man kann natuerlich auch alle moeglichen anderen variationen verwenden und es muss auch nicht das ausloesende schlagwort sein. Damit lassen sich auch kaskaden von filtern bauen. Auf diese art und weise muss ich nirgendwo das schlagwort explizit angeben. Ich kann dann einen event "Alle Kontakte" oder was auch immer verwenden und trotzdem auf das schlagwort abfragen ohne durch meine gesamte liste durchgehen zu muessen. Gruss Gmd Nachtrag: Ich habe diese funktion auch fuer variable suffixes, die auch Lua special characters enthalten koennen. function GetKeywordPrefixBySuffix(contact, suffix) -- Escape the suffix if needed for pattern matching local escapedSuffix = suffix:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") local pattern = "^(.-)" .. escapedSuffix .. "$" for k, _ in pairs(contact.variables) do local prefix = string.match(k, pattern) if prefix then return prefix end end return nil end
-
Ja werde ich tun, ist aber nicht so einfach ohne das entsprechende beispiel fertig zu haben. Hier eine beschreibung der zielsetzung. Stell dir folgende anwendungen vor: Ein Taxiplatz an dem fahrzeuge ein und ausfahren an halteplaetzen Busse halten in reihe an einer umsteigestation Die Einfahrt fuer LKW in meine RoLa Das Auffahren von Fahrrzeugen auf die wagen .. Eine warteschlange von personen vor einem point of interest und was einem noch so alles einfaellt mit einer "segmentierten Einfahrt" mit oder ohne ampelsteuerung. Das alles wird mit dem gleichen script reaslisiert und definitionstablellen mit minimalen (keinen) eintraegen von "Expliziten" werten. Geht alles dynamisch und kann auf verschiedene events verteilt werden oder auch nicht. Grund: Man muss nicht immer wieder ueber die gleiche logik nachdenken oder die gleichen fehler beseitigen und testen. Es ist wie eine library die man einfach verwendet. Die programmierung erfolgt auf der "Meta" ebene und nicht auf der logischen ebene der evenets, dort laeuft das programm nur ab. Alles ist in parametrisierte funktionen gepackt. Man kann die definitionstabellen von hand erstellen und in Lua bleiben, mein ziel ist es auch diese tabllen von meinem programm zu generieren. Wenn ich meine RoLa fertig habe mit den verallgemeinerten scripten dann werde ich dir den entwurf zur durchsicht geben. Dann wird das klarer und bedarf nicht so vieler worte. Gruss Gmd
-
Easy koennte fuer dich auch interessant sein. for k, v in pairs(contact.variables) do print("VAR: " .. tostring(k) .. " = " .. tostring(v)) end probier es aus .. das ist ein teil der miete Warum bin ich eigentlich nicht frueher darauf gekommen !! gruss Gmd Edit: noch ein tip hier weise ich ein keyword zu entryObject.variables[keywordText.."_Start"] = keyword hier frage ich ab contact.variables[keywordText.."_Start"] == keyword das funktioniert auch so weit .. aber wenn ich versuche diese abfrage in eine funktion zu legen wie hier function IsStartKontakt(keyword, kontakt) if kontakt.variables[keyword .. "_Start"] == keyword then return true else return false end end dann ist das immer false Diese funktion bringt true zurueck .. function IsStartKontakt(keyword, kontakt) if kontakt.variables[keyword .. "_Start"] then return true else return false end end Eine weitere coding falle
-
Ja das tue ich .. pflege eine liste aller schlagworte und gehe einfach alle durch zum entfernen und auch zum testen ob vorhanden. Man muss ziemlich viel umwege gehen um eine library von generischen funktionen aufzubauen. So scheint hier niemand zu denken. Gruss Gmd
-
sooo wrong . Gruss Gmd
-
Ja, aber in einem generischen script verwendest du keine "expliziten" werte. Gruss Gmd Edit: fuer contact und vehicle brauche ich auch keine expliziten referenzen und kann voellig allgemeine funktionen bauen, die unabhaengig vom kontaktname sind und muss nicht jedesmal wenn ich den aufruf verwende die parameter explizit einfuellen. Ich kann die verteilung auf ereignisse veraendern ohne jedesmal den code anfassen zu muessen. Ein weiteres problem ist, dass man nicht die schlagworte zu einem objekt bekommt ohne die namen zu kennen. Zumindest kenne ich keinen weg. Lua ist nicht sehr geeignet um auf der Meta ebene zu programmieren. Da muss man einige umwege gehen.
-
Hallo, Ereignis: Ein Gleiskontakt mit Schlagwort "XYZ" wird ausgeloest Ich habe contact und vehicle als variablen im script. Kann ich das schlagwort abfragen, welches ausgeloest hat ? Gruss Gmd
-
Diesen gedanken werde ich verwenden.. Immer wenn ich ein objekt keyword setze, werde ich das keyword "marked" setzen. Dann bekomme ich alle objekte mit keywords und vermeide alle objekte abzurufen. Das erscheint mir am besten, mit den gegebenen moeglichkeiten. Gruss Gmd
-
Danke an euch beide. Ich dachte mir so etwas. Ich habe eine funktion mit der ich alle aktuell verwendeten modul keywords loesche bevor ich ein neues setze. Ich vergebe keywords grundsaetzlich durch code in einer initphase und dann auch waehrend des betriebs. Die meisten keywords habe ich in einer tabelle, aber beim erstellen einse scriptes kommt es vor dass man keywords aendert und dann bleiben die alten "haengen". Die muss ich dann halt alle manuell pflegen. Insbesondere fuer objektvariablen. Da werde ich dann eure vorschlaege nutzen. Tabellen habe ich derzeit fuer "statische" Modulvariablen. Ich poste mein beispiel hier fuer andere als beispiel. Dann hatte der thread wenigstens einen sinn mit euren beitraegen. Zunaechst ein Beispiel einer definitionstabelle. Der erste eintrag is das keyword, danach folgen listen von kontakten. RouteIdentifikation = { { "RolaZufahrt", { ["RolaEntryRoute"] = 1 } }, { "RolaExit", { ["RolaExitRoute"] = 2 } }, { "RolaEinfahrt", { ["RolaEinfahrRouten"] = 3 } }, { "RolaAusfahrt", { ["RolaAusfahrRouten"] = 4 } }, { "RolaLoading", { ["RolaLadeRouten"] = 5 } }, { "RolaUnLoading", { ["RolaAlternativAusfahrt"] = 6 } }, { "RolaAltExit", { ["RolaAlternativAusfahrt"] = 7 } }, { "RolaWagenLaden", { ["RolaWagengruppe1Lkw"] = 8, ["RolaWagengruppe2Lkw"] = 9 } }, { "RolaWagenEntLaden", { ["RolaWagengruppe3Lkw"] = 10 } } } Hier die funktion, die bei der initialisierung den kontakten ein statisches keyword zuweist. Wird ueberall fuer alle module verwendet. function InitialiseAllKeywords(Modul, RouteIdentifikation, clearExisting) for i, entry in ipairs(RouteIdentifikation) do local keywordText = entry[1] -- Extract keyword (e.g., "RolaZufahrt") local routeGroups = entry[2] -- Extract table of route lists for groupName, _ in pairs(routeGroups) do local KontaktListe = _G[groupName] -- Dynamically fetch global table by name if isListOfLists(KontaktListe) then for _, sublist in ipairs(KontaktListe) do ProcessKontaktListe(sublist, keywordText, clearExisting) end else ProcessKontaktListe(KontaktListe, keywordText, clearExisting) end end end end Hier die funktion die einzelne listen verarbeitet function ProcessKontaktListe(KontaktListe, keywordText, clearExisting) local lastIndex = #KontaktListe for i, entryName in ipairs(KontaktListe) do local entryObject = layout:getEntityByName(entryName) if entryObject ~= nil then if clearExisting then ClearKeywords(entryObject, RouteIdentifikation) -- Clear previous keywords before assigning end entryObject.variables[keywordText] = keyword -- Extra keyword for the first and last entry if i == 1 then entryObject.variables[keywordText.."_Start"] = keyword elseif i == lastIndex then entryObject.variables[keywordText .. "_End"] = keyword end end end end und hier die funktion, die alle keywords loescht bevor eines gesetzt wird, manuell ergaenzt, damit keine leichen entstehen. Wird aufgerufen wenn clearExisting == true ist. function ClearKeywords(entryObject, RouteIdentifikation) -- Loop through all possible keywords in RouteIdentifikation and clear them for _, eventData in pairs(RouteIdentifikation) do local oldKeyword = eventData[1] -- Extract stored keyword entryObject.variables[oldKeyword] = nil -- Clear the keyword if it exists entryObject.variables[oldKeyword.."_Start"] = nil entryObject.variables[oldKeyword.."_End"] = nil end entryObject.variables["Rola"] = nil entryObject.variables["Start"] = nil end Ich dachte halt dass ich das einfacher haben kann, insbesondere fuer objektvariablen, die ich noch nicht erschlagen habe. Nochmals vielen dank fuer eure muehe. Manchmal kann einem Lua schon auf den nerv gehen, wenn man eine "richtige" Entwicklungsumgebung gewohnt ist. Gruss Gmd
-
Hallo, Wie kann ich auf einfache weise ALLE objekt schlagworte/variablen loeschen $("").variables[""] = nil $("").variables[""] = keyword oder aehnlich ?? gruss Gmd
-
Hallo, ich denke ich kann das selbst beantworten, aber ich frage trotzdem, da ich ja so oft dinge uebersehe. Ich moechte per Lua einen neuen ereigniseintrag innerhalb eines moduls anlegen, also z.B. Gleiskontakt mit schlagwort xy wird ausgeloest. Ich kann ja variablen beliebig anlegen. Ich moechte ereignisse verteilen auf mehrere entry points, moechte die aber nicht manuell einrichten muessen. Fuer generische scripts ist das kontraproduktiv. Ich nehme mal an das geht nicht, aber wie gesagt ich frage trotzdem mal. Das waere was fuer den Wunschzettel. Gruss Gmd
-
100% .. kein argument dagegen.. Ich habe nichts gegen einen snapshot der gesamten anlage. In meinem beispiel hatte ich schienenverkehr angesprochen und da gilt fuer mich das gleiche. In einer "Einfahrtsituation mit Auftrag", wird ALLES auf einen definierten zustand gesetzt, IMMER. Ich versuche auch soweit wie moeglich variablen zu vermeiden, die nicht automatisch zurueckgesetzt werden koennen, aber das geht nicht immer. Depots koennen hier eine besondere rolle spielen, das ist wohl ein gutes gegenbeispiel. OK, versteht mich nicht falsch, ich diskutiere hier nicht um recht zu behalten, weit entfernt davon, aber es ist manchmal einfach gut ideen austauschen. Viele demos haben das problem dass man sie nicht unterbrechen kann, sie muessen zu ende laufen etc. Man kann nur die anlage neu starten und wehen man hat sie gespeichert. Es ware halt schon zu einer demoanlage immer einen "Ursprungszustand" zu haben, der immer erhalten bleibt bis er neu gesetzt wird. Und da gebe ich Neo absolut recht, das macht nur sinn mit allen zustaenden. Aber auch das waere fuer meine zwecke phantastisch und wuerde viel zeit sparen. Just an idea. Gruss Gmd
-
Irgendetwas verstehe ich hier nicht, oder sehe ich nicht. Auch weichen und signale spielen nicht wirklich eine rolle wenn scripte robust programmiert sind. Lediglich einige variablen koennten da relevant werden, wenn ein test abgebrochen wird oder wegen fehlern nicht zu ende laeuft. Beispiel Variable: Wenn ich zustaende in variablen in fahrzeugen speichere, dann so dass am ende eines zyklus (block etc. ) immer ein zustand verbleibt, der bei einem erneuten ausloesen eines kontaktes zurueckgesetzt wird, da er nur an einem "zielkontakt" existieren kann. Beispiel Signale und Weichen: Am beginn eines scenarios (folge von fahrstrassen etc.) ist es in meinen scripten egal wie weichen und signale, oder auch animationen gesetzt sind. I sorge immer dafuer, dass alle benoetigten elemente aktiv geschaltet werden. Bei mir betritt ein fahrzeug ein gebiet mit einem "auftrag" und einem "ziel". Der auftrag haengt an einem keyword und nicht an einem bestimmten fahrzeug. Der auftrag legt fest ob zum beispiel ein bahnhofshalt erfolgt oder nicht. Wenn ein solches fahrzeug einen "eingangskontakt" ausloest, und die freigabe bekommt, (wo auch immer), dann werden alle element bis zum ausgang "reserviert" einschliesslich zustand, und aktiviert je nach bedingungen am jeweiligen abschnitt. Am ende des letzten abschnitts wird der auftrag geleoscht. Ich kann ein fahrzeug mit auftrag and den eingangspunkt zuruecksetzen ohne dass signale oder weichen gestetzt werden muessen, das geschieht automatisch. Natuerlich werde ich beim testen auftrage nicht immer loeschen vor dem zuruecksetzen. Fuer mich ist das kein "Spezialfall", aber es ist wohl die art wie ich programmiere, dass das so ist. Wenn ich auch noch weichen und signale zuruecksetzen muesste um ein scenario immer wieder zu testen, wuerde ich verrueckt werden, bzw. dann mache ich was gruendlich falsch und meine steuerung ist nicht sehr robust. Gruss Gmd
-
Goetz, es kommt wirklich darauf an was zu testen ist. Ich halte versionen der gleichen Anlage fuer das testen von unterschiedlichen teilen und fuehre dann die scripte zusammen. Das problem ist wenn man einen teilaspekt tested, z.b. das einfahren von 12 lkw mit anhaenger ueber verschiedene spuren mit einer reihe von konfliktloesungen. Der test is relativ kurz, aber das ruecksetzen von 12 lkw mit anhaenger ist es nicht. Das laden der anlage dauert noch viel laenger also ist das speichern eines anfangszustandes hier auch nicht hilfreich. Ich habe mir in meinem programm eine loesung gebastelt, allerdings dachte ich dass auch andere in aehnlichen situation ein solches feature moegen wuerden. Ich habe mich ja auch vorsichtig ausgedrueckt und das nicht wirklich als featurewunsch definiert, bin aber einfach mal neugierig was andere dazu zu sagen haben oder ob nur ich dieses problem habe oder sehe. Gruss Gmd
-
Da muss ich dir widersprechen.. ich komme ohne aenderungen von variablen etc aus, weil meine scripte so eingerichtet sind. Es ist richtig dass zustaende fuer die meisten eine groessere rolle spielen, aber das ist oft mit einem einfachen loeschen aller temporarer variablen geregelt. Es kommt halt darauf an, was und wie man programmiert. Ich bin mir bewusst, dass nicht jeder ein solches feature zu schaetzen weiss, aber lassen wir doch mal andere hier ein pro oder contra ausdruecken. Vielleicht sehen wir beide vielleicht noch nicht alle aspekte. Gruss Gmd
-
Hallo an alle, es ist nicht wirklich ein feature wunsch (yet), und ich behaupte auch nicht dass das vollstaendig durchdacht ist, ich schreibe einfach mal eine beobachtung auf und was ich in der situation getan habe und.. was vielleicht wuenschenswert waere. Beim testen fuer meine scripte RoLa und Spedition kam es oefter vor, dass ich einige fahrzeuge immer wieder in eine ausgangsposition setzen muss, um einen test durchzufuehren. Es sind nicht nur ein oder zwei sondern in einigen faellen 10+ und das nicht nur einmal. Ich kann nun ein script schreiben mit dem ich alle beteiligten fahrzeuge oder beteiligten modelle auf eine anfangsposition zuruecksetze, ich habe mich dazu entschieden meinem programm beizubringen fuer eine selektion (alles eindeutige namen) einen stand (positionen) abzuspeichern und immer wieder abzurufen. Das spart enorm zeit. Hat aber immer noch das problem, dass alle objekt eindeutige namen haben muessen. Ich dachte nun, wenn man im MBS eine ebene nimmt und alle diese beweglichen test modelle zuordnet, und dann einen snapshot machen kann, und am ende des tests den ursprungszustand wieder abrufen kann, dann waere das ein riesen fortschritt fuer aufwendige tests. Es kann dann auch zum ruecksetzen einer demo verwendet werden usw. Ich rede hier nicht von versionen von anlagen, oder aehnlichem, man kann das ja beliebig kompliziert machen. Eine einfache moeglichkeit auf einen status zurueckzusetzen, der ueber das einfache CTRL Z hinausgeht. Neo kann da besser entscheiden was einfach machbar ist, aber fuer wiederholtes testen aller moeglichen art von bewegung ist das ungeheuer hilfreich. Gruss Gmd
-
Fragen zu Auswertung Ereignisse über JSON Schnittstelle
gmd antwortete auf EASYs Thema in Erweiterungen (Plugins)
Danke, das war die info auf die ich auch gewartet habe. Gruss Gmd