|
Reference:
Specifications:
LCD - LDraw Connection Database
A Draft Idea for LEGO CAD Software Developers By: Láng Attila D. (LAD) and Kiss Attila Csongor (KACS)
Contents
1. What is LCD?
1.1. What Can LCD Solve?
1.2. Notes and Abbreviations
2. The Database
2.1. The Idea
2.2. Connectors Connecting
2.3. Connector Properties
2.3.1. Standalone Properties
2.3.2. Connected Properties
2.4. Building the Database
3. The Connector Descripting Lists
4. At the End User
Appendix A: The LCD Database Draft
A1. Connectors
A2. Connections
Appendix B: CDL File Drafts
Appendix C: Additional Proposals
1. What is LCD?
LCD has nothing to do with Liquid Crystal Display: it is LDraw Connection Database. This
is a proposal for developers of LEGO CAD softwares, such as MLCAD, LeoCAD etc. It is based on
the LDraw .dat file system of parts.
1.1. What Can LCD Solve?
LCD, if once realized, can solve problems of LEGO CAD software users of connecting parts
correctly. When connecting virtual LEGO parts, it is possible to make two kinds of errors:
either leaving a gap or pushing the parts inside each other. The correct distance between two
parts may be hard to discover exactly, especially when working in three dimensions, for example,
in complex Technic LEGO sets. Even if an experienced LEGO CAD builder can connect parts quickly,
LCD may add some convenience to his or her work; and for beginners, it seems to be a must.
And LCD can do more.
1.2. Notes and Abbreviations
In this document, numbers like 3001 refer to numbers of LEGO parts, as
registered in LEGO CAD softwares. When writing the document, we have
used MLCAD 2.00 with the parts list from the archive complete.exe,
downloaded from www.ldraw.org, archived at 30th September, 2000.
Abbreviations used in this document:
CDL -- Connector Descripting List.
A file accompanying each LEGO part file, containing information about
connectors found on a specific part.
LCD -- LDraw Connection Database.
A file accompanying a LEGO CAD software, containing general connector
and connection information. Also, the name of the whole idea.
LCS -- Local Coordinate System.
A three-dimensional coordinate system belonging to a specific type of
connector.
All trademarks mentioned in this document are property of their
respective owners.
2. The Database
2.1. The Idea
The idea is maintaining a connection database. It deals with
"connectors", what is a term to group all particles what can connect to
each other. The most important connector is the LEGO stud. All connectors
are arranged to pairs, "what connects to what". We may call them as
male and female,
but sometimes this may be confusing. The "spouse" of the LEGO
stud is a stud inlet created on the bottom of a basic LEGO brick. And finally,
connectors may have variants: for example, 3062A and 3062B are the same parts,
but 3062B has a hollow stud on it. The variant behaves like a normal connector,
but may have some additional behaviors.
A draft example of the stud connector family:
male:
Stud
variant:
Hollow Stud (e.g. 3062B)
female:
Stud Inlet
When coding the properties of a connector, we specify:
1. What connectors are suitable for the connector
as a spouse? In the above example, the female Stud Inlet may connect to either a Stud or a
Hollow Stud. Both male variants may connect to a Stud Inlet, but the Hollow Stud may,
additionally, connect to an antenna or other rods.
2. What is the position they take when connected?
This is specified in a coordinate system.
3. What movements can the connected pair make?
This is specified in a coordinate system, by a range of degrees (or radians), according to
each axis. For example, the Stud--Stud Inlet connection cannot move; other connections can
slide and/or rotate.
LCD is a database what contains information about
connectors and only connectors. There is nothing in it about any specific LEGO part.
It describes connectors in a pseudo-physical context, not dealing with their visual
appearance, focusing only to the question of connecting and, later, of moving compared
to each other.
2.2. Connectors Connecting
Some kinds of LEGO connectors for a first taste:
male: Stud
(connects to Stud Inlet)
variant: Hollow Stud
(connects to Stud Inlet, Rod)
variant: Minifig Head Stud
(connects to Stud Inlet, Minifig Cap)
variant: Minifig Head Hollow Stud
(connects to Stud Inlet, Minifig Cap, Rod)
female: Stud Inlet
(connects to Stud and variants)
variant: Turnable Stud Inlet
(connects to Stud and variants) e.g. 3821
female: Minifig Cap
(connects to Minifig Head Stud, Minifig Head Hollow Stud)
male: Rod
(connects to Hollow Stud, Minifig Head Hollow Stud,
Minifig Hand)
male: Pin
(connects to Pinhole) e.g. 3673
variant: Pin 3/4
(connects to Pinhole) e.g. 32002
variant: Pin 1/2
(connects to Pinhole) e.g. 4274
female: Pinhole
(connects to Pin and variants) e.g. 3700
male: Axle
(connects to Axlehole) e.g. 3704
female: Axlehole
(connects to Axle) e.g. 32064
male: Minifig Arm Top
(connects to Minifig Torso)
female: Minifig Torso
(connects to Minifig Arm Top)
male: Minifig Wrist
(connects to Minifig Arm Bottom)
female: Minifig Arm Bottom
(connects to Minifig Wrist)
male: Minifig Tool
(connects to Minifig Hand) e.g. 38, 2561, 2562, 3852
female: Minifig Hand
(connects to Minifig Tool)
male: Towball
(connects to Towball Socket) e.g. 3184
female: Towball Socket
(connects to Towball) e.g. 3183
These examples show some interesting differences. A Minifig Head Stud
is an absolutely normal stud, identical to any Stud in its physical
appearence; however, if we'd identify it as a Stud, we'd fall into
problems when taking any minifig headdress (3624, 3833, 3844, 3896,
4485 etc.). These parts have a normal Stud Inlet inside, but they
cannot be connected to, say, a 3001 block. This will force us to make
a distinction between a normal Stud and a Minifig Head Stud; the
latter can connect to a Minifig Cap, the former cannot.
Some connectors are very specific.
For example, there are only two minifig arms (975, 976)
and one minifig hand (977) listed in the parts
inventory, but we need a special connection pair to put them together,
and another special connection is needed to connect the arm to the
torso. Other connections are, on the other hand, very diversified,
like the Stud family. Similarly, Minifig Tool is a group name for all
parts (more exactly, for handles of all parts) that are designed to
fit into a minifig's hand. For example, a Rod (the 3957 antenna) fits
into a minifig's hand, so it is actually a Minifig Tool. But because
it can be assembled into a 3062B hollow rounded block, we must make a
distinction here, too. Rod is a "bachelor" connector, it hasn't any
female spouse designed specifically for it, but it fits to several
places. Such connectors will turn our full connector list into a
cross-referencing database.
When will we be able to give the same
code to two kinds of connectors,
and when will be two different codes required? The answer is simple in
theory: if the two connectors act in the same way physically, and if
all spouses for the first connector are applicable to the second one
and vice versa, we can treat them as identical. (This means that
anything what can hold a Stud tight is a Stud Inlet, no matter how does
it look like.) In practice, the answer is a little more difficult,
since we have to hunt the whole database for possible exceptions; but
for the first drafts of LCD, we may omit bizarre or rare applications,
such as the antenna poked through a hollow round 1*1 block. This is a
physical possibility, but probably not a used building practice. (Are
we wrong here?)
2.3. Connector Properties
A connector, observed as a standalone entity, has some properties; two
connectors in a connected state have additional properties. We will
refer these as standalone and connected properties.
2.3.1. Standalone Properties
The most important standalone property will be the Local Coordinate
System (LCS). This is a three-dimensional coordinate system, having a
base point and axes. We will use it to snap the two connectors
together. For example, a Stud can be observed as a virtual disk with 8
mm of diameter, with an axis crossing its center. A Stud Inlet can be
observed as a similar disk. If we position both base points to the
same coordinates, and turn their axes to the same directions, we have
connected the Stud and the Stud Inlet perfectly.
Another standalone property will be the Size property. We won't refer
to each millimeter of an Axle as a separate connector, although an Axle
may connect to several Axleholes. We treat its whole length as a
single, large sized Axle connector. This helps us to move parts along
the Axle. But this makes it necessary to keep more parts connect to the
same connector, too.
Similarly, we won't refer to each Stud on the same surface
separately. Instead, we treat them as a single, large sized Stud
connector. This helps us to maintain special connections, like the
Stud--Plate Edge connection (see Appendix A).
The Size property will be different for different parts; hence, it
won't be stored in the LCD but in the CDL files (see below).
2.3.2. Connected Properties
The most important connected property will be the Movement property:
how can the connectors act together? We have to store the rules for
this property for each pair of possible combinations; for example, we
store (at least) two Movement properties for the Hollow Stud
connector: one will be Hollow Stud with Stud Inlet and the other will
be Hollow Stud with Rod.
The value of a Movement property can be
one or more allowed rotations and slides.
|
A rotation is registered for the Stud--Turnable
Stud Inlet connection: a Turnable Stud Inlet (like at the bottom of 3821 door) may turn
around the vertical axis (vertical if studs pointing upwards) in 360
degrees. (The door itself may collide with the neighboring studs, if
any, but this is a question being totally out of our interest.)
|
A slide is registered for the Axle--Axlehole connection:
the Axlehole may slide along the main axis of the Axle, as long as the Axle is
physically present.
|
Several rotations are registered for the
Towball--Towball Socket connection: they may rotate freely around the center
of the Towball, according to all three dimensions, up to a specified degree of
difference.
And finally, both a rotation and a slide is
registered for the Rod--Hollow Stud connection: the Hollow Stud may slide along the Rod
and/or rotate around its axis.
Another connection property will be the Distance of Drag. This is a
distance (in millimeters, maybe) from where the two connectors are
recognized as a pair and being automatically fitted by the LEGO CAD
software. For example, the height of a plate (1/3 brick) without the
studs is 3.2 millimeters; it seems to be logical to set the distance
of drag to be less than the half of this, so 1.5 mm. This is a lot
less than half of the diameter of a stud and its surrounding area. If
this value is set correctly, take two bricks and put them near each
other -- in a distance of 1.6 mm between a Stud and a Stud Inlet.
Nothing happens. Move them a little closer -- snap! The bricks fit
correctly.
Why do we use less than the half?
Take a 2*1 brick and put a 1*1 brick
onto it, exactly positioning onto the center of the bigger brick. How
will the software know where does the smaller brick belong to? There
is an equal chance for both studs. If you set the distance to the half
of the critical value, you will see the brick snapping to an
arbitrarily chosen stud, what may make things messing up.
2.4. Building the Database
How to build the LDraw Connection Database? We have to take all
virtually available LEGO parts and examine the ways of possible
connections. We have to take notes on what do they connect to, how do
they fit together, what movements can they make. For each connector
type, we set up an LCS. For each possible connection, we set up
Movement rules. (And, of course, we register properties not mentioned
in this document but to be invented later.) We discover what
connectors may be treated as the same and what are different. We
assign a unique code to each connector type and variant.
Finally, we build a database (LCD)
containing all required data, and publish the list of assigned codes
with the necessary information.
3. The Connector Descripting Lists
After building the LCD, we have to use it. To do so, we have to
register the actual connectors found on the surface (and, if
necessary, in the interior) of the actual LEGO parts. For each .dat
file describing a part, we create a Connector Descripting List (CDL).
This file will describe:
1. where are connectors on the part and
what are their Sizes;
2. what direction are they pointing to;
3. what type of connector are they each.
The position and direction of connectors on the part are specified in a
coordinate system relative to the part, suitable for the general
coordinate system used in LEGO CAD softwares. (Yet we didn't find a
description for the .dat file format, so we can't talk about details;
however, this document is intended to be read by LEGO CAD developers
who already know this coordinate system much better than we do.) The
type of connectors is coded according to the LCD database codes. For
those locations on the part where no connector is there, we don't store
any information.
For example, the standard 3001 brick will be described in 3001.cdl as
follows (coordinates are specified here as stud and brick height
units, what won't be useful for real, only used as an example):
Stud at x = 0, y = 0, z = 1; Size x = 2, y = 4
Stud Inlet at x = 0, y = 0, z = 0; Size x = 2, y = 4
We must be careful when looking for
connectors. A fully equipped minifig will be a good example. Let's take a
minifig wearing a helmet with a visor, an airtank, tools in his hands and a ski; disassemble
him and take notes for all parts:
Part
|
Connectors found
|
| 2446 Minifig Helmet |
Minifig Cap, Visor Holder |
| 2447 Minifig Helmet Visor |
Visor |
| 3626B Minifig Head -- Stud Hollow |
Minifig Head Hollow Stud,
Stud Inlet |
| 3838 Minifig Airtanks |
Minifig Neck Surround |
| 973 Minifig Torso |
Stud, Minifig Neck, Minifig Torso
(2), Stud Inlet (2) |
| 975 Minifig Arm Right |
Minifig Arm Top,
Minifig Arm Bottom |
| 976 Minifig Arm Left |
Minifig Arm Top,
Minifig Arm Bottom |
| 977 Minifig Hand (2) |
Minifig Wrist, Minifig Hand |
| 38 Minifig Harpoon) |
Minifig Tool |
| 4479 Minifig Metal Detector |
Minifig Tool, Stud (6), Stud Inlet |
| 970 Minifig Hips |
Stud (2), Minifig Hips Left,
Minifig Hips Right |
| 971 Minifig Leg Right |
Minifig Leg Right, Stud Inlet |
| 972 Minifig Leg Left |
Minifig Leg Left, Stud Inlet |
| 6120 Minifig Ski (2) |
Stud, Stud Inlet, Hole (2) |
Many of the listed connectors weren't mentioned previously in the
document, but probably their meanings will be obvious.
Some questions may arise from this
example. Why do we need separate Minifig Hips/Leg
Left and Minifig Hips/Leg Right connector pairs? They
both seem to be the same. This is true for their physical appearance,
but not for their movement. If we set up the LCS around the rotator
axle on the hips, what seems to be logical, we well see them rotating
in opposite directions. If the legs could turn forwards as far as
backwards, this wouldn't be a problem, but they cannot. The range of
allowed movement will be the opposite of each other.
Of course, if the LCD system is once developed in reality and
implemented in LEGO CAD softwares, designers of new parts should equip
their creations with the appropriate .cdl files.
4. At the End User
But finally, what is this whole thing for? Who will take any advantage
from it? The end user. Those people who use MLCAD, LeoCAD or other
LEGO CAD software for building sets of virtual LEGO. When getting
LCD-equipped software in their hands, they will see almost the same as
previously, but there will be something more.
They take two parts near each other, and they fit. No need to
position them neatly together, they will fit as in real plastic life.
They can assemble a complete minifig on their own in some seconds, and
they will be sure that all parts are really fitting together. They
assemble a complicated Technic model almost as easily as they do it in
real. But if they want to try something irregular, they can simply
turn off LCD system as an option and go on their own.
When putting two parts near each other, the currently selected one
will be moved to the connecting one, leaving the latter where it is.
When selecting and moving a part which is already connected to another
part, either the selected part will move only, separating from the
connecting part -- or both parts will move, and if the second one is
connected to a third part, that will move, too, and so on. This is
because when connecting parts, LCD system makes a note for itself
telling that those parts are connected together, so it always knows
what parts are building up a submodel. Now the user can take a
submodel just like in reality, grabbing a part of it and the whole is
moving. Or, the grabbed part may separate from the submodel. Which one
will happen depends on a toggle that the user can set.
By keeping information of the
way connections can rotate or slide, LCD
system can put life into virtual LEGO models. When connecting parts,
each movable connection is included in a special list. The user can
view this list, disable items in it (in the case of unimportant or
obstacled movements), make notes for the important items, and, most
importantly, give orders to the items. Here is a hinge, rotate it! And
it will be so. And user will see it is good. And user will call it
LEGO. Evening and morning, seventh day.
*
Acrylnitrile butadiene styrene,
the raw material for real LEGO bricks,moulds in a precision of 0.005 mm.
Light, the raw material for virtual LEGO bricks,
moulds in a precision smaller than an atom.
We can take an advantage from this.
Appendix A: The LCD Database Draft
A1. Connectors
In this section, we will create a draft list for LEGO connectors. This
is a simplified version of a real LCD database. We only list
connectors and their most important properties. We didn't take a ruler
and a protractor to discover actual size and angle information. Yet we
don't establish LCS orientations. The purpose of this draft is only to
show developers: what can they do and how they can do it.
The following format is used to describe connectors:
Stud
Level: 1
Sample: 3001, top
Spouse: Stud Inlet, Plate Edge
Variant: Hollow Stud, Minifig Stud, Minifig Hollow Stud
Variants are listed separately, but only the differences
from their ascendant are listed.
A new thing here is Level.
This isn't a property and we needn't
include it in a real LCD database. This is an information for
developers on how important the connector is. Level 1 connectors are
the most important, basic-level ones; an LCD system won't be usable
before knowing all of these. Level 2 ones are less important,
developers may omit them from first releases. Level 3 are unofficial,
non-standard connectors.
The list is far from complete. Stud
Level: 1
Sample: 3001, top
Spouse: Stud Inlet, Plate Edge
Variant: Hollow Stud, Minifig Stud, Minifig Hollow Stud
Hollow Stud
Level: 2
Sample: 3062B, top
Spouse: Stud Inlet, Plate Edge, Rod
Variant of: Stud
Minifig Head Stud
Level: 2
Sample: 3626A, top
Spouse: Stud Inlet, Minifig Cap
Variant of: Stud
Minifig Head Hollow Stud
Level: 2
Sample: 3626B, top
Spouse: Stud Inlet, Minifig Cap, Rod
Variant of: Stud
Stud Inlet
Level: 1
Sample: 3001, bottom
Spouse: Stud and variants
Variant: Turnable Stud Inlet
Turnable Stud Inlet
Level: 1
Sample: 3821, bottom
Variant of: Stud Inlet
Minifig Cap
Level: 2
Sample: 3624
Spouse: Minifig Head Stud, Minifig Head Hollow Stud
Shutter Holder
Level: 2
Sample: 3581
Spouse: Shutter
Shutter
Level: 2
Sample: 3582
Spouse: Shutter Holder
Pin
Level: 2
Sample: 2458
Spouse: Hole
Axlehole
Level: 2
Sample: 3941
Spouse: Axle
Axle
Level: 2
Sample: 3704
Spouse: Axlehole
Metal Axle Holder
Level: 2
Sample: 3137
Spouse: Metal Axle
Metal Axle
Level: 2
Sample: 35B
Spouse: Metal Axle Holder, Wheel Town
Wheel Town
Level: 2
Sample: 3137C01
Spouse: Metal Axle, Wheel Town Tyre
Wheel Town Tyre
Level: 2
Sample: 123
Spouse: Wheel Town Tyre
Coupling Male
Level: 2
Sample: 4747
Spouse: Coupling Female
Coupling Female
Level: 2
Sample: 4748
Spouse: Coupling Male
Minifig Hand
Level: 2
Sample: 977, 4085
Spouse: Minifig Tool, Plate Edge
Towball
Level: 2
Sample: 3184
Spouse: Towball Socket
Towball Socket
Level: 2
Sample: 3183
Spouse: Towball
Plate Edge
Level: 3
Sample: 3022
Spouse: Stud, Minifig Hand
Hole
Level: 2
Sample: 6541
Spouse: Pin
Gear Tooth
Level: 2
Sample: 741, 3647, 3743, 6589, 32270
Spouse: Gear Tooth
Train Rail
Level: 2
Sample: 3228
Spouse: Train Wheel
Train Wheel
Level: 2
Sample: 2879
Spouse: Train Rail
Minifig Neck Surround
Level: 2
Sample: 3838
Spouse: Minifig Neck
Minifig Arm Top
Level: 2
Sample: 976
Spouse: Minifig Torso
Minifig Tool
Level: 2
Sample: 2562
Spouse: Minifig Hand
Visor Holder
Level: 2
Sample: 2446
Spouse: Visor
Visor
Level: 2
Sample: 2447
Spouse: Visor
Minifig Hips Left
Level: 2
Sample: 970
Spouse: Minifig Leg Left
Minifig Hips Right
Level: 2
Sample: 970
Spouse: Minifig Leg Right
Minifig Leg Left
Level: 2
Sample: 972
Spouse: Minifig Hips Left
Minifig Leg Right
Level: 2
Sample: 971
Spouse: Minifig Hips Right
Minifig Arm Bottom
Level: 2
Sample: 976
Spouse: Minifig Wrist
Minifig Wrist
Level: 2
Sample: 977
Spouse: Minifig Arm Bottom
Minifig Torso
Level: 2
Sample: 973
Spouse: Minifig Arm Top
Two Fingers
Level: 2
Sample: 6048
Spouse: Three Fingers
Three Fingers
Level: 2
Sample: 6217
Spouse: Two Fingers
Cupboard Inlet
Level: 2
Sample: 4534
Spouse: Cupboard Drawer
Cupboard Drawer
Level: 2
Sample: 4536
Spouse: Cupboard Inlet
Light
Level: 2
Sample: 4767
Spouse: Light Globe
Light Globe
Level: 2
Sample: 4773
Spouse: Light
Hinge Base
Level: 2
Sample: 3937
Spouse: Hinge Top
Hinge Top
Level: 2
Sample: 3938
Spouse: Hinge Bottom
Hinge Female
Level: 2
Sample: 3831
Spouse: Hinge Male
Hinge Male
Level: 2
Sample: 3830
Spouse: Hinge Female
Car Roof
Level: 2
Sample: 4213
Spouse: Car Roof Holder
Car Roof Holder
Level: 2
Sample: 4214
Spouse: Car Roof
Magnet
Level: 2
Sample: 73092
Spouse: Magnet, Magnet Holder
Magnet Holder
Level: 2
Sample: 2607
Spouse: Magnet
Turntable Small Base
Level: 2
Sample: 3680
Spouse: Turntable Small Top
Turntable Small Top
Level: 2
Sample: 3679
Spouse: Turntable Small Base
Turntable Big Base
Level: 2
Sample: 3403
Spouse: Turntable Big Top
Turntable Big Top
Level: 2
Sample: 3404
Spouse: Turntable Big Base
A2. Connections
In this section, we will create a draft list for LEGO connections.
This is a simplified version of a real LCD database. We only list
connections and their most important properties. We didn't take a
ruler and a protractor to discover actual size and angle information.
Yet we don't establish LCS orientations. The purpose of this draft is
only to show developers: what can they do and how they can do it.
The following format is used to describe connections:
Stud--Stud Inlet
Level: 1
Sample:
Snap: each stud into an inlet
Rotation: none
Slide: none
Snap is a property
describing how connectors will fit together;
Rotation and Slide describe how do they act together once snapped. In
an actual LCD database, all three properties are expressed in
coordinate figures.
A new thing here is Level. This isn't a property and we needn't
include it in a real LCD database. This is an information for
developers on how important the connection is. Level 1 connections are
the most important, basic-level ones; an LCD system won't be usable
before knowing all of these. Level 2 ones are less important,
developers may omit them from first releases. Level 3 are unofficial,
non-standard connections.
The list is far from complete.
Stud--Stud Inlet
Level: 1
Snap: each stud into an inlet
Rotation: none
Slide: none
Stud--Plate Edge
Level: 3
Snap: edge between rows of studs
Rotation: none
Slide: along the edge
Hollow Stud--Rod
Level: 3
Snap: rod through the stud
Rotation: 360 degrees
Slide: along the axis
Minifig Head Stud--Minifig Cap
Level: 2
Snap: like Stud--Stud Inlet
Rotation: 360 degrees
Slide: none
Stud--Turnable Stud Inlet
Level: 1
Snap: like Stud--Stud Inlet
Rotation: 360 degrees
Slide: none
Shutter Holder--Shutter
Level: 2
Snap: both ends of shutter into the bevels of holder
Rotation: 180 degrees
Slide: none
Pin--Hole
Level: 2
Snap: pin into the hole
Rotation: 360 degrees
Slide: none
Metal Axle Holder--Metal Axle
Level: 2
Snap: both ends of axle into the holder
Rotation: 360 degrees
Slide: none
(physically possible but unnecessary in practice)
Metal Axle--Wheel Town
Level: 2
Snap: an end of the axle into the wheel
Rotation: none (they rotate together)
Slide: none
Wheel Town--Wheel Town Tyre
Level: 2
Snap: tyre around the wheel
Rotation: none (they rotate together)
Slide: none
Towball--Towball Socket
Level: 2
Snap: towball into the socket
Rotation: up to a limited angle in all three dimensions
Slide: none
Axle--Axlehole
Level: 2
Snap: axle through the axlehole
Rotation: none
Slide: along the axis
Appendix B: CDL File Drafts
This appendix shows drafts of CDL files for some sample parts. The
following format is used:
3001 Brick 2 x 4
Level: 1
Stud at x = 0, y = 0, z = 1;
Direction z = 1; Size x = 2, y = 4
Stud Inlet at x = 0, y = 0, z = 0; Direction z = 1;
Size x = 2, y = 4
The coordinates are expressed in studs and bricks, in an arbitrarily
chosen coordinate system and with an estimated precision only. For
real CDL files, the currently LEGO CAD software coordinate system is
used, relative to a specified point on the part.
The list is far from complete.
3001 Brick 2 x 4
Level: 1
Stud at x = 0, y = 0, z = 1; Direction z = 1; Size x = 2, y = 4
Stud Inlet at x = 0, y = 0, z = 0; Direction z = 1; Size x = 2, y = 4
4733 Brick 1 x 1 with Studs on Sides
Level: 2
Hollow Stud at x = 0, y = 0, z = 1; Direction z = 1; Size x = 1, y = 1
Hollow Stud at x = -0.5, y = 0, z = 0.5; Direction x = -1; Size x = 1, y = 1
Hollow Stud at x = 0.5, y = 0, z = 0.5; Direction x = 1; Size x = 1, y = 1
Hollow Stud at x = 0, y = -0.5, z = 0.5; Direction y = -1; Size x = 1, y = 1
Hollow Stud at x = 0, y = 0.5, z = 0.5; Direction y = 1; Size x = 1, y = 1
Stud Inlet at x = 0, y = 0, z = 0; Direction z = 1; Size x = 1, y = 1
(Note that all side studs are pointing to the same direction where
they are located from the center of the brick.)
4070 Brick 1 x 1 with Headlight
Level: 2
Stud at x = 0, y = 0, z = 1; Direction z = 1; Size x = 1, y = 1
Stud Inlet at x = 0, y = 0, z = 0; Direction z = 1; Size x = 1, y = 1
Hollow Stud at x = -0.4, y = 0, z = 0.5; Direction x = -1; Size x = 1, y = 1
Stud Inlet at x = 0.4, y = 0, z = 0.5; Direction x = 1; Size x = 1, y = 1
(Note that the hollow stud is 0.1 units [estimated] closer to the
center than in the previous sample.)
6019 Plate 1 x 1 with Clip Horizontal
Level: 2
Stud at x = 0, y = 0, z = 1; Direction z = 1; Size x = 1, y = 1
Stud Inlet at x = 0, y = 0, z = 0; Direction z = 1; Size x = 1, y = 1
Minifig Hand at x = -1, y = 0, z = 0.5; Direction y = 1
Plate Edge at x = 0.5, y = 0, z = 0.5; Direction x = 1; Size y = 1
Plate Edge at x = 0, y = -0.5, z = 0.5; Direction y = -1; Size x = 1
Plate Edge at x = 0, y = 0.5, z = 0.5; Direction y = 1; Size x = 1
(Note that a Minifig Hand connector does not have a Size property.)
Appendix C: Additional Proposals
If a LEGO CAD software has been equipped with a full-fledged LCD
system, we can take further advantages from that. Some additional
thoughts follow in this appendix, to let you see what you didn't see
in previous chapters.
CABLES. Electric cables, fiber optic tubes, pneumatic tubes and any
kind of flexible equipment can be now easily modeled and handled. The
way is the following. We design two special parts for each kind of
cable, one for both ends and one for a middle particle. The middle
particle is short, its length may vary from some millimeters or less
to some centimeters or more, depending on how realistic we want to be.
The middle part can connect to another middle part or an end part; the
end part can connect to a middle part or a different LEGO part
suitable for the tube or cable.
When the user takes a cable,
he or she will be prompted for a length
and, optionally, for a "density". The density will specify the number
of middle parts used to build the cable. The connectors used to build
the cable are having a special property: even if the user turned the
respective toggle to make connected parts separate when moved, the
parts of cables do not separate. The user can move any part of the
cable, either an end or a middle part, and the LCD system will move
the neighboring parts together with it, as the connections require to
do so.
FINAL CONTROL. When a model is ready built, a user can't play with it
in current LEGO CAD softwares. With LCD system, they can. We mentioned
a list of movable connections found in the model, what the user can
view and give commands to connections. In this case, any part
connected to a moving part in a non-moving way will move together. But
we needn't stop here.
The user can create toolbars, as in several Windows applications,
and assign buttons to chosen movable connections, setting what
modification should happen by a click. Press a button and the door
opens. Press another one and the window closes.
Later, developers may add sliders or disks to toolbars what a user
can slide or rotate, and chosen connections slide or rotate along with
them. Cables can have a property telling if there is electric current
or pneumatic pressure in them; electric or pneumatic parts may have a
property telling if there is activity in them, and if yes, the
software can know what to do. Finally, a user turns a battery switch
on and the car wheels start rotating; and if there is a surface below
the car, that can be observed as a connection and the car will start
running on.
If these are realized all, the game will almost be perfect; however,
it is still hard to imagine that anybody would give up buying real
LEGO sets for the purpose of playing LEGO only in simulation. That is
the thing what is really perfect, not the virtual one.
COMPUTER PARTS. Electronical parts like the Technic Control Center or
the RCX would be harder to emulate, but even this is possible. People
are creating softwares to emulate home computers of the 1980s, and
they work; programs written originally for these home computers are
running well on emulators. An RCX emulator is undoubtedly outside the
task of a 3D CAD program development, but it is possible, and there
may be living a programmer somewhere who can create a software module
for it.
A Draft Idea for LEGO CAD Software Developers By: Láng Attila D. (LAD) and Kiss Attila Csongor (KACS)
|