summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjaseg <git@jaseg.de>2023-07-20 16:56:20 +0200
committerjaseg <git@jaseg.de>2023-07-20 16:56:20 +0200
commit60674ab5b3a76e325336905586b35916660e4472 (patch)
tree88a1ae6de1d6c6f2b6ed5a5106a1e2401d258b5d
parentbdbdf7f58607bb98999e17ace8a743267a06cd9d (diff)
downloadgerbonara-60674ab5b3a76e325336905586b35916660e4472.tar.gz
gerbonara-60674ab5b3a76e325336905586b35916660e4472.tar.bz2
gerbonara-60674ab5b3a76e325336905586b35916660e4472.zip
Fix line rendering
-rw-r--r--gerbonara/cad/kicad/base_types.py5
-rw-r--r--gerbonara/cad/kicad/schematic.py8
-rw-r--r--gerbonara/cad/kicad/symbols.py4
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')