Skip to content
Snippets Groups Projects

Output2d

Merged mehtank requested to merge mehtank/rocolib:output2d into v0.3
Compare and
4 files
+ 61
67
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -107,8 +107,30 @@ class Drawing:
svg = svgwrite.Drawing(None,
size=('%fmm' % dx, '%fmm' % dy),
viewBox=('%f %f %f %f' % (minx, miny, dx, dy)))
lines = {}
for e in list(self.edges.items()):
e[1].toDrawing(svg, e[0] if labels else "", mode)
try:
pts, kwargs = e[1].toDrawing(svg, e[0] if labels else "", mode, drawLine=False)
kw = "".join((f"{k}{v}" for k,v in sorted(kwargs.items())))
lines[kw] = lines.get(kw, []) + [(pts, kwargs)]
except TypeError:
pass
for line in lines.values():
pts = [list(x[0]) for x in line]
kwargs = line[0][1]
lp = len(pts)
for j, pt2 in enumerate(reversed(pts)):
for i, pt1 in enumerate(pts):
start = pt1[-1]
end = pt2[0]
dist = (start[0]-end[0])**2 + (start[1]-end[1])**2
if dist<1e-2 and pt2 != pt1:
pt1.extend(pt2[1:])
pts.pop(lp-j-1)
break
kwargs["style"] = "fill:none;" + kwargs.get("style", "")
for pt in pts:
svg.add(svg.polyline(pt, **kwargs))
svg.write(fp, pretty=True)
def points(self):