import re


def load_gcode_vertices(path):
    vertices = []

    x = 0
    y = 0
    z = 0

    with open(path, "r", encoding="utf-8", errors="ignore") as f:
        for line in f:
            line = line.strip()

            if not line:
                continue

            if line.startswith("G0") or line.startswith("G1"):
                old_x = x
                old_y = y
                old_z = z

                mx = re.search(r"X([-0-9.]+)", line)
                my = re.search(r"Y([-0-9.]+)", line)
                mz = re.search(r"Z([-0-9.]+)", line)

                if mx:
                    x = float(mx.group(1))

                if my:
                    y = float(my.group(1))

                if mz:
                    z = float(mz.group(1))

                vertices.append({
                    "x1": old_x,
                    "y1": old_y,
                    "z1": old_z,
                    "x2": x,
                    "y2": y,
                    "z2": z,
                })

    return vertices