Seite 1 von 3

Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Dateien

Verfasst: 23.10.2013 22:11:09
von Johannes
Der Windows-Explorer kennt leider nur „einfache“ Dateiendungen – die Dateien Datei.lod.ls3, Datei.lod1.ls3 und Datei2.ls3 haben für ihn alle die Endung .ls3.

Das macht die Dateiliste im Explorer oder „Datei öffnen“-Dialog ein bisschen unübersichtlich. Daher habe ich eine kleine Shell-Erweiterung geschrieben, die den verschiedenen Geschmacksrichtungen von LS3-Dateien verschiedene Symbole zuweist. So sieht das dann aus:

Bild Bild

Download der Symbolerweiterung hier

------

Um sich einen Überblick über die vielen bei Zusi 3 mitgelieferten 3D-Dateien zu verschaffen, ohne jede Datei einzeln öffnen zu müssen, eignet sich die Miniaturansicht und der Vorschaubereich im Windows-Explorer. Diese kann man um benutzerdefinierte Dateitypen erweitern, was ich für LS3-Dateien getan habe. Nach Installation der Erweiterung sieht es dann so aus:

Bild

Die Miniaturansichten werden nur für .lod.ls3-Dateien und .shape.xml-Dateien (Formkurven) generiert, um die Ladezeiten im Explorer nicht zu sehr zu verlangsamen. Der Vorschaubereich funktioniert für alle LS3- und .shape.xml-Dateien, dort kann man die Ansicht auch per Maus oder Tastatur schwenken.

Dateien mit Render-Voreinstellung „Benutzerdefiniert“ werden evtl. nicht korrekt dargestellt. Das betrifft nur sehr wenige Dateien.

Wenn eine verknüpfte Datei geändert wird, wird das Vorschaubild der .lod.ls3 nicht automatisch aktualisiert. Das ist eine Beschränkung des Windows-Explorers. Man kann in der Datenträgerbereinigung alle Miniaturansichten löschen, dann wird das Vorschaubild beim nächsten Mal neu generiert.

Download der Miniaturansicht hier

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 00:36:15
von Carsten Hölscher
Ah, dann kann ich einen Punkt von meiner mittelfrstigen Aufgabenliste streichen :)
Allerdings gibt's für die Vorschau wohl noch einen besseren Ansatz, und zwar habe ich inzwischen eine Komponente erstellt, die man irgendwo auf ein Formular platziert und als 3D-Vorschau o.ä. nutzen kann (z.B. im Fahrplaneditor). Diese generiert das Bild aber nicht direkt, sondern das macht eine dll, die auch von jeder anderen Anwendung aufgerufen werden kann. Input: Dateiname, Breite, Höhe *); Output: eine Bitmapdatei.

Das hat den Vorteil, dass man keine eigene ls3-Visualsierung programmieren muss und keine entsprechenden Versionsprobleme usw. auftreten können.

Carsten

*) sinnvoll wäre ggf. noch eine Option für den Betrachterstandort, ist derzeit auf Loks/Wagen ausgelegt.

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 09:29:47
von Johannes
Könnte man mal drüber nachdenken. Einlesen muss ich die Datei aber eh, um das Datum der letzten Änderung (inkl. verknüpfter Dateien) festzustellen und den Betrachterstandort zu berechnen. Selbst zeichnen spart dann natürlich I/O.

Grüße
Johannes

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 11:36:01
von Carsten Hölscher
Liest Du die ganze Struktur ein? Also würde z.B. bei einem Streckenmodul die ganze Modullandschaft dargestellt?
Wofür braucht man denn das Datum bei so einer Anwendung?
Carsten

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 11:38:19
von Andreas Karg
Schätzungsweise, um das Bildchen zu aktualisieren, wenn sich nur eine verknüpfte Datei geändert hat. *rat*

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 11:41:32
von Carsten Hölscher
Werden die nur einmalig erzeugt und dann gespeichert?
Nachtrag: Diese Option hab ich z.B. eigentlich ausgestellt, damit nicht überall diese db-Dateien rumfliegen. Solche Nutzer müßte man schon berücksichtigen.
Carsten

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 11:55:10
von Johannes
Carsten Hölscher hat geschrieben:Liest Du die ganze Struktur ein? Also würde z.B. bei einem Streckenmodul die ganze Modullandschaft dargestellt?
Im Moment ja. Das ist ein Grund, warum ich das eventuell auf .lod.ls3-Dateien beschränken werde. Alternativ würde man die Rekursionstiefe auf 1 oder 2 beschränken. Verknüpfte Dateien einlesen muss man auf jeden Fall, sonst kann man keine .lod.ls3- und fzg-Dateien darstellen (und gerade für die ist eine Vorschau sinnvoll, da man mit denen auch beim Streckenbau/Fahrplanbau zu tun hat).
Carsten Hölscher hat geschrieben:Nachtrag: Diese Option hab ich z.B. eigentlich ausgestellt, damit nicht überall diese db-Dateien rumfliegen. Solche Nutzer müßte man schon berücksichtigen.
Das (Nicht-)Speichern der Bilder ist Sache des Explorers. Die DLL stellt lediglich die passende Methode bereit, die das letzte Änderungsdatum der Datei zurückgibt. (Stichwort: IExtractImage2.)

