FAQ for LDraw Part Numbers
This FAQ should help you to understand the LDraw part numbering schema. If you have more questions, please ask! You can post to everyone on lugnet.cad.dev, or email the Parts Library Admins.
Can I just submit parts with customized filenames, and let it be sorted out later?
A: Please, no! Read this FAQ for information about what to do when you don't know the number.
How are part numbers allocated?
A: If we know the part number used by Lego, then we use that. For modern parts, these numbers are often moulded in a discreet place on the part. These are typically four digit numbers in the range 2001-9999, five-digit numbers in the ranges 3nnnn, 7nnnn, 8nnnn or seven digit numbers like 4109nnn. Don't be confused by a number of the form n-nn (eg. 4-01), or even single numbers or letters on older parts - these are probably something to do with identifying individual moulds, they are not the part number.
What if we don't know the Lego part number?
A: In this case we use a "u" prefix (e.g. u1234.dat). If a part number is unknown, the part in question gets a file name with uNNNN.dat format, these filenames thus ranging from u1.dat to u9999.dat. The part retains the u-prefixed number as long as the part's true number is unknown.
This unknown number should be the same as used by Peeron (for example Peeron: x1234 -> LDraw: u1234). If Peeron does not list that part, a number ranging from u9000.dat to u9999.dat is to be used. The numbering for this will be chosen by the Parts Tracker admin as before with the range of xNNN.dat files. Prolific authors may request from the Parts Library Admins a range of numbers to be pre-allocated to them.
If the Lego part number is identified during the review process, then the part is renumbered and the u-prefixed number becomes available for re-use.
Prior to 2010, we used a three-digit part number, but that range of numbers has been exhausted. During development, and for posting to the Parts Tracker, the three-digit number was preceded with an "x" (e.g. x123.DAT), and upon inclusion in an official release, the "x" was removed. Parts on the Parts Tracker in February 2010 and not listed by peeron, will not be renamed to u9NNN numbers, but will continue to be renamed xNNN.dat -> NNN.dat upon release.
What are shortcut files and when should I create them?
A: Shortcut files are useful when several separate parts are typically delivered from Lego pre-assembled or are frequently used in combination. These are numbered using the official LEGO number for the composite parts, if known, or by appending "Cnn" to the part number of one of the individual parts.
Be sure to put (Complete) at the end of the descriptive name for all shortcuts.
Use 'Shortcut' when the file is provided for convenience of use
(example: Minifig files like 979.dat).
Use 'Complete' when the file represents a composite part, as purchased
(example: Shock Absorber, 75348.dat).
[Notice that neither of the example files follow this shortcut/complete standard, and the minifig file doesn't follow the file-naming standard, either.]
When parts are used in assemblies (provided as such by LEGO, and impossible to separate in normal use) their description begins with ~ so they don't appear in part selection lists. LDraw users should use the assembly shortcuts instead.
To further clarify:
- For assemblies without moving parts, it's simple: all parts composing the assembly are ~, and an assembly shortcut is provided (several shortcuts may be needed to account for different colour combinations). Example: NXT light sensor 55969 shortcut, composed of ~parts 54732, 55972, 55816, 55970, 55966.
- For assemblies with moving parts, a shortcut should be provided for each mechanical entity. This way the LDraw user can compose their own assembly in any position. An overall assembly is provided as well, to simplify user life when default position is usable, and for bill of materials usage. Different positional forms of the same combination of parts should use an additional -fN suffix to distinguish them. Example: NXT motor has a case assembly 54715c01, and an axle hub assembly 54725c01. Case assembly 54715c01 is made of ~parts 54714, 54715, 54716, 54717 and 54732. Hub assembly 54725c01 is made of two 54725 ~parts. Complete motor assembly 53787 is made of 54715c01 + 54725c01.
- In case one of the moving assemblies is reduced to a single part (eg. axle hub of PF motors), the description of this part is not tilded,
so that the user can pick it easily to create his own position combination. For example, the small linear actuator has 3 sections moving independently:
- - the body, assembly 92693c01, composed of ~parts 92693 and 92697.
- - the rotating axle, single part not tilded 92695.
- - the piston, single part not tilded 92696.
How do we handle parts which exist in several different versions?
A: If the parts have different numbers, just use the different LEGO (design ID) numbers. More commonly, the different variations have the same number. This is managed by adding a single alpha character to the end of the base part number (e.g. 3626A.DAT and 3626B.DAT, the solid stud and hollow stud versions of the minifig head). If, prior to the second version being authored, one version of the part was released using just the official part number (no alpha-character suffix), it should be renumbered/moved to use an alpha-suffix. If the official part number is unknown, then it is recommended to use separate uNNNN numbers for each version.
What about parts, like springs, that can exist in more than one physical configuration?
A: These were previously numbered in the same way as multi-version parts (by adding a single character suffix to the end of the part number). The current convention is to use a -Fn suffix for versions of the parts deformed from the default state.
How are patterned parts numbered?
A: This is a difficult area, as the "official schema" won't work for LDraw. For Ldraw purposes, patterned part numbers comprise the base part number followed by Pxx, where xx is the pattern code. This helps to co-locate patterned parts with their plain version. A lot more guidance on pattern codes is in the Patterned Part Information page. The Lego part number for a patterned part is usually un-related to the base part number. If this is known (and these are often difficult to determine) a shortcut file is created with the base part colour hard-coded - these are typically in the 8nnnn series.
What about parts that are on runners? How are they numbered?
A: Mini-parts are those delivered from Lego still connected to a sprue (or runner) containing several different part (e.g. the castle feathers or the coins). These are numbered in the same way as multi-version parts - by adding a single character suffix to the end of the part number.
How are stickers numbered?
A: The use of official numbers for stickers has evolved over time.
- no copyright date sheets - 4-digit numbers: 3xxx, 4xxx or 6-digit numbers: 004xxx
- no copyright date sheets - 6-digit numbers: 168xxx, 169xxx, 197xxx, 820xxx, 821xxx
- ©1993 / 1994 - 6-digit numbers: 168xxx, 169xxx, 822xxx; a few 7-digit numbers: 4100xxx
- ©1995 - 2000 - combo 5-digit/7-digit numbers: 71xxx/41xxxxx, 72xxx/41xxxxx
- ©2000 - 2003 - combo 5-digit/7-digit numbers: 2xxxx/41xxxxx, 4xxxx/41xxxxx, 4xxxx/42xxxxx; a few 7-digit numbers: 42xxxxx
- ©2004 onwards - combo 5-digit/7-digit numbers: 5xxxx/4xxxxxx, 6xxxx/4xxxxxx, 7xxxx/4xxxxxx, 8xxxx/4xxxxxx
- ©2012 onwards - combo 5-digit/7-digit numbers: 1xxxx/60xxxxx
Hey! There's already a part file with the same number I found on my part!
A: This happens, but not very often. There are three possible reasons:
- Lego reused the part number. In this case, use an A, B, C suffix system.
- We messed up, and the file in the parts library is wrong. Bring this to the attention of the admins, because it needs a special announcement with the offcial release to allow users to change references within their models. Alternatively we may decide to use a suffix to identify the correct use of the number.
- You were mistaken when you read the number. Check the part again.
How are subparts numbered?
A: Subparts, which are stored in the \s subdirectory, should bear some relationship to their "parent" main part. They are numbered by appending some suffix to the part number of the main part, typically s01, s02, etc. For example 1234.dat might have a subpart named s\1234s01.dat and 1234p56.dat might have a subpart named s\1234p56s01.dat. In the past when filename were restricted to the DOS 8.3 naming convention, filenames like s\1234p56a.dat or s\1234a56.dat were used, but this naming is now discouraged. There is more information on this topic on the File Types FAQ page.
How are primitives numbered?
A: Primitives are essentially highly reusable subparts, and for ease of use have highly coded names to allow maximum use of the eight character limitation. Existing primitives are described in the Primitives Reference, but if you think there is a need for a new class of primitives, contact the Parts Library Admins first.
Wouldn't things be simpler if we allowed filenames of more than eight characters?
A: Yes. The original LDraw and LEdit programs are MS-DOS based, and as such can only recognise filenames adhering to the 8.3 standard of that era. Nevertherless, many of the newer LDraw applications do support long file names for models. In May 2008 with the ratification of the LDraw File Format 1.0.0 specification, part filenames can now be 21.3 (25 characters including the mandatory .dat extension). The Parts Tracker is being enhanced to remove the 8.3 restriction.
I've read all this, but see there are some released parts that don't adhere to the rules - how is this?
A: The part numbering schema has evolved over time, and in the early days some of the classification problems were not apparent.
|Part number pattern (a = alpha, n= numeric, x = alphanumeric)||Usage|
|nnn||Regular part of unknown Lego number (see also Unnnn, below).|
|2nnn-9nnn, 3nnnnn, 7nnnnn, 8nnnnn, 4109nnn||Regular part of known Lego number.|
|nnnCnn, nnnnCnn, nnnnnCnn||Shortcut assembly of part nnn, nnnn or nnnnn with other parts or formed version of flexible part nnn, nnnn or nnnnn.|
|nnnCnn-Fn, nnnnCnn-Fn, nnnnnCnn-Fn||Positional variant of shortcut assembly of movable parts, comprising part nnn, nnnn or nnnnn with other parts.|
|nnnDnn, nnnnDnn, nnnnnDnn||Shortcut assembly of part nnn , nnnn or nnnnn with a sticker as used in an official set.|
|nnnPxx, nnnnPxx, nnnnnPxx||Patterned version of regular part.|
|nnnaPxx, nnnnaPxx||Patterned version of regular part variant.|
|S\nnnSnn, S\nnnnSnn, S\nnnnnSnn, S\nnnPxxx, S\nnnnPxxx||Subfiles - stored in the parts/s directory.|
|nnna, nnnna, nnnnna||Regular part variant (a = A, B, C for successive versions of part, sequenced chronologically), or mini-part (a = A, B, C for each mini-part on the same runner), or to maintain backward compatibility if an incorrect number is released into the official library.|
|Snnnn||Sticker of unknown Lego number.|
|Unnnn||Part of unknown Lego number - from February 2010 when three-digit numbers exhausted.|
|Xnnn||Pre-release part of unknown Lego number.|
Chris Dee - last updated: January 2017