def traces(self): t = [] for p1, p2 in zip(self.points[:-1], self.points[1:]): d = sqrt((p1.x - p2.x)**2 + (p1.y - p2.y)**2) if p2 != self.points[-1]: d += self.width/2 a = atan2(p2.y - p1.y, p2.x - p1.x) r = s2d.rectangle(0, d, -self.width/2, self.width/2) t.append(s2d.move(s2d.rotate(r, degrees(a)), p1.x, p1.y)) return reduce(operator.add, t)
def pads(self): pads = reduce(operator.add, [p.pad for p in self.pins]) return s2d.move(s2d.rotate(pads, self.rot), self.x, self.y)