Übrigens: Ab Windows 7 (oder 8?) liegen die Thumbs.db-Dateien nicht mehr überall rum, sondern werden zentral gespeichert. (Ja, ich weiß, dass du XP benutzt :) )

Grüße
Johannes

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 12:43:16
von Carsten Hölscher
Interessant wäre in dem Zusammenhang noch ein Dateiauswahldialog mit integriertem Vorschaufenster für die selektierte Datei. Gibt's sowas seit Vista noch? Unter xp gibt es das ja bekanntlich.

Carsten

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 21:08:29
von F. Schn.
Der normale Öffnen-Dialog in Windows 6.X ist im Prinzip ein Explorer-Fenster. Daher steht dort auch Standardmäßig eine optionale Leiste mit Dateivorschau zur Verfügung. (Diese bietet aber natürlich nur dann sinnvolle Informationen, wenn auch eine Vorschau-DLL für den Dateityp verfügbar ist.) Wenn ich mich recht erinnere muss unter XP der Programmierer die Vorschau selbst in den Öffnen-Dialog einbauen, bei Windows 7 ist das jedenfalls nicht mehr nötig.

Johannes, habe ich dich jetzt richtig verstanden, oder liest du ohnehin jedes mal die komplette Datei ein, nur um das Änderungsdatum herauszubekommen?

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 21:18:28
von Johannes
F. Schn. hat geschrieben:Johannes, habe ich dich jetzt richtig verstanden, oder liest du ohnehin jedes mal die komplette Datei ein, nur um das Änderungsdatum herauszubekommen?
Ja, das Änderungsdatum für die Vorschau ergibt sich aus dem Maximum der Änderungsdaten der Datei selbst und aller eingebundenen Dateien (Texturen, .lsb-Datei, verknüpfte Landschaften). Ich wüsste auch nicht, wie man das anders anstellen sollte. Schließlich soll die Vorschau für die .lod.ls3-Datei auch aktualisiert werden, wenn die .lod1.ls3-Datei geändert wurde.

Das Parsen der XML-Knoten mit den Geometriedaten und das ganze DirectX-Brimborium fällt dabei natürlich nicht an.

Grüße
Johannes

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 22:09:26
von F(R)S-Bauer
Hi,

schade das es so was für die Zusi2.ls nicht gibt...

mfg

Ralf

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 22:58:49
von Mr. X
schade das es so was für die Zusi2.ls nicht gibt...
Könnte man doch programmieren. Grundsätzlich steht dem doch wahrscheinlich nichts im Wege, außer dass sich die Mühe vlt. niemand machen will.

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 24.10.2013 22:59:03
von Johannes
F(R)S-Bauer hat geschrieben:schade das es so was für die Zusi2.ls nicht gibt...
Hab ich mir auch schon gedacht; so viel Aufwand dürfte das ja nicht sein. Am Wochenende stehen zwei längere Zugfahrten an; wer weiß, was sich da ergibt?

Grundsätzlich ist der Code auch quelloffen (GPL). Allerdings hängt er von der ATL aus Visual Studio 2013 ab, was ich als gewisses Manko empfinde (aber da es mein Einstieg in die COM-Entwicklung war, wollte ich das nicht unnötig verkomplizieren). Kann also sein, dass man mit freien Tools im Moment nicht weit kommt.

Grüße
Johannes

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 26.10.2013 12:51:16
von F(R)S-Bauer
Hallo,
Johannes hat geschrieben: ...
Übrigens: Ab Windows 7 (oder 8?) liegen die Thumbs.db-Dateien nicht mehr überall rum, sondern werden zentral gespeichert. (Ja, ich weiß, dass du XP benutzt :) )

Grüße
Johannes
Was aber IMHO mehrere Nachteile hat:
1) die Datenbank und die Registry bläht sich auf
2) Auf Wechseldatenträgern wir die i.d.R immer wieder neu gemacht
3) Damit kann man in Probleme geraten wenn man mal was nichts Rechtskonformes aus Altzeiten auf dem Rechner findet und löscht. Es hatt bereits wegen der Thumb.dbs Anklagen gegeben wo die eigentlichen Inhalte (z.B Urheberechtlich geschützte Kochbuchbilder aus dem Internet) als Miniaturen in diese DB von den Organen der Rechtspflege gefunden wurden. Bei der alten Lösung waren die mit löschen des Ordners weg.

Weshalb man die Teile unter W7/8 auch abstellen sollte, genau so wie den Index und Suchdienst, der Speicher auch für 2 Ewigkeiten.

mfg

