Пример #1
0
 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])
Пример #2
0
    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])
Пример #3
0
    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])