# Part vs Assembly¶

An Assembly is also a Component.

A Part is an atomic component; it cannot be disassembled, and it is typically made of a single material.

An Assembly is a collection of Components.

An Assembly would typically hold itself together, as an intermedite step of construction.

Tip

Part is to Assembly as file is to folder.

Part is not to be confused with a primative (like a cube, sphere, or cylinder to name a few), nor is it to be confused with constructive geometry

For a detailed example of a hierarchy, have a look at Make your own Assembly.

## Constructive Analogy¶

If you were to make something from scratch, from raw materials, each Part is each individual object after material processing (such as forging, printing, or milling, just to name a few).

Each Assembly would be a component that has reached an intermediate step of assembly. Such as a motor, or a PCB. The final thing being constructed is also an Assembly

Or put another way…

## Destructive Analogy¶

If you had a thing with you, and you pulled it apart as much as possible (this may involve unscrewing, prying apart, de-soldering, just to name a few).

Each time you pull out a smaller thing:

When you have recursively disassembled everything, you will only be left with Part objects.

## Exceptions to the rule¶

Just like any other rule, there are exceptions:

For example, an SD Card has many components inside it, but since it can be assumed that it won’t be pulled apart, or need to be constructed, an SD Card will most likely be represented by a single Part.

Conversely, a sticker (like a branding sticker) cannot be disassembled. But visually you may want its orientation to be recognisable, or you just want it to render properly. This is where a Part is limited, because it can only be one color. So the sticker may be 2 Part instances in an Assembly, one for the backing, and one for the text, or logo.

## Design¶

A well designed Assembly is something that can be used in others’ creations.

That sentiment does not only apply to the highest level Assembly, but also lower level Assembly classes used to create the high level object.

Consider how others may want to use your Assembly, and empower the class with the tools necessary to make their job easy.

More discussion on this in Make your own Assembly.