def create_jobs(self): if self.obj_stack: m11, m21, m12, m22, dx, dy = SK2_to_PLT_TRAFO if self.plt_doc.config.force_zero: bbox = [] bbox += self.obj_stack[0].cache_bbox for obj in self.obj_stack: bbox = libgeom.sum_bbox(bbox, obj.cache_bbox) dx = -bbox[0] * m11 dy = -bbox[1] * m22 trafo = [m11, m21, m12, m22, dx, dy] obj_num = len(self.obj_stack) for obj in self.obj_stack: self.counter += 1 position = float(self.counter) / obj_num if position - self.position > 0.05: msg = _('Saving in process...') events.emit(events.FILTER_INFO, msg, position) self.position = position paths = libgeom.get_flattened_path( obj, trafo, self.plt_doc.config.tolerance) if paths is None: continue for path in paths: if path and path[1]: self.jobs.append(plt_model.PltJob('', path))
def create_jobs(self): if self.obj_stack: m11, m21, m12, m22, dx, dy = SK2_to_PLT_TRAFO if self.plt_doc.config.plt_force_zero: bbox = [] bbox += self.obj_stack[0].cache_bbox for obj in self.obj_stack: bbox = libgeom.sum_bbox(bbox, obj.cache_bbox) dx = -bbox[0] * m11 dy = -bbox[1] * m22 trafo = [ m11 * self.plt_doc.config.plt_scale, m21, m12, m22 * self.plt_doc.config.plt_scale, dx, dy ] obj_num = len(self.obj_stack) for obj in self.obj_stack: self.counter += 1 position = float(self.counter) / obj_num if position - self.position > 0.05: msg = _('Saving in progress...') events.emit(events.FILTER_INFO, msg, position) self.position = position paths = libgeom.get_flattened_paths( obj, trafo, self.plt_doc.config.plt_tolerance) if paths is None: continue for path in paths: if self.plt_doc.config.plt_optimize: rl = self.plt_doc.config.plt_rounding_level path[0] = [round(x / rl) * rl for x in path[0]] start0, start1 = [], path[0] points = [] for point in path[1]: point = [round(x / rl) * rl for x in point] if not point == start1: if point == start0: points = points[:-1] if len(points) > 1: start0, start1 = points[-1], start0 elif points: start0, start1 = [], start0 continue start0, start1 = start1, point points.append(point) path[1] = points if path and path[1]: self.jobs.append(plt_model.PltJob('', path))
def do_load(self): self.jobs = [] res = self.fileptr.read().split('IN;') if not len(res) == 2: msg = 'Wrong content: "IN;" instruction should be unique' events.emit(events.MESSAGES, msgconst.ERROR, msg) raise IOError(msg) if res[0]: self.model.string = res[0] cmds = res[1].split(';') jobs = [] job = [] stack = '' for cmd in cmds: cmd = cmd.strip() if cmd[:2] == 'PU': stack = cmd if job: jobs.append(job) job = [] elif cmd[:2] == 'PD': if not job: if not stack: stack = 'PU0,0' job.append(stack) job.append(cmd) for job in jobs: string = '' for cmd in job: string += cmd + ';' self.jobs.append(plt_model.PltJob(string)) self.model.childs[1].childs = self.jobs