Files
stepanalyser/.venv/lib/python3.12/site-packages/ezdxf/enums.py
Christian Anetzberger a197de9456 initial
2026-01-22 20:23:51 +01:00

254 lines
7.1 KiB
Python

# Copyright (c) 2021, Manfred Moitzi
# License: MIT License
from enum import IntEnum, IntFlag, Enum, auto
from ezdxf.lldxf import const
class TextHAlign(IntEnum):
"""Enumeration for DXF attribute: :attr:`ezdxf.entities.Text.dxf.halign`"""
LEFT = const.LEFT
CENTER = const.CENTER
RIGHT = const.RIGHT
ALIGNED = const.ALIGNED
MIDDLE = 4
FIT = const.FIT
class TextVAlign(IntEnum):
"""Enumeration for DXF attribute: :attr:`ezdxf.entities.Text.dxf.valign`"""
BASELINE = const.BASELINE
BOTTOM = const.BOTTOM
MIDDLE = const.MIDDLE
TOP = const.TOP
# noinspection PyArgumentList
class TextEntityAlignment(Enum):
"""Text alignment enum for the :class:`~ezdxf.entities.Text`,
:class:`~ezdxf.entities.Attrib` and :class:`~ezdxf.entities.AttDef`
entities.
"""
LEFT = auto()
CENTER = auto()
RIGHT = auto()
ALIGNED = auto()
MIDDLE = auto()
FIT = auto()
BOTTOM_LEFT = auto()
BOTTOM_CENTER = auto()
BOTTOM_RIGHT = auto()
MIDDLE_LEFT = auto()
MIDDLE_CENTER = auto()
MIDDLE_RIGHT = auto()
TOP_LEFT = auto()
TOP_CENTER = auto()
TOP_RIGHT = auto()
MAP_TEXT_ENUM_TO_ALIGN_FLAGS = {
TextEntityAlignment.LEFT: (TextHAlign.LEFT, TextVAlign.BASELINE),
TextEntityAlignment.CENTER: (TextHAlign.CENTER, TextVAlign.BASELINE),
TextEntityAlignment.RIGHT: (TextHAlign.RIGHT, TextVAlign.BASELINE),
TextEntityAlignment.ALIGNED: (TextHAlign.ALIGNED, TextVAlign.BASELINE),
TextEntityAlignment.MIDDLE: (TextHAlign.MIDDLE, TextVAlign.BASELINE),
TextEntityAlignment.FIT: (TextHAlign.FIT, TextVAlign.BASELINE),
TextEntityAlignment.BOTTOM_LEFT: (TextHAlign.LEFT, TextVAlign.BOTTOM),
TextEntityAlignment.BOTTOM_CENTER: (TextHAlign.CENTER, TextVAlign.BOTTOM),
TextEntityAlignment.BOTTOM_RIGHT: (TextHAlign.RIGHT, TextVAlign.BOTTOM),
TextEntityAlignment.MIDDLE_LEFT: (TextHAlign.LEFT, TextVAlign.MIDDLE),
TextEntityAlignment.MIDDLE_CENTER: (TextHAlign.CENTER, TextVAlign.MIDDLE),
TextEntityAlignment.MIDDLE_RIGHT: (TextHAlign.RIGHT, TextVAlign.MIDDLE),
TextEntityAlignment.TOP_LEFT: (TextHAlign.LEFT, TextVAlign.TOP),
TextEntityAlignment.TOP_CENTER: (TextHAlign.CENTER, TextVAlign.TOP),
TextEntityAlignment.TOP_RIGHT: (TextHAlign.RIGHT, TextVAlign.TOP),
}
MAP_TEXT_ALIGN_FLAGS_TO_ENUM = dict(
(flags, enum) for enum, flags in MAP_TEXT_ENUM_TO_ALIGN_FLAGS.items()
)
# Used by legacy add-ons MText and Table!
MAP_STRING_ALIGN_TO_FLAGS = {
"LEFT": (TextHAlign.LEFT, TextVAlign.BASELINE),
"CENTER": (TextHAlign.CENTER, TextVAlign.BASELINE),
"RIGHT": (TextHAlign.RIGHT, TextVAlign.BASELINE),
"ALIGNED": (TextHAlign.ALIGNED, TextVAlign.BASELINE),
"MIDDLE": (TextHAlign.MIDDLE, TextVAlign.BASELINE),
"FIT": (TextHAlign.FIT, TextVAlign.BASELINE),
"BOTTOM_LEFT": (TextHAlign.LEFT, TextVAlign.BOTTOM),
"BOTTOM_CENTER": (TextHAlign.CENTER, TextVAlign.BOTTOM),
"BOTTOM_RIGHT": (TextHAlign.RIGHT, TextVAlign.BOTTOM),
"MIDDLE_LEFT": (TextHAlign.LEFT, TextVAlign.MIDDLE),
"MIDDLE_CENTER": (TextHAlign.CENTER, TextVAlign.MIDDLE),
"MIDDLE_RIGHT": (TextHAlign.RIGHT, TextVAlign.MIDDLE),
"TOP_LEFT": (TextHAlign.LEFT, TextVAlign.TOP),
"TOP_CENTER": (TextHAlign.CENTER, TextVAlign.TOP),
"TOP_RIGHT": (TextHAlign.RIGHT, TextVAlign.TOP),
}
MAP_FLAGS_TO_STRING_ALIGN = dict(
(flags, name) for name, flags in MAP_STRING_ALIGN_TO_FLAGS.items()
)
class MTextEntityAlignment(IntEnum):
"""Text alignment enum for the :class:`~ezdxf.entities.MText` entity."""
TOP_LEFT = const.MTEXT_TOP_LEFT
TOP_CENTER = const.MTEXT_TOP_CENTER
TOP_RIGHT = const.MTEXT_TOP_RIGHT
MIDDLE_LEFT = const.MTEXT_MIDDLE_LEFT
MIDDLE_CENTER = const.MTEXT_MIDDLE_CENTER
MIDDLE_RIGHT = const.MTEXT_MIDDLE_RIGHT
BOTTOM_LEFT = const.MTEXT_BOTTOM_LEFT
BOTTOM_CENTER = const.MTEXT_BOTTOM_CENTER
BOTTOM_RIGHT = const.MTEXT_BOTTOM_RIGHT
MAP_MTEXT_ALIGN_TO_FLAGS = {
MTextEntityAlignment.TOP_LEFT: (TextHAlign.LEFT, TextVAlign.TOP),
MTextEntityAlignment.TOP_CENTER: (TextHAlign.CENTER, TextVAlign.TOP),
MTextEntityAlignment.TOP_RIGHT: (TextHAlign.RIGHT, TextVAlign.TOP),
MTextEntityAlignment.MIDDLE_LEFT: (TextHAlign.LEFT, TextVAlign.MIDDLE),
MTextEntityAlignment.MIDDLE_CENTER: (TextHAlign.CENTER, TextVAlign.MIDDLE),
MTextEntityAlignment.MIDDLE_RIGHT: (TextHAlign.RIGHT, TextVAlign.MIDDLE),
MTextEntityAlignment.BOTTOM_LEFT: (TextHAlign.LEFT, TextVAlign.BOTTOM),
MTextEntityAlignment.BOTTOM_CENTER: (TextHAlign.CENTER, TextVAlign.BOTTOM),
MTextEntityAlignment.BOTTOM_RIGHT: (TextHAlign.RIGHT, TextVAlign.BOTTOM),
}
class MTextParagraphAlignment(IntEnum):
DEFAULT = 0
LEFT = 1
RIGHT = 2
CENTER = 3
JUSTIFIED = 4
DISTRIBUTED = 5
class MTextFlowDirection(IntEnum):
LEFT_TO_RIGHT = const.MTEXT_LEFT_TO_RIGHT
TOP_TO_BOTTOM = const.MTEXT_TOP_TO_BOTTOM
BY_STYLE = const.MTEXT_BY_STYLE
class MTextLineAlignment(IntEnum): # exclusive state
BOTTOM = 0
MIDDLE = 1
TOP = 2
class MTextStroke(IntFlag):
"""Combination of flags is supported: UNDERLINE + STRIKE_THROUGH"""
UNDERLINE = 1
STRIKE_THROUGH = 2
OVERLINE = 4
class MTextLineSpacing(IntEnum):
AT_LEAST = const.MTEXT_AT_LEAST
EXACT = const.MTEXT_EXACT
class MTextBackgroundColor(IntEnum):
OFF = const.MTEXT_BG_OFF
COLOR = const.MTEXT_BG_COLOR
WINDOW = const.MTEXT_BG_WINDOW_COLOR
CANVAS = const.MTEXT_BG_CANVAS_COLOR
class InsertUnits(IntEnum):
Unitless = 0
Inches = 1
Feet = 2
Miles = 3
Millimeters = 4
Centimeters = 5
Meters = 6
Kilometers = 7
Microinches = 8
Mils = 9
Yards = 10
Angstroms = 11
Nanometers = 12
Microns = 13
Decimeters = 14
Decameters = 15
Hectometers = 16
Gigameters = 17
AstronomicalUnits = 18
Lightyears = 19
Parsecs = 20
USSurveyFeet = 21
USSurveyInch = 22
USSurveyYard = 23
USSurveyMile = 24
class Measurement(IntEnum):
Imperial = 0
Metric = 1
class LengthUnits(IntEnum):
Scientific = 1
Decimal = 2
Engineering = 3
Architectural = 4
Fractional = 5
class AngularUnits(IntEnum):
DecimalDegrees = 0
DegreesMinutesSeconds = 1
Grad = 2
Radians = 3
class SortEntities(IntFlag):
DISABLE = 0
SELECTION = 1 # 1 = Sorts for object selection
SNAP = 2 # 2 = Sorts for object snap
REDRAW = 4 # 4 = Sorts for redraws; obsolete
MSLIDE = 8 # 8 = Sorts for MSLIDE command slide creation; obsolete
REGEN = 16 # 16 = Sorts for REGEN commands
PLOT = 32 # 32 = Sorts for plotting
POSTSCRIPT = 64 # 64 = Sorts for PostScript output; obsolete
class ACI(IntEnum):
"""AutoCAD Color Index"""
BYBLOCK = 0
BYLAYER = 256
BYOBJECT = 257
RED = 1
YELLOW = 2
GREEN = 3
CYAN = 4
BLUE = 5
MAGENTA = 6
BLACK = 7
WHITE = 7
GRAY = 8
LIGHT_GRAY = 9
class EndCaps(IntEnum):
""" Lineweight end caps setting for new objects. """
NONE = 0
ROUND = 1
ANGLE = 2
SQUARE = 3
class JoinStyle(IntEnum):
""" Lineweight joint setting for new objects. """
NONE = 0
ROUND = 1
ANGLE = 2
FLAT = 3