Source code for pyrobopath.toolpath.path.visualization

from typing import Sequence
import numpy as np
import matplotlib.pyplot as plt

from pyrobopath.tools.utils import pairwise
from pyrobopath.toolpath.path import *


[docs] def visualize_path(paths: Sequence[Path], show=True, **kwargs): for p in paths: if isinstance(p, LinearSegment): plot_line(p, **kwargs) elif isinstance(p, CubicBSplineSegment): plot_bspline(p, False, **kwargs) else: plot_generic_curve(p, **kwargs) if show: plt.gca().set_aspect("equal") plt.show()
[docs] def plot_line(line: LinearSegment, **kwargs): s = line.start.t e = line.end.t plt.plot([s[0], e[0]], [s[1], e[1]], **kwargs)
[docs] def plot_bspline(bspline: CubicBSplineSegment, show_cp=False, **kwargs): plot_generic_curve(bspline, **kwargs) if show_cp: for s, e in pairwise(bspline.spline.spline.c): plt.plot([s[0], e[0]], [s[1], e[1]], linestyle="--", color="black")
[docs] def plot_generic_curve(path: Path, samples=100, **kwargs): uu = np.linspace(0.0, 1.0, samples) samples = np.array([path.sample(u).t for u in uu]) plt.plot(samples[:, 0], samples[:, 1], **kwargs)