Satimage Précédent | Suivant
Réalisation d'un automate
Accueil Documentation Smile Tutoriel de Smile Ecriture d'un script de visualisation de données Réalisation d'un automate  
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 :
English version
Copyright ©2008 Paris, Satimage