Being part of several different minorities, among them being a Linux user and an adult LEGO builder, I’m part of an even smaller minority: a user of LEGO Digital Designer (LDD) under wine in Linux. First time I tried running LDD in wine, it didn’t go so well. The program installed and started just fine, but once I tried to select a brick, it crashed. I quickly gave up, thinking it just wasn’t meant to be. Then LDD 4 was released. I decided to try again, and suddenly, it worked! Now, I’m not sure if it worked because LDD 4 was more compatible with wine, if wine had gotten better, or maybe most likely, the graphics drivers for Linux had gotten loads better (or possibly a combination of those).
In any case, I’m happy to now be able to use LDD in Linux, although it’s still not perfect (uploading of models to the web through the Design By Me process does not work at all). But there’s one more thing I need: the ability to upload the list of bricks used in a model to a wanted list in bricklink, so they can be viewed and ordered. There are some tools for windows to do this, but I haven’t tried those in wine, as what I really just need is a simple little script. So I made one! It didn’t take much investigating to figure out I could just unzip the lxf files created by LDD, and get an easily readable xml out of it. As it turns out, all I needed was a simple little perl-script to parse this xml, convert the LEGO color ids to bricklink color ids (found a mapping table for this that I just pasted into my script), and create an xml file in bricklink’s chosen format. And voila! Just upload to bricklink!
Now, of course, it wasn’t quite that simple. Some element ids that come out of LDD aren’t directly compatible with bricklink for various reasons. But instead of trying to compile a comprehensive mapping here (I could probably get such a list), I just chose to tackle the incompatible numbers as they presented themselves. So when I upload a list, some elements are rejected by bricklink. I then find out what those elements are in LDD, and find the equivalent number on bricklink that I can insert in a mapping table in my script, so it will work next time. Seeing as my script is a bit unpolished and unfinished in terms of element mapping, I’m not going to share it with the world just yet. I might do so though, if I can get a comprehensive element mapping (or someone really begs me to have the script even without it), and get a few quirks sorted out. But for now, I’m a happy LDD user in Linux