def recompute(self): path = Sketch.CreatePath() newpaths = [path] h = self.h path.AppendLine((5, 5)) path.AppendBezier((7, 5 + h / 2.), (12, 5 + h), (15, 5 + h)) path.AppendBezier((18, 5 + h), (22, 5 + h / 2), (25, 5)) path.Transform(self.trafo) if self.objects: self.objects[1].SetPaths(tuple(newpaths)) else: skull = Sketch.Ellipse(Scale(22)) skull.Transform(Translation(15, 16)) mouth = Sketch.PolyBezier(tuple(newpaths)) r_eye = Sketch.Ellipse(Scale(3)) l_eye = Sketch.Ellipse(Scale(3)) l_eye.Transform(Translation(7, 21)) r_eye.Transform(Translation(22, 21)) self.set_objects([skull, mouth, r_eye, l_eye])
def recompute(self): r1 = self.r1 r2 = self.r2 theta1 = self.theta1 theta2 = self.theta2 if theta2 < theta1: theta2 = theta2+360 ring2 = Sketch.Ellipse(start_angle=theta1*pi/180, end_angle=theta2*pi/180, arc_type=0).Paths()[0] ring1 = ring2.Duplicate() ring2.Transform(Scale(r2)) ring1.Transform(Scale(r1)) new = Sketch.CreatePath() newpaths = [new] new.AppendLine(Polar(r1, theta1*pi/180.)) for i in range(ring2.len): segment = ring2.Segment(i) new.AppendSegment(*segment) new.AppendLine(Polar(r2, theta2*pi/180.)) new.AppendLine(Polar(r1, theta2*pi/180.)) ring1.Transform(Scale(-1,1)) ring1.Transform(Rotation((180+theta1+theta2)*pi/180.)) for i in range(ring1.len): s = ring1.Segment(i) new.AppendSegment(*s) for path in newpaths: path.Transform(self.trafo) if self.objects: self.objects[0].SetPaths(newpaths) else: obj = Sketch.PolyBezier(tuple(newpaths)) self.set_objects([obj])
def recompute(self): p1 = Polar(self.l1, self.theta1 * pi / 180) p2 = Polar(self.l2, self.theta2 * pi / 180) new = Sketch.CreatePath() newpaths = [new] new.AppendLine(p1) new.AppendLine((0, 0)) new.AppendLine(p2) new.Transform(self.trafo) alpha = p1.polar()[1] beta = p2.polar()[1] if self.objects: self.objects[0].SetPaths(newpaths) self.objects[1].SetAngles(alpha, beta) trafo = self.trafo(Scale(self.r, self.r)) self.objects[1].set_transformation(trafo) else: lines = Sketch.PolyBezier(tuple(newpaths)) circle = Sketch.Ellipse(start_angle=alpha, end_angle=beta) circle.Transform(Scale(self.r, self.r)) self.set_objects([lines, circle])