Type: Basic DXF R12 entity.

Create a new attribute definition, you can use in the block definition.

You create an attribute definition, which acts as a placeholder for a text string that can vary each time you insert the block. You include the attribute definition when you create the block definition. Then each time you insert the block, you can create an new attribute from the attribute definition and add them to the block-reference.

After you define the attribute definition you can create a new Attrib and insert it into a block reference, you can just use the attdef.new_attrib() method and change all the default values preset from the ATTDEF object.

You rarely need to use any of the flags settings (Invisible, Constant, Verify, or Preset).

DXFEngine.attdef(tag, insert=(0., 0.), **kwargs)
  • text (str) – attribute default text
  • insert – insert point (xy- or xyz-tuple), z-axis is 0 by default
  • prompt (str) – prompt text, like “insert a value:”
  • tag (str) – attribute tag string
  • flags (int) – attribute flags, bit-coded, default=0
  • length (int) – field length ??? see dxf-documentation
  • height (float) – textheight in drawing units (default=1)
  • rotation (float) – text rotation (default=0) (all DXF angles in degrees)
  • oblique (float) – text oblique angle in degree, default=0
  • xscale (float) – width factor (default=1)
  • style (str) – textstyle (default=STANDARD)
  • mirror (int) – bit coded flags
  • halign (int) – horizontal justification type, LEFT, CENTER, RIGHT, ALIGN, FIT, BASELINE_MIDDLE (default LEFT)
  • valign (int) – vertical justification type, TOP, MIDDLE, BOTTOM, BASELINE (default BASELINE)
  • alignpoint – align point (xy- or xyz-tuple), z-axis is 0 by default, if the justification is anything other than BASELINE/LEFT, alignpoint specify the alignment point (or the second alignment point for ALIGN or FIT).


Flags Description
ATTRIB_IS_INVISIBLE Attribute is invisible (does not display)
ATTRIB_IS_CONST This is a constant Attribute
ATTRIB_REQUIRE_VERIFICATION Verification is required on input of this Attribute
ATTRIB_IS_PRESET Verification is required on input of this Attribute

Mirror Flags

Flags Description
dxfwrite.MIRROR_X Text is backward (mirrored in X)
dxfwrite.MIRROR_Y Text is upside down (mirrored in Y)

Common Keyword Arguments for all Basic DXF R12 Entities

keyword description
layer Layer name as string
linetype Linetype name as string, if not defined = BYLAYER
color as integer in range [1..255], 0 = BYBLOCK, 256 = BYLAYER
thickness Thickness as float
paper_space 0 = entity is in model_space, 1 = entity is in paper_space
extrusion_direction 3D Point as tuple(x, y, z) if extrusion direction is not parallel to the World Z axis



Create a new ATTRIB with attdef’s attributs as default values.

Parameters:kwargs – override the attdef default values.


from dxfwrite import DXFEngine as dxf
drawing = dxf.drawing('test.dxf')
block = dxf.block(name='BLOCK1')
attdef = dxf.attdef(insert=(.2, .2),
    text='test',  # default text
    prompt='input text:', # only important for interactive CAD systems
drawing.block.add(block) # add block definition to drawing
blockref = dxf.insert(blockname='BLOCK1', insert=(10, 10)) # create a block reference
# create a new attribute, given keywords override the default values from the attrib definition
attrib = attdef.new_attrib(height=0.18, text='TEST')
# add the attrib to the block reference, insert has the default value (.2, .2),
# and insert is relative to block insert point
blockref.add(attrib, relative=True)
drawing.add(blockref) # add block reference to drawing