gourmand86
Messages postés33Date d'inscriptionmercredi 6 octobre 2010StatutMembreDernière intervention 9 janvier 2012
-
23 nov. 2011 à 08:53
gourmand86
Messages postés33Date d'inscriptionmercredi 6 octobre 2010StatutMembreDerniè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).
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 21 déc. 2011 à 14:40
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
gourmand86
Messages postés33Date d'inscriptionmercredi 6 octobre 2010StatutMembreDernière intervention 9 janvier 2012 20 déc. 2011 à 09:22
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 20 déc. 2011 à 09:39
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 20 déc. 2011 à 09:58
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
MarcPL
Messages postés172Date d'inscriptionjeudi 8 décembre 2011StatutMembreDernière intervention21 juillet 20132 20 déc. 2011 à 12:06
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 !
gourmand86
Messages postés33Date d'inscriptionmercredi 6 octobre 2010StatutMembreDernière intervention 9 janvier 2012 20 déc. 2011 à 15:27
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.)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 20 déc. 2011 à 15:34
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
gourmand86
Messages postés33Date d'inscriptionmercredi 6 octobre 2010StatutMembreDernière intervention 9 janvier 2012 20 déc. 2011 à 15:57
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 20 déc. 2011 à 16:07
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
MarcPL
Messages postés172Date d'inscriptionjeudi 8 décembre 2011StatutMembreDernière intervention21 juillet 20132 21 déc. 2011 à 11:43
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 !
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 21 déc. 2011 à 11:55
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
gourmand86
Messages postés33Date d'inscriptionmercredi 6 octobre 2010StatutMembreDernière intervention 9 janvier 2012 21 déc. 2011 à 13:43
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 21 déc. 2011 à 21:38
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