Ralf

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 26.10.2013 13:15:47
von Mr. X
1) die Datenbank und die Registry bläht sich auf
Und umgekehrt reduziert es den Overhead, der durch die vielen thumbs.db-Dateien entsteht.

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 29.10.2013 23:03:57
von Johannes
Zugfahrten bei Nacht sind praktisch, man kann schön Vorschauen für .ls-Dateien programmieren und hat trotzdem keinen schönen Blick aus dem Fenster verpasst:

Bild

Die angesprochene Sache mit der Vorschau im Öffnen-Dialog unter Windows Vista und höher habe ich auch gleich gelöst. Es hat sich herausgestellt, dass dies mit der alten, zu Windows XP kompatiblen Programmierschnittstelle IExtractImage nicht geht, stattdessen muss die neue Variante IThumbnailProvider verwendet werden. Es sind jetzt einfach beide implementiert, sodass es nach wie vor ab XP funktionieren dürfte (getestet habe ich das nicht).

Download der neuen Version hier.

Grüße
Johannes

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 31.10.2013 21:01:50
von F. Schn.
Johannes hat geschrieben:
F. Schn. hat geschrieben:Johannes, habe ich dich jetzt richtig verstanden, oder liest du ohnehin jedes mal die komplette Datei ein, nur um das Änderungsdatum herauszubekommen?
Ja, das Änderungsdatum für die Vorschau ergibt sich aus dem Maximum der Änderungsdaten der Datei selbst und aller eingebundenen Dateien (Texturen, .lsb-Datei, verknüpfte Landschaften). Ich wüsste auch nicht, wie man das anders anstellen sollte. Schließlich soll die Vorschau für die .lod.ls3-Datei auch aktualisiert werden, wenn die .lod1.ls3-Datei geändert wurde.
Hm... Mir fällt da jetzt auch nichts anderes ein, bis auf die Möglichkeit, die Abhängigkeiten zwischen den Dateien + Zeitstempel der Dateien in einer geeigneten Datenbank zwischenzuspeichern...

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 31.10.2013 22:24:02
von F(R)S-Bauer
Hallo, vielleicht bin ich ja zu blöd...

du schreibst:
Zur Architektur (x86 = 32 Bit, x64 = 64 Bit) passende Dateien entpacken, Ls3Thumb.dll in passendes Verzeichnis verschieben (muss später dort liegen bleiben)
..
Kommandozeile als Administrator starten und ins Verzeichnis der Ls3Thumb.dll wechseln
„regsvr32 Ls3Icons.dll“ ausführen
Es sollte die Meldung kommen, dass DllRegisterServer erfolgreich durchgeführt wurde. Danach einmal ab- und wieder anmelden.
Ist es beabsichtigt Ls3Icons.dll zu registrieren? bei mir geht es nähmlich nicht ....

mfg

Ralf

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 01.11.2013 22:59:26
von Johannes
F(R)S-Bauer hat geschrieben:Ist es beabsichtigt Ls3Icons.dll zu registrieren? bei mir geht es nähmlich nicht ....
Nee, das ist natürlich ein Copy&Paste-Fehler. Soll Ls3Thumb heißen, ist korrigiert, danke.
F. Schn. hat geschrieben:Mir fällt da jetzt auch nichts anderes ein, bis auf die Möglichkeit, die Abhängigkeiten zwischen den Dateien + Zeitstempel der Dateien in einer geeigneten Datenbank zwischenzuspeichern...
Dann müsstest du aber zusätzlich bei jeder Änderung an einer der Dateien die Datenbank aktualisieren (also nicht nur beim Aufrufen der Thumbnail-Generier-Routine). Solch einen Apparat würde ich ungern bauen, zumal im Endzustand nicht so viele Dateien zusätzlich eingelesen werden dürften. Aber wenn das jemand programmieren will … bitte :)

Grüße
Johannes

Re: Ls3Icons, Ls3Thumb: Symbole/Miniaturansicht für LS3-Date

Verfasst: 02.11.2013 09:16:57
von F(R)S-Bauer
Hallo,

Es gibt noch Optimierungpotential:

Bild

Windows 7.
Beim Ersten Durchlauf brachte er ein paar mehr Symbole, das sah schon ganz gut aus, aber auch nicht alle.
Nach dem Umschalten auf "Große Symbole" waren noch einige Symbole Auf-blitzen beim Durch scrollen zu sehen.
Nach dem zurückschalten gab es dieses Bild.

Dann noch ein Vorschlag, Man kann Leer und Unglückliche Ansicht nicht unterscheiden.
Vielleicht solltest du bei "Leer" einfach ein z.B Weißes Kreuz rein malen, oder "Leer" als Wortbild ausgeben.
Des weiteren sollte bei Fehlern z.B . ein Icon Error angezeigt werden.


Nachtrag:
Sieht so aus als ob die Funktion nach der 1. Datei aufhört mit dem Durchlauf. Jedenfalls ist ein Reboot erforderlich um wieder ein paar mehr Icons zu sehen, bis das Verhalten wieder austritt.

mfg

Ralf