GfxAttribs

New in version 0.18.

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 = '0', color: int = 256, rgb: Optional[Tuple[int, int, int]] = None, linetype: str = 'ByLayer', lineweight: int = -1, transparency: Optional[float] = None, ltscale: float = 1.0)

Represents often used DXF attributes of graphical entities.

New in version 0.18.

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 value > 0.0, default value is 1.0
Raises:

DXFValueError – invalid attribute value

__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.