Random-Objetauswahl aus einem definiertem Ordner

  • Hallo,


    man könnte mir für diesen Vorschlag jetzt mangelnde Kreativität vorwerfen. Ich glaube das trifft es auch ziemlich, neben der relativen Zeitersparnis des folgenden Vorschlages:


    Ich kam neulich auf den Gedanken, dass es ganz praktisch wäre, wenn man große Mengen an den gleichen, aber nicht den selben Objekten "automatisch" erstellen lassen könnte. Ich stelle mir das anhand der Erstellung einer Häuserreihe so vor: Man definiert zuerst einmal alle dafür passenden Objekte in einen Ordner. Anschließend geht man in die Funktion des loksim-editors und legt diesen Ordner als Quellordner fest. Dann gibt man die Position der Häuserreihe an der Strecke an. Anschließend kann man die Werte für die Anzahl, den Abstand, eventuell die Zufallsrate etc. festlegen. Jetzt setzt der Editor mithilfe einer Random-Variable oder ähnlichem zufällig die Objekte aus dem zuvor definiertem Quellordner an die definierten Punkte.


    Ist das im loksim realisierbar? Oder habe ich eine Funktion übersehen, die mir das bereits jetzt ermöglicht?


    Beste Grüße aus Berlin.

  • Hallo Sven,


    es gibt etwas ähnliches, nämlich gruppierte Gruppenobjekte. Du kannst alle Häuser aus einem Ordner in ein Gruppenobjekt packen, in dem Du sie zufällig anordnest. Zufallszahlen können diverse Programme generieren. Du kannst Dir ein Tool schreiben, dass die Zeilen ausspuckt, die Du haben willst.
    Dazu musst Du ein programm schreiben, dass Dir eine Datei HaeuserZufall.l3dgrp ausspuckt und in den Ordner speichert, wo Du sie haben willst. Mit den in der Programmiersprache üblichen Befehlen sagst Du dem Programm, was es in die Datei schreiben soll. Anfangen tut eine Datei .l3dgrp beispielsweise mit:
    <?xml version="1.0" encoding="UTF-8"?>
    <GRUPPENOBJECT>
      <Props FileAuthor="MBT" FileDoku="" FileInfo="Laenge 19.280mm" FilePicture=""/>
    Danach hat jedes verlinkte Objekt 3 Zeilen. In der Dichtkunst nennt man es Terzinen (Dante schrieb die Commedia ausschließlich in Terzinen)



    <Object>
      <Props BlinkIntervall="0" Name="DB\BE1.l3dobj" Position="0;0.37;0" Rotation="0;0;0" WeitSichtbar="FALSE" ZoomFaktor="1"/>
      </Object>
    Dabei steht DB\ für den beinhaltenden Unterordner, Position und Rotation sind wie üblich. Statt des Namens BE1.l3dobj musst Du die Häuser durchnummerieren, also 1.l3dobj, 2.l3dobj oder eben Haus1.l3dgrp usw.. Du läßt das Programm also das schreiben, was Du haben möchtest. Randomzahlen kannst Du mit einer Zahl multiplizieren, da Zufallszahlen immer aus dem Intervall [0;1] sind. Natürlich musst Du die Zufallszahl nach der Multiplikation in einen Integer umwandeln. Als Faktor solltest Du die Zahl der Objekte in Deinem Ordner wählen. Danach läßt Du das Programm einfach weiter seinen Text herunter spulen. Es endet dann mit:
    </GRUPPENOBJECT>


    Mehr sagen kann ich Dir nicht, weil Datenverarbeitung (Programmiersprache C) schon zwei Jahre her ist und ich nur eine 3,3 hatte.


    Gruß aus Horst (Holstein)
    Moritz

  • Das müsste sogar mit VisualBasic in Excel oder als OOo-Makro gehen vermute ich.

    Triebfahrzeugführer im Streckendienst der DB Fernverkehr in Frankfurt/Main
    BR: 101, 120, 147.5, IC-Steuerwagen, IC2-Steuerwagen, 401 ("ICE 1"), 402 ("ICE 2"), 403 ("ICE 3"), 406 ("ICE 3M"/"ICE 3MF"), 407 ("neuer ICE 3"), 411 ("ICE T"), 415 ("ICE T")

  • Hallo,
    wie schon geschrieben lässt sich sowas über ein externes Programm oder Skript realisieren, wenn es für Dich soviel Zeitersparnis bedeutet.
    Ich kann mir aber eigentlich nicht vorstellen, dass so eine Funktion auch für die Allgemeinheit von diesem großen Nutzen ist. Viele Streckenbauer schätze ich als so große Perfektionisten ein, dass sie die Objektauswahl nicht dem Zufall überlassen wollen ;-)
    Wenn dann müsste man eine solche Funktion vermutlich auch sehr stark anpassbar machen, was doch einen recht großen Programmieraufwand nach sich ziehen würde


    Wenn aber hier viele andere aktive Streckenbauer diese Funktion für sehr hilfreich einschätzen, könnte man nochmals darüber nachdenken ob es den Zeitaufwand auf unserer Seite rechtfertigt


    lg
    Lukas

  • Ich habe bei meiner Strecke auch an mehreren Stellen die Aufgabe, eine Reihe von Objekten anzuzeigen, die aus einer zufälligen Auswahl vorgegebener Objekte stammen sollen. z.B. einen Parkplatz mit zufälligen Autos, oder einer Häuserzeile mit zufälligen Häusern.


    Am schönsten wäre es, nur ein Gruppenobjekt "Zufallseinfamilienhaus" zu haben, was das erledigt. Das klappt mit der Variablen Sonstige::ZufallGruppenObjekt auch wunderbar, sofern die verwendeten Objekte alle einfache Objekte sind. Dann kann man z.B. 2 Objekte verwenden und die Scihtbarkeit wie folgt setzen:

    • Objekt 1: Sonstige::ZufallGruppenObjekt%100<=50
    • Objekt 2: Sonstige::ZufallGruppenObjekt%100>50

    Somit müsste immer genau eines der beiden Objekte sichtbar sein, und zwar etwa mit einer 50:50 Wahrscheinlichkeit. Real würde die Gruppe natürlich mehr Objekte umfassen.
    Sobald aber ein Gruppenobjekt dabei ist, passiert etwas Eigenartiges: Falls dieses Objekt durch den Zufall ausgewählt wird, wird es nur manchmal angezeigt, was dazu führt, dass in der Reihe der Zufallsobjekte häufig Lücken entstehen, wo gar nichts angezeigt wird.


    Ist das ein Bug? :( Ich verwende Version 2.9.1. Wäre super, wenn das gehen würde! :)