Rafraichir écran [Résolu]

Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
- - Dernière réponse : gourmand86
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
- 22 déc. 2011 à 08:30
Bonjour a tout le monde

Je code un pong sur Catia V5 en VBA, le problème est que l’affichage se fais qu’une fois le code terminer (on ne voit pas la balle se déplacer)

J’aimerais savoir qu’elle fonction en VBA pourrait m’activé le rafraichissement de l’écran (ou si quelqu’un qui si connais en macro sur Catia passe par la, se qui est extrêmement rare).

Merci d’avance.
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Je dois te dire que je m'y attendais un peu.
Je crains dans ce cas que ce soit là un problème Catia, soi de rafraichissement, soit de lenteur.
As-tu essayé de rechercher tout ce qui tourne autour du mot Refresh dans ton aide Catia ?

Je viens par exemple de lire quelqu part sur le Web une expression du genre :
CATIA.RefreshDisplay = true

Sans avoir pu déterminer à quoi elle correspondait exactement.
Bonne chance.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
172
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
21 juillet 2013
0
Merci
Pour avoir programmé diverses "animations" en VBA,
il faut effectivement faire une "pause" pour que l'animation se déroule.

Il faut regarder du côté de DoEvents si présent sous Catia ...
Commenter la réponse de MarcPL
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
0
Merci
J’ais tester la fonction DoEvents, mais je n’ais aucun résulta.
J’ais tester avec des variable spécifique a catia comme : ActiveWindow / ActiveViewer / viewer.Update. Mais même résultat.
Je recherche encor mais je n’ai, pour le moment, pas trouver d’équivalent à DoEvents dans catia.
Commenter la réponse de gourmand86
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
0
Merci
pourquoi a chaque fois que je mais un apostrof, sa me marque: ’ ?
Commenter la réponse de gourmand86
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
pourquoi a chaque fois que je mais un apostrof, sa me marque: ’ ?

Ca va même plus loin que cela :
- "il" t'a enlevé l'accent que tu avais mis sur le "à", t'a transform ton "mets" en "mais", ton "une apostrophe" en "un apostrof" et ton "ça" en "sa"
Et tout cela, sur ton dernier message. Je ne parle pas des autres


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
J’ais tester la fonction DoEvents, mais je n’ais aucun résulta.

et
Je recherche encor mais je n’ai, pour le moment, pas trouver d’équivalent à DoEvents dans cat

Laquelle de ces deux assertions est-elle donc vraie ?
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
172
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
21 juillet 2013
0
Merci
Pour forcer le programme à "temporiser", il faudrait ajouter le code suivant
puis insérer une ligne Pause à chaque fois qu'un rafraichissement est nécessaire.

Sub Pause(Optional P = 0.01)
         T = Timer

    Do While Timer < T + P
        DoEvents
    Loop
End Sub

Si la pause est trop courte, tester différents paramètres comme 0.05, 0.1, 0.5 ou 1.
Si une seule valeur de pause est nécessaire pour chaque ligne Pause dans le programme,
modifier la pause par défaut dans la déclaration du Sub (optional P =) ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
Commenter la réponse de MarcPL
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
0
Merci
J’ais déjà tester avec la fonction Pause que tu me présente, mais même avec une seconde, rien ne s’affiche.
Je suis tombé sur la fonction stop, qui marche bien, mais je suis obligé de relancer la macro à chaque fois. Et il possible de relancer automatiquement la macro après un stop ?

(Excuser moi pour l’orthographe, je fais se que je peux mais se n’est pas encore sa.)
Commenter la réponse de gourmand86
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Je ne connais pas CATIA.
Mais peut-on voir le bout de code relatif au déplacement (là où tu as tenté le DoEvents) ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
0
Merci
bien sur :

