Background

LDraw is a Lego CAD standard which is infamous among the AFOL community. It was created by a Lugnet user, and is pretty much recognised as the standard for digital representation of Lego Parts and assemblies. The standard itself sets out a text file representation of a Lego model in terms of numeric parameters. It has extensions such as multi-part files, and is used as the basis for Lego CAD systems such as LeoCad and MLCad and by tools like LSynth. LeoCad actually natively uses another part format, but that is easily converted to and from LDraw files. The originator of the file format was James Jessiman, who has sadly passed away, but who’s memory is honoured by all those in the community who use, develop and propose Lego CAD systems, be they based upon LDraw directly, or new ones that take the concepts and modernise them. There have been LDraw parts created for some other construction toys. There is no reason it could not be used for Meccano or Fischertechnic. Now given that Lego units are a bit odd (not relating to metric or imperial units very well at all), it is reasonable to spec things to interact with Lego in the Lego units where possible.

The Parts Library

Useful information - not in the format:

  • 20 Ldraw units = 1 Lego Stud
  • 1 Ldraw unit = approx 0.4mm (0.39925)
  • Therefore 1mm = approx 2.5 Ldraw Units
  • and 1m = 2504.6 Ldraw units

The LDraw parts library is not exhaustive, and when creating models, it is worth seriously bearing this in mind. If you cannot find a part, then it is suggested that you search for a part, then ask the community about it, and finally create your own. There are many parts that are not yet “official”, but can still be used. If you use such parts, it may be a good plan to use a multipart file, and embed the unofficial files there. This is because such parts may change before they become official, and the changes may involve moving the parts anchor point or rotation, which could mess up your model.

Try to resist the temptation to put unofficial parts directly into your parts library. You could add them into the LDraw models directory, and use them from there. This means you are at least aware (or should be aware) of any additional file requirements if you choose to share your creation or even open it on a different computer.

Creating Parts

There are plenty of tips around Lugnet and the LDraw Foundation itself for creating parts. Reading some of those is recommended, as creating a new part can be a serious and time consuming undertaking. You will require patience, understanding, research and probably planning depending on the complexity of the part. A big hint - don’t make any part with a curve your first go, and try to model a simple brick as a pure exercise is advisable to get the hang of things.

Be prepared to throw away, or remodel things as you find your way around the parts tree and primitives - reusing existing primitives should always be done in preference to rolling your own and copy paste repeating.

This is not for a newbie, who should maybe start simple models with existing parts until they get the general feeling for virtual modelling.

Parts may be created from a set of absolute primitives (things like a line or quad), and LDraw Primitives, which are themselves special parts for common things like a Lego stud. This is a common theme in CAD systems. You will need to understand how 3 dimensional coordinate systems and transformations work.

For simple parts, MLCad can be used to construct them. For more complicated parts, using a serious 3D Cad system like SolidWorks to spec out a part first, and even model the curves may seriously help. SolidWorks parts can be converted to LDraw parts with certain software. At the very least, a 3D version of the part can be used as a background with guides to create the real part in MLCad.You could also use a scanned version of the part as a modelling guide by literally placing the part onto a flatbed scanner, giving it a contrasting background, keeping away the ambient light, and scanning it.

Designing parts is not easy, especially if they have curves. Since LDraw has no real curves, they must be constituted from facets. The part author has to make a choice according to the curvature, part size, and the scale that it is likely to be viewed about to make sure the facets are not too obvious. Now one great aid to this is a big quirk that belongs to LDraw, the “Conditional Line” primitive. Here, be warned, may be dragons!

The conditional Line

Explained basically, it can be used for curved faces and is expressed with 4 points, 2 for the actual line, and 2 control points. It is only drawn when one control point is in front, and one behind the actual line. The idea being, that you would only see the line at the outside of the curve, and that the facets are not lined as they would be for a part that is intended to be faceted.

Instructions

LDraw can be used to create step by step instructions for a model, which allows other Lego builder to build it, and possibly improve on it.

Rendering

One other aspect of LDraw is the ability to render high quality images of Lego designs. There are even contests for doing so. This often means linking up with software like POVRay to create these images, and allow animating Lego or using CG special effects with them. Lego Movies have been created this way.

The Community

There is a large community of people online using LDraw, and authoring parts. This community is mostly based on lugnet and peeron as well as the LDraw pages themselves.

The community author parts, and will respond to questions and suggestions on parts authoring, model creation, rendering and such related matters. There are occasional contests for well created models, and also contests for complete rendered models.

Community authored parts may not even be in the unofficial list, so do ask. Users may have created them for their own reasons, and not feel they are good enough for general release. If you ask on the list, someone may respond with a file you can use.

Some Recommendations

(paid links)

Lego Software Power Tools Including Ldraw, Mlcad and Lpub There is a large plethora of Lego related software. This book helps you navigate, choose and use this software effectively. As it was written by the author of LSynth - Kevin Clague and two other Lego fanatics - there is no reason to doubt its usefulness.
The LDraw Foundation This organisation are the custodians of Lego related tools and software - and an essential hub for the Lego CAD community.
Lugnet Lugnet is the primary discussion area for all things Lego, and have a number of forums for discussing Lego CAD.