Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
Worum gehts? Mit dem Lego Digital Designer kann man seine eigenen Modelle kreieren. Das ist eine feine Sache. Macht fast so viel Spaß, wie mit den echten Steinen, aber auch nur fast, man hat nix zum anfassen oder bewundern noch zum Spielen. Also muss das Modell nach Hause kommen. Man könnte jetzt einfach den Bestellen-Button oben rechts im Designer drücken und legt sich dann allerdings auf den Rücken, so teuer... ja es war schon immer etwas teurer etwas besonderes zu haben.
Allerdings...
Über LEGO Pab kann man die vielen bunten LEGO Steine auch einzeln bestellen, das kostet fast nur die Hälfte, dafür hat man allerdings keinen hübschen Karton zum Wegwerfen und auch leider keine hübsch gedruckte Bauanleitung. Was aber ein LEGO Freak ist, der braucht keine Bauanleitung, nur ein einzelnes Bild des Modells. Zudem ist das zusammenklicken einer Bestellung der einzelnen Steine, die im Designer zusammengestöpselt wurden, nicht gerade einfach.
Also muss eine Möglichkeit her, das per Script zu machen.
Es gibt bestimmt eine Erweiterung für Firefox, die uns dabei helfen könnte. In Menü Extras->Add-ons kann man nach Firefox Extensions suchen, also Fluchs Javascript execute eingegeben und voilà, Execute JS ist das was wir suchen. Schnell installieren und Firefox neu starten. Jetzt sollte über Menü Extras->Open Execute JS der Javascript Executer gestartet werden können.
Leider ist die interessante LEGO PAB Seite in ein IFrame gestopft. (Siehe Quellcode) Aber das kann man ja auch direkt aufrufen. Also eben http://shop.lego.com/pab fürs Cookie und dann http://shop.lego.com/pab/PabPage.aspx für den Javascript Executor. Jetzt den Javascript Executor starten:
javascript:addBrick(4211050,1)
Jetzt sollte rechts eine Pick-A-Brick-Tüte erscheinen mit dem Teil, das man gerade ausgewählt hat.
Hat alles geklappt, braucht man jetzt nur noch ein Script, das die lxf Dateien des Designers zerlegt und in einzelne Javascript:addBrick(<Nummer>, 1) Zeilen zerlegt und der Massenbestellung sollte nichts mehr im Weg stehen. Name.lxf
ist per Zip komprimiert, also unzip Name.lxf darin sind 2 Dateien, eine IMAGE100.LXFML
und ein Bild IMAGE100.png
.
Die <Nummer> steht in der XML Datei Name.LXFML
Datei als Attribut itemNos="<Nummer>" eines Elements Brick danach sollte sich prima scannen lassen.
Als Beispielchen mal ein triviales Perl Script, einfach die lxf Datei mit unzip auspacken und dort das Script mit perl script.pl starten. Als Output bekommt man viele viele javascript:addBrick() Zeilen die nur noch kopiert werden müssen.
Cracks machen das natürlich mit XSLT aber davon verstehe ich nix, Perl geht ja auch.
Ob es wirklich funktioniert, habe ich noch nicht probiert. Aber trotzdem:
Happy LEGO Bestellung...
Es funktioniert so leider nicht ganz, das Lego System nimmt nicht mehr als 2 addBrick() Kommandos an
Deshalb habe ich den Code für mich dahingehend geändert, das jedes Teil zuerst in einem Hash abgelegt wird und das Auftreten gezählt wird. Am Ende wird dann eine Liste ausgegeben, die sämtliche Teile enthält, damit reduziert sich der Copy&Paste Auswand etwas.
Aber das gelbe vom Ei ist es noch nicht
Dank an Andi für die Tipps.
Habe herausgefunden, das ein alert() zusätzlich erstmal hilft, ist zwar nicht so schön, etliche male den Alarm weg zu drücken, aber das spart das Kopieren jeweils von 2 Zeilen nebst erneutem Einfügen, vielleicht geht es aber auch, wenn man in die Statuszeile was pinselt. Das habe ich aber noch nicht geprüft.