LDraw file format describes "part" (representation of Lego brick) as a set of geometric primitives ("p") in a form of polygonal triangulated mesh. LDraw "models" consists of LDraw "parts", same way as Lego models consists of Lego bricks. LDraw file format is plain text file format, and uses
comma-separated syntax definition of values.
Units with "ruler" part (ruler tick: 1 mm)
LDU (
LDraw
Units) — is a base distance unit used in the LDraw format, equals to 1/20 of pin step (distance between centers of 2 closest pins on plate), which in turn almost equals to 0.4
millimetre. Some editors (like,
LeoCAD) displaying dimensions and coordinates using only LDU. For measuring and converting sizes from LDU to other units and vice versa, LDraw users created few parts in a form of
ruler, that could be used directly in LDraw editors during visual modeling, that especially useful for
scale model making.
Scale LDraw, the same as Lego, uses
1:42½ (
Lego minifigure scale) as a base for scaling real world objects for
scale modeling. The precise scale may vary between 1:40 and 1:43.
Specification The LDraw format can divide a model into steps so that the building instructions can be incorporated into the design, and also allows for steps that rotate the camera and even move parts around in an elementary fashion. It also allows for models to be incorporated in the construction of larger models to make design easier. This also makes the file format space efficient: instead of specifying the polygons of every single stud of a specific brick for example, a shared stud file is included multiple times with transformation applied. Parts, models, sub-models and polygons are all treated the same and are not specific to Lego models (only the parts library is). The format could be used to store any type of 3D model. Some have created bricks of other building systems for use with LDraw. The following main three filename extensions are used by LDraw: • files implementing a part, subpart or primitive use .dat • a Lego model consisting of 1 or more bricks use .ldr • multiple .ldr files can be aggregated into files of type .mpd The file format uses plain text data, and uses the charset
UTF-8 without
BOM.
Example File: 3003.dat, the implementation of a 2 x 2 brick 0 Brick 2 x 2 0 Name: 3003.dat 0 Author: James Jessiman 0 !LDRAW_ORG Part UPDATE 2002-03 0 !LICENSE Redistributable under CCAL version 2.0 : see CAreadme.txt 0 BFC CERTIFY CCW 0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 0 !HISTORY 2002-05-07 [unknown] BFC Certification 0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 0 !HISTORY 2007-05-07 [PTadmin] Header formatted for Contributor Agreement 0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 1 16 0 4 0 1 0 0 0 -5 0 0 0 1 stud4.dat 0 BFC INVERTNEXT 1 16 0 24 0 16 0 0 0 -20 0 0 0 16 box5.dat 4 16 20 24 20 16 24 16 -16 24 16 -20 24 20 4 16 -20 24 20 -16 24 16 -16 24 -16 -20 24 -20 4 16 -20 24 -20 -16 24 -16 16 24 -16 20 24 -20 4 16 20 24 -20 16 24 -16 16 24 16 20 24 20 1 16 0 24 0 20 0 0 0 -24 0 0 0 20 box5.dat 1 16 10 0 10 1 0 0 0 1 0 0 0 1 stud.dat 1 16 -10 0 10 1 0 0 0 1 0 0 0 1 stud.dat 1 16 10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat 1 16 -10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat The above code defines the basic 2×2 brick. It consists of a five-sided box (
box5.dat, outside) and an inverted five-sided box (inside), the connection between those two, consisting of four quads (the four lines starting with
4), the four studs on top of it (
stud.dat) and the long hollow stud in the inside (
stud4.dat). All lines in an LDraw file are either empty or start with a
command number, where 0 means no command (though over time, some lines starting with 0 followed by specific text in capitals also got a meaning as meta commands). The command 1 for example includes a subfile. It specifies the file's path and a transformation matrix that should be applied to it, as well as its color (where
16 means "use the color that was used when including the current file"). Command 4 specifies a four-sided polygon. There are also commands that define 2D lines. Such lines give the parts a clear contour even in non-shaded orthographic renderings.
Example File: pyramid.ldr, a Lego model of a pyramid The following code specifies a simple pyramid model with three layers made of 2 x 4 bricks (brick # 3001) with changing color and a 2 x 2 brick on top. 0 Example Pyramid for Demonstration of LDRAW Library 0 Name: pyramid.ldr 0 Author: James Jessiman 1 1 -40 -24 60 1 0 0 0 1 0 0 0 1 3001.dat 1 1 40 -24 60 1 0 0 0 1 0 0 0 1 3001.dat 1 1 60 -24 0 0 0 1 0 1 0 -1 0 0 3001.dat 1 1 40 -24 -60 1 0 0 0 1 0 0 0 1 3001.dat 1 1 -40 -24 -60 1 0 0 0 1 0 0 0 1 3001.dat 1 1 -60 -24 0 0 0 1 0 1 0 -1 0 0 3001.dat 0 STEP 1 4 -20 -48 40 1 0 0 0 1 0 0 0 1 3001.dat 1 4 40 -48 20 0 0 1 0 1 0 -1 0 0 3001.dat 1 4 20 -48 -40 1 0 0 0 1 0 0 0 1 3001.dat 1 4 -40 -48 -20 0 0 1 0 1 0 -1 0 0 3001.dat 0 STEP 1 14 0 -72 20 1 0 0 0 1 0 0 0 1 3001.dat 1 14 0 -72 -20 1 0 0 0 1 0 0 0 1 3001.dat 0 STEP 1 0 0 -96 0 1 0 0 0 1 0 0 0 1 3003.dat 0 STEP == Software ==