From d06eba585f5402cd63b8af52c062f5bf6518424d Mon Sep 17 00:00:00 2001 From: jaseg Date: Mon, 15 Dec 2025 22:56:26 +0100 Subject: [PATCH] Fix arc approximation Our code doesn't work in the general case, it expects an already arc-like input. Thus, disable it everywhere except when rendering circular coils. --- src/kicoil/geometry.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/kicoil/geometry.py b/src/kicoil/geometry.py index 23c27de..7d17d55 100644 --- a/src/kicoil/geometry.py +++ b/src/kicoil/geometry.py @@ -526,22 +526,19 @@ class PlanarInductor(): ref_0, ref_n = angle_refs_layer0[0], angle_refs_layer0[-1] else: ref_0, ref_n = None, None - try: - if not self.approximate_arcs: - raise ValueError() + + if self.approximate_arcs and isinstance(self.shape, CircleShape): footprint.arcs.extend(arc_approximate(points_layer0, self.trace_width, self.layer_pair[0], arc_tolerance)) - except ValueError: + else: footprint.lines.extend(kicad.make_line(*p1, *p2, self.trace_width, self.layer_pair[0]) for p1, p2 in zip(points_layer0, points_layer0[1:])) if self.layers > 1: # Handle the returning arm on the bottom layer points_layer1, _, angle_refs_layer1 = self.shape.compute_spiral(a1=end_angle, a2=fold_angle, fn=circle_segments) points_layer1 = points_layer1[::-1] - try: - if not self.approximate_arcs: - raise ValueError() + if self.approximate_arcs and isinstance(self.shape, CircleShape): footprint.arcs.extend(arc_approximate(points_layer1, self.trace_width, self.layer_pair[1], arc_tolerance)) - except ValueError: + else: footprint.lines.extend(kicad.make_line(*p1, *p2, self.trace_width, self.layer_pair[1]) for p1, p2 in zip(points_layer1, points_layer1[1:])) else: