IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Problème création dossier et enregistrement courbe dans GUI


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut Problème création dossier et enregistrement courbe dans GUI
    Bonjour,

    J'ai un problème de création de dossier et d'enregistrement de courbe dans le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    function pushsave_Callback(hObject, eventdata, handles)
    % hObject    handle to pushsave (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    handles.foldername=get(handles.save,'String');
    %set(handles.test,'String',char(handles.foldername));
    mkdir(char(handles.foldername));
     
     
    for i=1:handles.s2
        handles.num=handles.NUM(i)
        handles.current_data=[xlsread(handles.nom_fic,handles.num, handles.POSANG1);xlsread(handles.nom_fic,handles.num, handles.POSANG2);xlsread(handles.nom_fic,handles.num, handles.POSANG3);xlsread(handles.nom_fic,handles.num, handles.POSANG4);xlsread(handles.nom_fic,handles.num, handles.POSANG5);xlsread(handles.nom_fic,handles.num, handles.POSANG6);xlsread(handles.nom_fic,handles.num, handles.POSANG7);xlsread(handles.nom_fic,handles.num, handles.POSANG8)];
        handles.graph=scatter3(handles.current_data(:,1),handles.current_data(:,2),handles.current_data(:,3),25,handles.current_data(:,4),'filled');
        grid on;
        title('Stress or Strain evolution (MPa or %)');
        xlabel('Teff(kN)');
        ylabel('Mf (kN.m)');
        zlabel('Stress or strain (MPa or %)');
        colorbar('location','NorthOutside');
        set(gcf,'PaperPositionMode','auto');
        set(gcf,'InvertHardcopy','off');
        set(gcf,'PaperOrientation','landscape');
        if i<10
            name=[handles.foldername,'\P0',num2str(i)];
        else
            name=[handles.foldername,'\P',num2str(i)];
        end
        print('-dpdf',name);
    end
     
    set(handles.test,'String',name);
     
    guidata(hObject, handles);
    Lorsque je créé un dossier avec les premières commande(mkdir avec nom de dossier récupéré dans un edit text), le dossier se créé bien dans le dossier spécifié, que ce soit dans le cas où le dossier spécifié est du type 'C:\foldername' (cas1: le dossier est alors créé dans le disque C) ou dans le cas ou le dossier spécifié est du type 'foldername'(cas2: le dossier est alors créé dans un répertoire par défaut par matlab).Jusque là tout va bien...

    Lorsque je rajoute la boucle for de création de courbe, la création de courbe dans le dossier ainsi créé ne se fait que dans le cas 2.Dans le cas 1,il n'y a pas création de pdf courbe dans le dossier et ce qui est étrange c'est que le dossier ne se créé pas alors que celui se créé bien lorsqu'il n'y a pas de boucle for.......??????

    Le message d'erreur est alors:

    ??? Error using ==> mkdir
    Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.
    Error in ==> interface_graphique>pushsave_Callback at 396
    mkdir(char(handles.foldername));
    Je ne comprend pas....

    Merci d'avance pour votre aide...

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Qu'y a-t-il dans la variable handles.foldername?

    Duf

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    ma variable handles.foldername contient le nom du dossier dans lequel je veux enregistrer une courbe en PDF.

    ce nom est récupéré par le string d'un edit text de mon GUI dont le tag est save.

    la commande est donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles.foldername=get(handles.save,'String');
    Je rentre en fait dans l'edit text un nom de dossier du type 'C:\name' ou 'name'.

    Voilà.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Excuse moi mais ça peut prêter à confusion:

    on va plutôt dire :

    Je rentre en fait dans l'edit text un nom de dossier du type 'C:\nomdossier' ou 'nomdossier'.

  5. #5
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Ok mais la question était plutôt de vérifier la chaine de caractère qu'il y a dans ton MKDIR (à l'aide du debugger ou d'un disp par exemple)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    J'ai déja vérifié tout ça.

    voir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.test,'String',char(handles.foldername));
    qui m'affiche bien dans un static text de mon GUI le nom du fichier rentré dans le cas 1 ou 2 défini précedemment.

    De toute façon, je me répète mais ce n'est qu'à partir du moment ou je rajoute la boucle for que dans le cas ou le foldername est du type 'C:\nomdossier' (cas1 je crois) il n'y a même pas de création de dossier correspondant.
    Du coup la boucle for ne risque pas de fonctionner....

    Cela est plutôt étrange avouons le!!!!

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Les problèmes de création de dossier et d'enregistrement de courbe sont maintenant résous.c'était un problème d'espace.

    J'ai maintenant un autre problème dans le même code: lorsque je rajoute les lignes suivantes dans ma boucle for:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    grid on;
    title('Stress or Strain evolution (MPa or %)');
    xlabel('Teff(kN)');
    ylabel('Mf (kN.m)');
    zlabel('Stress or strain (MPa or %)');
    colorbar('location','NorthOutside');
    Il y a une sorte de superposition de graphe sur ma courbe enregistrée du à mon avis à la création d'axes à chaque itérations .

    J'aimerais donc pouvoir créer des axes dans chaque itération sans qu'il y est création d'un pseudographe à chaque fois.

    Merci d'avance pour votre aide.

  8. #8
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Le plus simple serait peut-être de réinitialiser l'axe à chaque itération (avec CLA)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Merci je vais regarder ça.

    une autre question :

    J'ai un outil zoom et rotation dans mon GUI et j'aimerais garder mes paramètres de zoom et rotation durant l'enregistrement de toutes mes courbes en pdf.

    Que faut il que j'utilise dans ma boucle for...???

  10. #10
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Pour le zoom, tu peux enregistrer les propriétés XLim, YLim et ZLim

    Pour le pan, tu as les propriété Camera... (CameraPosition, CameraTarget)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Je reviens au problème précédent:

    c'est possible de supprimer tous les objets graphique dans la figure ?

  12. #12
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Oui, en utilisant DELETE avec FINDOBJ par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    delete(findobj(gcf, 'Type', 'axes'));
    delete(findobj(gcf, 'Type', 'uicontrol'));
    ...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Je crois que je suis en train de comprendre mon problème de superposition de graphe.

    j'ai l'impression que ma boucle provoque la création d'une nouvelle figure à chaque itération qui est ajouté dans le cadre du GUI d'ou la superposition...

    Revoilà ma fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function pushsave_Callback(hObject, eventdata, handles)
    % hObject    handle to pushsave (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    handles.foldername=get(handles.save,'String');
    mkdir(handles.foldername);
     
    for i=1:handles.s2
        handles.num=handles.NUM(i)
        handles.current_data=[xlsread(handles.nom_fic,handles.num, handles.POSANG1);xlsread(handles.nom_fic,handles.num, handles.POSANG2);xlsread(handles.nom_fic,handles.num, handles.POSANG3);xlsread(handles.nom_fic,handles.num, handles.POSANG4);xlsread(handles.nom_fic,handles.num, handles.POSANG5);xlsread(handles.nom_fic,handles.num, handles.POSANG6);xlsread(handles.nom_fic,handles.num, handles.POSANG7);xlsread(handles.nom_fic,handles.num, handles.POSANG8)];
        handles.graph=scatter3(handles.current_data(:,1),handles.current_data(:,2),handles.current_data(:,3),25,handles.current_data(:,4),'filled');
        grid on;
        title('Stress or Strain evolution (MPa or %)');
        xlabel('Teff(kN)');
        ylabel('Mf (kN.m)');
        zlabel('Stress or strain (MPa or %)');
        colorbar('location','NorthOutside');
        set(gcf,'PaperPositionMode','auto');
        set(gcf,'InvertHardcopy','off');
        set(gcf,'PaperOrientation','landscape');
        if i<10
            name=strcat(char(handles.foldername),'\P0',num2str(i));
        else
            name=strcat(char(handles.foldername),'\P',num2str(i));
        end
        print('-dpdf',strcat(name));
        %cla('reset');
        %delete(findobj(gcf, 'Type', 'axes'));
        %colorbar('delete');
    end
     
    set(handles.test,'String',char(name));
     
    guidata(hObject, handles);
    Dans ce cas la je pense que cla ou delete ne serve à rien .
    Il faudrait seulement créer une nouvelle figure à chaque itération je pense.

    Mais je ne sais pas comment faire????

    Merci d'avance pour votre aide...

  14. #14
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Pour créer une nouvelle figure, il suffit d'utiliser la fonction FIGURE (la bien nommée)

    EDIT: Je crois que je viens de comprendre que j'avais pas bien compris

    En fait, tu souhaites recréer ton interface construite avec GUIDE? Si c'est ca l'idée, je pense que là c'est une erreur de raisonnement.

    Déjà pour commencer, tu dois définir ton axes et les propriétés invariantes (comme le titre il me semble) en dehors de ta boucle (ca ne sert à rien de redéfinir X fois une valeur identique). Ensuite, il te suffit de tracer ta courbe dans l'axe, de l'enregistrer, d'effacer l'axe et de recommencer.

    Pour faire ca, je te conseille de jeter un oeil dans la doc, principalement à propos des propriétés des axes (NextPlot entre autres) et de ta fonction de tracé des courbes (principalement la propriété Parent).

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    C'est bon en fait.

    c'était le colorbar dans la boucle qui mettait le bazar.

    j'ai donc mis à la fin de la boucle:

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème actualisation courbe dans GUI
    Par jponsoda dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 21/06/2010, 11h34
  2. problème création dossier
    Par mouna25 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 03/02/2010, 15h24
  3. Problème de décalage de la courbe dans TPerformanceGraph
    Par Jotomaticen dans le forum C++Builder
    Réponses: 0
    Dernier message: 19/09/2009, 13h38
  4. Réponses: 1
    Dernier message: 30/12/2006, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo