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