From 60674ab5b3a76e325336905586b35916660e4472 Mon Sep 17 00:00:00 2001 From: jaseg Date: Thu, 20 Jul 2023 16:56:20 +0200 Subject: Fix line rendering --- gerbonara/cad/kicad/base_types.py | 5 ++--- gerbonara/cad/kicad/schematic.py | 8 ++++---- gerbonara/cad/kicad/symbols.py | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/gerbonara/cad/kicad/base_types.py b/gerbonara/cad/kicad/base_types.py index 263f19d..9acef7b 100644 --- a/gerbonara/cad/kicad/base_types.py +++ b/gerbonara/cad/kicad/base_types.py @@ -96,7 +96,7 @@ class Stroke: class Dasher: def __init__(self, obj): if obj.stroke: - w, t = obj.stroke.width, obj.stroke.type + w, t = obj.stroke.width or 0.254, obj.stroke.type else: w = obj.width or 0 t = Atom.solid @@ -150,7 +150,6 @@ class Dasher: for length, stroked in cycle(zip(self.pattern, cycle([True, False]))): length = max(1e-12, length) - import sys while length > 0: if segment_remaining == 0: try: @@ -312,7 +311,7 @@ class TextMixin: def to_svg(self, color='black'): d = ' '.join(self.svg_path_data()) - yield Tag('path', d=d, fill='none', stroke=color, stroke_width=f'{self.line_width:.3f}') + yield Tag('path', d=d, fill='none', stroke=color, stroke_width=f'{self.line_width:.3f}', stroke_linecap='round') def render(self, variables={}): if not self.effects or self.effects.hide or not self.effects.font: diff --git a/gerbonara/cad/kicad/schematic.py b/gerbonara/cad/kicad/schematic.py index 846df2a..1a1af9d 100644 --- a/gerbonara/cad/kicad/schematic.py +++ b/gerbonara/cad/kicad/schematic.py @@ -110,10 +110,10 @@ def _polyline_svg(self, default_color): if len(self.points.xy) < 2: warnings.warn(f'Schematic {type(self)} with less than two points') - x0, y0, *rest = self.points.xy - da.move(x0, y0) - for xn, yn in rest: - da.line(xn, yn) + p0, *rest = self.points.xy + da.move(p0.x, p0.y) + for pn in rest: + da.line(pn.x, pn.y) return da.svg(stroke=self.stroke.svg_color(default_color)) diff --git a/gerbonara/cad/kicad/symbols.py b/gerbonara/cad/kicad/symbols.py index b21b94e..6193b57 100644 --- a/gerbonara/cad/kicad/symbols.py +++ b/gerbonara/cad/kicad/symbols.py @@ -99,7 +99,7 @@ class Pin: x1, y1 = self.at.x, self.at.y x2, y2 = x1+self.length, y1 xform = {'transform': f'rotate({-self.at.rotation} {x1} {y1})'} - style = {'stroke_width': 0.254, 'stroke': colorscheme.lines} + style = {'stroke_width': 0.254, 'stroke': colorscheme.lines, 'stroke_linecap': 'round'} yield Tag('path', **xform, **style, d=f'M {x1:.6f} {y1:.6f} L {x2:.6f} {y2:.6f}') @@ -171,7 +171,7 @@ class Pin: x, y = x+self.at.x, y+self.at.y points.append(f'{x:.3f} {y:.3f}') d.append('M '+ ' L '.join(points) + ' ') - yield Tag('path', d=d, fill='none', stroke=colorscheme.text, stroke_width='0.254') + yield Tag('path', d=d, fill='none', stroke=colorscheme.text, stroke_width='0.254', stroke_linecap='round') @sexp_type('fill') -- cgit