GfxAttribs

The ezdxf.gfxattribs module provides the GfxAttribs class to create valid attribute dictionaries for the most often used DXF attributes supported by all graphical DXF entities. The advantage of using this class is auto-completion support by IDEs and an instant validation of the attribute values.

import ezdxf
from ezdxf.gfxattribs import GfxAttribs

doc = ezdxf.new()
msp = doc.modelspace()

attribs = GfxAttribs(layer="MyLayer", color=ezdxf.colors.RED)
line = msp.add_line((0, 0), (1, 0), dxfattribs=attribs)
circle = msp.add_circle((0, 0), radius=1.0, dxfattribs=attribs)

# Update DXF attributes of existing entities:
attribs = GfxAttribs(layer="MyLayer2", color=ezdxf.colors.BLUE)

# Convert GfxAttribs() to dict(), but this method cannot reset
# attributes to the default values like setting layer to "0".
line.update_dxf_attribs(dict(attribs))

# Using GfxAttribs.asdict(default_values=True), can reset attributes to the
# default values like setting layer to "0", except for true_color and
# transparency, which do not have default values, their absence is the
# default value.
circle.update_dxf_attribs(attribs.asdict(default_values=True))

# Remove true_color and transparency by assigning None
attribs.transparency = None  # reset to transparency by layer!
attribs.rgb = None

Validation features:

  • layer - string which can not contain certain characters: <>/\":;?*=`

  • color - AutoCAD Color Index (ACI) value as integer in the range from 0 to 257

  • rgb - true color value as (red, green, blue) tuple, all channel values as integer values in the range from 0 to 255

  • linetype - string which can not contain certain characters: <>/\":;?*=`, does not check if the linetype exists

  • lineweight - integer value in the range from 0 to 211, see Lineweights for valid values

  • transparency - float value in the range from 0.0 to 1.0 and -1.0 for transparency by block

  • ltscale - float value > 0.0

class ezdxf.gfxattribs.GfxAttribs(*, layer: str = DEFAULT_LAYER, color: int = DEFAULT_ACI_COLOR, rgb: RGB | None = None, linetype: str = DEFAULT_LINETYPE, lineweight: int = DEFAULT_LINEWEIGHT, transparency: float | None = None, ltscale: float = DEFAULT_LTSCALE)

Represents often used DXF attributes of graphical entities.

Parameters:
  • layer (str) – layer name as string

  • color (int) – AutoCAD Color Index (ACI) color value as integer

  • rgb – RGB true color (red, green, blue) tuple, each channel value in the range from 0 to 255, None for not set

  • linetype (str) – linetype name, does not check if the linetype exist!

  • lineweight (int) – see Lineweights documentation for valid values

  • transparency (float) – transparency value in the range from 0.0 to 1.0, where 0.0 is opaque and 1.0 if fully transparent, -1.0 for transparency by block, None for transparency by layer

  • ltscale (float) – linetype scaling factor > 0.0, default factor is 1.0

Raises:

DXFValueError – invalid attribute value

property layer: str

layer name

property color: int

AutoCAD Color Index (ACI) color value

property rgb: RGB | None

true color value as (red, green, blue) tuple, None for not set

property linetype: str

linetype name

property lineweight: int
property transparency: float | None

transparency value from 0.0 for opaque to 1.0 is fully transparent, -1.0 is for transparency by block and None if for transparency by layer

property ltscale: float

linetype scaling factor

__str__() str

Return str(self).

__repr__() str

Return repr(self).

__iter__() Iterator[tuple[str, Any]]

Returns iter(self).

asdict(default_values=False) dict[str, Any]

Returns the DXF attributes as dict, returns also the default values if argument default_values is True. The true_color and transparency attributes do not have default values, the absence of these attributes is the default value.

items(default_values=False) list[tuple[str, Any]]

Returns the DXF attributes as list of name, value pairs, returns also the default values if argument default_values is True. The true_color and transparency attributes do not have default values, the absence of these attributes is the default value.

classmethod load_from_header(doc: Drawing) GfxAttribs

Load default DXF attributes from the HEADER section.

There is no default true color value and the default transparency is not stored in the HEADER section.

Loads following header variables:

  • $CLAYER - current layer name

  • $CECOLOR - current ACI color

  • $CELTYPE - current linetype name

  • $CELWEIGHT - current lineweight

  • $CELTSCALE - current linetype scaling factor

write_to_header(doc: Drawing) None

Write DXF attributes as default values to the HEADER section.

Writes following header variables:

  • $CLAYER - current layer name, if a layer table entry exist in doc

  • $CECOLOR - current ACI color

  • $CELTYPE - current linetype name, if a linetype table entry exist in doc

  • $CELWEIGHT - current lineweight

  • $CELTSCALE - current linetype scaling factor

classmethod from_entity(entity: DXFEntity) GfxAttribs

Get the graphical attributes of an entity as GfxAttribs object.

classmethod from_dict(d: dict[str, Any]) GfxAttribs

Construct GfxAttribs from a dictionary of raw DXF values.

Supported attributes are:

  • layer: layer name as string

  • color: AutoCAD Color Index (ACI) value as int

  • true_color: raw DXF integer value for RGB colors

  • rgb: RGB tuple of int or None

  • linetype: linetype name as string

  • lineweight: lineweight as int, see basic concept of Lineweights

  • transparency: raw DXF integer value of transparency or a float in the range from 0.0 to 1.0

  • ltscale: linetype scaling factor as float