def get_operation_particles(self): model = Model(grid_type = self.model.grid.grid_type) if len(self.selected) > 0: model.particles = [p.model_particle for p in self.selected if p.in_model] coordinates = [p.gridcoord for p in self.selected] else: model.particles = list(self.model.particles) coordinates = list(self.points) return model, coordinates
def import_rbd(path, rbd): model_data = [] model_particles = [] particle_specs = [] body_specs = [] particle_specs_dict = dict() body_specs_dict = dict() def process_node_start(name, attr, model_data = model_data, model_particles = model_particles, particle_specs = particle_specs, particle_specs_dict = particle_specs_dict, body_specs = body_specs, body_specs_dict = body_specs_dict): if name == 'rbd': return elif name == 'particle_specs': specs = Brush.ParticleSpecs(name = attr['name'], color = attr['color']) particle_specs.append(specs) particle_specs_dict[attr['name']] = specs elif name == 'body_specs': specs = Brush.BodySpecs(idx = int(attr['index']), color = attr['color']) body_specs.append(specs) body_specs_dict[attr['index']] = specs elif name == 'model': model_data.append(int(attr['grid_type'])) model_particles.append([]) elif name == 'particle': gridcoord = eval(attr['grid_coord']) particle_specs = particle_specs_dict[attr['particle_specs']] body_specs = body_specs_dict[attr['body_specs']] model_particles[-1].append(Particle(gridcoord = gridcoord, particle_specs = particle_specs, body_specs = body_specs)) design_box = rbd.design_box tool_box = rbd.tool_box p = xml.parsers.expat.ParserCreate() p.StartElementHandler = process_node_start p.ParseFile(open(path, 'r')) tool_box.set_particle_specs(particle_specs) tool_box.set_body_specs(body_specs) models = [] for data, particles in zip(model_data, model_particles): m = Model(grid_type = data) m.particles = particles models.append(m) tool_box.set_models(models)