# 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 collections.abc import Iterator
from bmesh.types import BMesh, BMVert
from ...lib import mesh
from ._types import SectionSize
import bmesh
#  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 #####






def _add_tri(bm: BMesh, x: float, y: float, z: float) -> list[BMVert]:
    return [
        bm.verts.new((  x,  y / 3.0, z)),
        bm.verts.new(( -x,  y / 3.0, z)),
        bm.verts.new((0.0, -y / 1.5, z)),
    ]



# 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/_triangle.py
from collections.abc import Iterator
from bmesh.types import BMesh, BMVert
from ...lib import mesh
from ._types import SectionSize
import bmesh

#  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 #####






def _add_tri(bm: BMesh, x: float, y: float, z: float) -> list[BMVert]:
    return [
        bm.verts.new((  x,  y / 3.0, z)),
        bm.verts.new(( -x,  y / 3.0, z)),
        bm.verts.new((0.0, -y / 1.5, z)),
    ]



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