def read_ellipse(self, line):
		readline = self.readline; tokenize = skread.tokenize_line
		args = tokenize(line)
		if len(args) != 19:
			raise SketchLoadError('Invalid Ellipse specification')
		sub_type, line_style, thickness, pen_color, fill_color, depth, \
					pen_style, area_fill, style, direction, angle, \
					cx, cy, rx, ry, sx, sy, ex, ey = args
		self.fill(fill_color, area_fill)
		self.line(pen_color, thickness, const.JoinMiter, const.CapButt,
					line_style, style)
		
		center = self.trafo(cx, cy); radius = self.trafo.DTransform(rx, ry)
		trafo = Trafo(radius.x, 0, 0, radius.y)
		trafo = Rotation(angle)(trafo)
		trafo = Translation(center)(trafo)
		apply(self.ellipse, trafo.coeff())
		self.set_depth(depth)
    def load_ellips(self):
        param = {
            '10': 0.0,  # X coordinat center
            '20': 0.0,  # Y coordinat center
            #'30': 0.0, # Z coordinat center
            '11': 0.0,  # Endpoint of major axis, relative to the center
            '21': 0.0,
            #'31': 0.0,
            '40': 0.0,  # Ratio of minor axis to major axis
            '41':
            0.0,  # Start parameter (this value is 0.0 for a full ellipse)
            '42': 0.0,  # End parameter (this value is 2pi for a full ellipse)
        }
        param.update(self.general_param)
        param = self.read_param(param)

        cx = param['10']
        cy = param['20']

        rx = sqrt(param['21']**2 + param['11']**2)
        ry = rx * param['40']

        start_angle = param['41']
        end_angle = param['42']

        angle = atan2(param['21'], param['11'])

        center = self.trafo(cx, cy)
        radius = self.trafo.DTransform(rx, ry)
        trafo = Trafo(radius.x, 0, 0, radius.y)
        trafo = Rotation(angle)(trafo)
        trafo = Translation(center)(trafo)
        rx, w1, w2, ry, cx, cy = trafo.coeff()

        style = self.get_line_style(**param)
        self.prop_stack.AddStyle(style.Duplicate())

        apply(self.ellipse,
              (rx, w1, w2, ry, cx, cy, start_angle, end_angle, ArcArc))
Пример #3
0
	def load_ellips(self):
		param={	'10': 0.0, # X coordinat center
				'20': 0.0, # Y coordinat center
				#'30': 0.0, # Z coordinat center
				'11': 0.0, # Endpoint of major axis, relative to the center
				'21': 0.0,
				#'31': 0.0,
				'40': 0.0, # Ratio of minor axis to major axis
				'41': 0.0, # Start parameter (this value is 0.0 for a full ellipse)
				'42': 0.0, # End parameter (this value is 2pi for a full ellipse)
				}
		param.update(self.general_param)
		param = self.read_param(param)
		
		cx = param['10']
		cy = param['20']
		
		rx = sqrt(param['21']**2 + param['11']**2)
		ry = rx * param['40']
		
		start_angle = param['41']
		end_angle = param['42']
		
		angle=atan2(param['21'], param['11'])
		
		center = self.trafo(cx, cy)
		radius = self.trafo.DTransform(rx, ry)
		trafo = Trafo(radius.x, 0, 0, radius.y)
		trafo = Rotation(angle)(trafo)
		trafo = Translation(center)(trafo)
		rx, w1, w2, ry, cx, cy = trafo.coeff()
		
		style = self.get_line_style(**param)
		self.prop_stack.AddStyle(style.Duplicate())
		
		apply(self.ellipse, (rx, w1, w2, ry, cx, cy, start_angle, end_angle, ArcArc))