Every object has a layer as one of its properties. You may be familiar with layers - independent drawing spaces that stack on top of each other to create an overall image - from using drawing programs. Most CAD programs use layers as the primary organizing principle for all the objects that you draw. You use layers to organize objects into logical groups of things that belong together; for example, walls, furniture, and text notes usually belong on three separate layers, for a couple of reasons:
Layers give you a way to turn groups of objects on and off - both on the screen and on the plot.
Layers provide the most efficient way of controlling object color and linetype
Create a layer table entry
assign the layer properties such as color and linetype. Then assign those layers
to other DXF entities by setting the DXF attribute
to the layer name as string.
The DXF format do not require a layer table entry for a layer. A layer
without a layer table entry has the default linetype
'Continuous', a default
7 and a lineweight of
-3 which represents the default
lineweight of 0.25mm in most circumstances.
The advantage of assigning properties to a layer is that entities
can inherit this properties from the layer by using the string
256 as color or
-1 as lineweight, all these values
are the default values for new entities. DXF version R2004 and later also
support inheriting true_color and transparency attributes from a layer.
The layer status is important for the visibility and the ability to select and edit DXF entities on that layer in CAD applications. Ezdxf does not care about the visual representation and works at the level of entity spaces and the entity database and therefore all the layer states documented below are ignored by ezdxf. This means if you iterate an entity space like the modelspace or the entity database you will get all entities from that entity space regardless the layer status.
ON: the layer is visible, entities on that layer are visible, selectable and editable
OFF: the layer is not visible, entities on that layer are not visible, not selectable and not editable
FROZEN: the layer is not visible, entities on that layer are not visible, not selectable and not editable, very similar to the OFF status but layers can be frozen individually in VIEWPORTS and freezing layers may speed up some commands in CAD applications like ZOOM, PAN or REGEN.
LOCKED: the layer is visible, entities on that layer are visible but not selectable and not editable
Deleting a layer is not as simple as it might seem, especially if you are used to use a CAD application like AutoCAD. There is no directory of locations where layers can be used and references to layers can occur even in third-party data. Deleting the layer table entry removes only the default attributes of that layer and does not delete any layer references automatically. And because a layer can exist without a layer table entry, the layer exist as long as at least one layer reference to the layer exist.
Renaming a layer is also problematic because the DXF format stores the layer references in most cases as text strings, so renaming the layer table entry just creates a new layer and all entities which still have a reference to the old layer now inherit their attributes from an undefined layer table entry with default settings.
Most of the layer properties can be overriden for each
Viewport entity individually and this overrides are
stored in layer table entry referenced by the handle of the VIEWPORT entity.
In contrast the frozen status of layers is store in the VIEWPORT entity.