#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
#
# Ce script Python/Salomé permet de constuire une animation à partir de champs de même nom, chaque champ
# étant issu d'un fichier MED différent (un pas de temps par champ). L'animation suit l'ordre d'import des fichiers MED.
#
# Attention! La procédure graphique, i.e. sans script, fonctionne mal car elle ne présente pas les champs forcément dans le bon ordre temporel.
# Ce script ordonne les champs par ID croissant, i.e. les fichiers MED doivent être importés dans l'ordre des pas de temps.
#
# Ce script Python effectue deux opérations :
# 1. il sélectionne tous les champs de même nom.
#    Ce nom est fixé dans ce script, car il n'est pas possible de demander un choix à l'utilisateur par la console Python de Salomé.
#    Ce nom est complet, i.e. il contient le nom du champ et ses unités (cf. variable fieldName).
# 2. il construit une animation des champs sélectionnés dans le module post-traitement (un pas de temps par champ).

import salome
import VISU
import visu_gui

#
# Paramètres utilisateur
#

# Nom du champ choisi
fieldName = 'BFIELD, Tesla'
#fieldName = 'EFIELD, V/m'
#fieldName = 'HFIELD, A/m'
#fieldName = 'JFIELD, A/m2'
#fieldName = 'TOTAL_K, 1/m'
#fieldName = 'TOTAL_N_AND_CURLK, 1/m2'

#
# Ne pas modifier ci-dessous
#

# Get VISU engine
myVisu = visu_gui.myVisu

# Get current VTK view
myViewManager = myVisu.GetViewManager()
myView = myViewManager.GetCurrentView()

# Create the animation, which is empty
myAnimation = myVisu.CreateAnimation(myView);

# Set the successive animation mode
myAnimation.setAnimationMode(VISU.Animation.SUCCESSIVE)

# Supprime toute sélection antérieure
salome.sg.ClearIObjects()
# recherche de tous les champs, ayant le nom choisi, dans le module post-pro (VISU)
# la liste des objets est dans le tableau : all
fields = salome.myStudy.FindObjectByName(fieldName,"VISU")
# Sélectionne tous ces champs
for field in fields:
  id = field.GetID()
  salome.sg.AddIObject(id)
# message  
print "%i champs sélectionnés de nom : %s." % (salome.sg.SelectedCount(), fieldName)
# Création de l'animation
print "Création de l'animation..."
# Sélectionne tous ces champs
for field in fields:
  myAnimation.addField(field)

# Publish the animation object in the study
myAnimation.publishInStudy()

# message
print "Animation prête."

# Update object browser
salome.sg.updateObjBrowser(True)
