# Path: op_cutter/profiles/_types.py
# class SectionSize:
#     __slots__ = "x", "y", "z1", "z2"
# 
#     def __init__(self, x: float, y: float, z1: float, z2: float) -> None:
#         self.x = x
#         self.y = y
#         self.z1 = z1
#         self.z2 = z2
# 
#     @property
#     def xyz(self):
#         return self.x, self.y, self.z1


from math import tau, sin, cos
from bmesh.types import BMesh, BMVert
from ._types import SectionSize
#  Copyright (C) 2015-2022  Mikhail Rachinskiy
#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
# ##### END GPL LICENSE BLOCK #####






class Section:
    __slots__ = (
        "detalization",
    )

    def __init__(self, operator) -> None:
        self.detalization = operator.detalization


# Path: op_cutter/profiles/_types.py
# class SectionSize:
#     __slots__ = "x", "y", "z1", "z2"
# 
#     def __init__(self, x: float, y: float, z1: float, z2: float) -> None:
#         self.x = x
#         self.y = y
#         self.z1 = z1
#         self.z2 = z2
# 
#     @property
#     def xyz(self):
#         return self.x, self.y, self.z1


# Path: op_cutter/profiles/_round.py
from math import tau, sin, cos
from bmesh.types import BMesh, BMVert
from ._types import SectionSize

#  Copyright (C) 2015-2022  Mikhail Rachinskiy
#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
# ##### END GPL LICENSE BLOCK #####






class Section:
    __slots__ = (
        "detalization",
    )

    def __init__(self, operator) -> None:
        self.detalization = operator.detalization


    def add(self, bm: BMesh, size: SectionSize) -> tuple[list[BMVert], list[BMVert]]: