LAYER

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, uses 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

First you have to create layers, assigning them names and properties such as color and linetype. Then you can assign those layers to other drawing entities. To assign a layer just use its name as string.

Create a layer:

drawing.add_layer(name)

is a shortcut for:

layer = DXFEngine.layer(name)
drawing.layers.add(layer)
DXFEngine.layer(name, **kwargs)
Parameters:
  • name (string) – layer name
  • flags (int) – standard flag values, bit-coded, default=0
  • color (int) – color number, negative if layer is off, default=1
  • linetype (string) – linetype name, default=”CONTINUOUS”

Flags

Flag Description
LAYER_FROZEN If set, layer is frozen
LAYER_FROZEN_BY_DEFAULT If set, layer is frozen by default in new Viewports
LAYER_LOCKED If set, layer is locked

Get Layer 'name' from Drawing:

layer = drawing.layers['name']
layer.off()
class Layer

Defines the layer properties. Get/set properties by the subscript operator [ ].

  • layer['name']
  • layer['flags'] (for status change see also special methods below)
  • layer['color']
  • layer['linetype']
Layer.on()
Layer.off()
Layer.freeze()
Layer.thaw()
Layer.lock()
Layer.unlock()

Example:

from dxfwrite import DXFEngine as dxf

drawing = dxf.drawing('drawing.dxf')
drawing.add_layer('LINES', color=3, linetype='DASHED')
line = dxf.line((1.2, 3.7), (5.5, 9.7), layer='LINES')
drawing.add(line)
drawing.save()