Réalisation d'une fonction
          
A partir du script de la page précédente, réalisons un script prenant en entrée un dossier contenant un ou plusieurs fichiers de données ASCII et affichant une courbe par fichier. Pour cela, nous allons définir une fonction AfficherUneCourbe qui traite un fichier et appeler cette fonction dans une boucle :
			 
         | 
      
      
        
          
            
              
on AfficherUneCourbe(f, v) --f est le fichier, v est la vue contenant les courbes
 
    set {x, y} to extractcolumn {1, 2} in f skipping 1 as array of real
 
    set c to QuickCurve(x, y, v)
 
    set pattern style of c to 8
 
    set pen width of c to 2
 
    set theName to name of (info for f) --récupération du nom du fichier
 
    set name of c to theName
 
    return container of c --notre fonction renvoie une référence au conteneur de la courbe créée 
 
end AfficherUneCourbe
 
 
set f to (navchoose folder without multiple files) as alias --demande à choisir un dossier.
 
set flist to list files f
 
set v to 0 --en passant 0 à QuickCurve on lui indique de créer un nouvelle fenêtre
 
repeat with i from 1 to (count flist)
 
    set f to item i of flist
 
    if (f as string) ends with ".txt" then
 
        set v to AfficherUneCourbe((get item i of flist), v)
 
    end if
 
end repeat
 
if v is 0 then
 
 FatalAlert("Aucun fichier trouvé")
 
return
 
end
 
set legend kind of v to 2 --légende dans un cadre
 
set xlabel of v to "x axis" --commentaire de l'axe des x
 
set ylabel of v to "y axis" --commentaire de l'axe des y
 
set label text font of v to "Helvetica"
 
set label text size of v to 14
 
set name of v to "Exemple de personnalisation"
 
set w to window of v
 
set margins of w to {0, 0} --pas d'ascenseur sur les bords de la fenêtre
 
set message bar of w to "Cliquez sur la courbe pour obtenir les coordonnées"
 
draw w --rafraîchit l'affichage
               
               
              
                Importer le script
              
             
           
         | 
        
           
         | 
      
      
        
          
Vous avez réalisé votre premier automate de traitement et de visualisation de données avec Smile. Cet automate permet d'afficher un nombre quelconque de courbes à partir de données contenues dans des fichiers ASCII tabulés.
			 
          Variante
          
Vous pourriez modifier votre fonction AfficherUneCourbe pour que la forme des points de chaque courbe soit des croix si sa valeur minimale est inférieure à 0, et des ronds sinon, en utilisant la commande statlist :
on AfficherUneCourbe(f, v) --f est le fichier, v est la vue contenant les courbes
 
    try
 
        set {x, y} to extractcolumn {1, 2} in f skipping 1 as array of real
 
        set c to QuickCurve(x, y, v)
 
        set stl to statlist y
 
        if (get minimum of stl) < 0 then
 
            set pattern style of c to 6
 
        else
 
            set pattern style of c to 1
 
        end if
 
        set line style of c to 0
 
        set pen width of c to 2
 
        set theName to name of (info for f) --récupération du nom du fichier
 
        set name of c to theName
 
        return container of c --notre fonction renvoie une référence au conteneur de la courbe créée 
 
    on error
 
        return v
 
    end try
 
end AfficherUneCourbe
 
Modifiez votre fonction, sélectionnez l'ensemble du texte la définissant, et appuyez sur ⌘R pour recompiler la fonction. Lorsque vous exécutez la portion de script faisant appel à la fonction, vous obtenez un graphique de ce type :
  
			 
         |