refactor: excel parse

This commit is contained in:
Blizzard
2026-04-16 10:01:11 +08:00
parent 680ecc320f
commit f62f95ec02
7941 changed files with 2899112 additions and 0 deletions
@@ -0,0 +1,118 @@
# Copyright (c) 2018-2022, Manfred Moitzi
# License: MIT License
from __future__ import annotations
from typing import TYPE_CHECKING, Optional
from ezdxf.math import UCS
from ezdxf.lldxf.const import DXFValueError
from ezdxf.entities.dimstyleoverride import DimStyleOverride
from .dim_base import BaseDimensionRenderer
from .dim_curved import AngularDimension, Angular3PDimension, ArcLengthDimension
from .dim_diameter import DiameterDimension
from .dim_linear import LinearDimension
from .dim_ordinate import OrdinateDimension
from .dim_radius import RadiusDimension
if TYPE_CHECKING:
from ezdxf.entities import Dimension
class DimensionRenderer:
def dispatch(
self, override: DimStyleOverride, ucs: Optional[UCS] = None
) -> BaseDimensionRenderer:
dimension = override.dimension
dim_type = dimension.dimtype
dxf_type = dimension.dxftype()
if dxf_type == "ARC_DIMENSION":
return self.arc_length(dimension, ucs, override)
elif dxf_type == "LARGE_RADIAL_DIMENSION":
return self.large_radial(dimension, ucs, override)
elif dim_type in (0, 1):
return self.linear(dimension, ucs, override)
elif dim_type == 2:
return self.angular(dimension, ucs, override)
elif dim_type == 3:
return self.diameter(dimension, ucs, override)
elif dim_type == 4:
return self.radius(dimension, ucs, override)
elif dim_type == 5:
return self.angular3p(dimension, ucs, override)
elif dim_type == 6:
return self.ordinate(dimension, ucs, override)
else:
raise DXFValueError(f"Unknown DIMENSION type: {dim_type}")
def linear(
self,
dimension: Dimension,
ucs: Optional[UCS] = None,
override: Optional[DimStyleOverride] = None,
):
"""Call renderer for linear dimension lines: horizontal, vertical and rotated"""
return LinearDimension(dimension, ucs, override)
def angular(
self,
dimension: Dimension,
ucs: Optional[UCS] = None,
override: Optional[DimStyleOverride] = None,
):
"""Call renderer for angular dimension defined by two lines."""
return AngularDimension(dimension, ucs, override)
def diameter(
self,
dimension: Dimension,
ucs: Optional[UCS] = None,
override: Optional[DimStyleOverride] = None,
):
"""Call renderer for diameter dimension"""
return DiameterDimension(dimension, ucs, override)
def radius(
self,
dimension: Dimension,
ucs: Optional[UCS] = None,
override: Optional[DimStyleOverride] = None,
):
"""Call renderer for radius dimension"""
return RadiusDimension(dimension, ucs, override)
def large_radial(
self,
dimension: Dimension,
ucs: Optional[UCS] = None,
override: Optional[DimStyleOverride] = None,
):
"""Call renderer for large radial dimension"""
raise NotImplementedError()
def angular3p(
self,
dimension: Dimension,
ucs: Optional[UCS] = None,
override: Optional[DimStyleOverride] = None,
):
"""Call renderer for angular dimension defined by three points."""
return Angular3PDimension(dimension, ucs, override)
def ordinate(
self,
dimension: Dimension,
ucs: Optional[UCS] = None,
override: Optional[DimStyleOverride] = None,
):
"""Call renderer for ordinate dimension."""
return OrdinateDimension(dimension, ucs, override)
def arc_length(
self,
dimension: Dimension,
ucs: Optional[UCS] = None,
override: Optional[DimStyleOverride] = None,
):
"""Call renderer for arc length dimension."""
return ArcLengthDimension(dimension, ucs, override)