Layers¶
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 Layer
by Drawing.layers.add()
,
assign the layer properties such as color and linetype. Then assign those layers
to other DXF entities by setting the DXF attribute layer
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
color of 7
and a lineweight of -3
which represents the default
lineweight of 0.25mm in most circumstances.
Layer Properties¶
The advantage of assigning properties to a layer is that entities
can inherit this properties from the layer by using the string 'BYLAYER'
as
linetype 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.
Layer Status¶
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 Layers¶
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 Layers¶
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.
Viewport Overrides¶
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.
See also
Autodesk Knowledge Network: About Layers
BricsCAD Help Center: Working with Layers