For i = 1 To 1000
        VitesseB = VitesseB + 1
        If Vie = 0 Then
            moveJ1Variant.Apply arrayOfVariantOfDoubleA
            If VitesseB = 100 Then
                Vie = 1
                VitesseB = 0
            End If
        Else
            moveJ1Variant.Apply arrayOfVariantOfDoubleB
            If VitesseB = 100 Then
                Vie = 0
                VitesseB = 0
            End If
        End If
        
        'Pause 0.1
        
        'CATIA.ActiveWindow.ActiveViewer.Viewpoint3D = MyCamera.Viewpoint3D
        'viewer3D1.Update
        'MyViewer.Update
        'ActiveWin.Activate
        
    Next i
    MsgBox "Fin"
    
End Sub

Sub Pause(Optional P = 0.01)
         T = Timer

    Do While Timer < T + P
        DoEvents
    Loop
End Sub
Commenter la réponse de gourmand86
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Essaye (jour voir) ainsi :
dim duree as single ' <<<<<<<duree 0.02 ' <<<<==========
For i = 1 To 1000
        VitesseB = VitesseB + 1
        If Vie = 0 Then
            moveJ1Variant.Apply arrayOfVariantOfDoubleA
            If VitesseB = 100 Then
                Vie = 1
                VitesseB = 0
            End If
        Else
            moveJ1Variant.Apply arrayOfVariantOfDoubleB
            If VitesseB = 100 Then
                Vie = 0
                VitesseB = 0
            End If
        End If
        
        Pause duree ' <<<<'CATIA.ActiveWindow.ActiveViewer.Viewpoint3D MyCamera.Viewpoint3D
        'viewer3D1.Update
        'MyViewer.Update
        'ActiveWin.Activate
        
    Next i
    MsgBox "Fin"
    
End Sub

Sub Pause(duree as single) ' <<<<<==============
   dim T as single '<<<<<<<<<<<<T Timer

    Do While Timer < T + duree ' <<<<===============
        DoEvents
    Loop
End Sub


vois mes lignes avec <<<<<=================
Si tu attends de la fonction Timer de décimales, il faut que tu le précises comme je l'ai fait (type single)
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
172
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
21 juillet 2013
0
Merci
Mon code de Pause est un copier/coller de mes programmes d'animation tant ludiques que
professionnels, le seul élément changeant étant la pause par défaut selon l'effet désiré,
certes il est vrai en VBA / Excel.

Vu donc qu'il fonctionne bien tel quel, je ne pense pas qu'une déclaration de variable
y change quoi que ce soit sous Catia.

Face donc à un souci spécifique à Catia et ne le connaissant pas,
je ne peux apporter d'aide supplémentaire ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
Commenter la réponse de MarcPL
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
je ne pense pas qu'une déclaration de variable y change quoi que ce soit sous Catia.

Je n'en sais rien car :
je ne sais pas comment catia réagit avec une variable duree non typée et une valeur décimale !
Si Catia est capable d'interpréter correctement ===>> Va bene.
Le risque est que 0.01 sans typer duree soit interprété par catia comme duree = 0 dans l'expression :
 Do While Timer < T + duree

Même réflexion en ce qui concerne la valeut T (la valeur extraite par la fonction Timer elle-même)
Dans le doute, donc, je fais ce qu'il est de toutes manières recommandé de toujours faire : typer les variables expressément .
Pour le reste : je ne sais pas si cela suffira (et l'ai dit) !
Mais je commence par une écriture propre, hein ...

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
0
Merci
Je viens de tester ta proposition ucfoutusa, elle marche au niveau du temps mais pas au niveau de l’affichage.
Le problème est que j'ais passé toute les fonctions spécifique à Catia, mais je n'ai rien trouvé.
Catia désactive l’actualisation de la fenêtre il doit y avoir un moyen de la réactivé.
Je vais recherche encor une fois dans mes ActiveWindow, ActiveViewer de Catia.
Commenter la réponse de gourmand86
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
0
Merci
Merci, c'est la fonction que je cherché. Un mois que je tourne autour.
Commenter la réponse de gourmand86
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
C'était tout ?
J'ai de la chance, alors ?
Bonnes fêtes


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Dernière intervention
9 janvier 2012
0
Merci
oui c'était tout, juste une fonction que je ne trouver pas.
bonne fète aussi. j'ias dotre problèpme mais je cherche encor un peux avent de poster
Commenter la réponse de gourmand86

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.