Composants dynamiques - exemples
-
Voilà un premier essai :
Clapet_DD_01_v7.skp
Tu voulais qu'on explique pas qu'on le fasse, mais je ne peux pas expliquer si je ne l'ai pas fait
Donc :Pour le moment, c'est en fonction de l'angle du clapet (un clic avec le "doigt" des composants dynamiques pour l'animer).
La logique est de travailler avec la trigo et un point remarquable du clapet : l'axe d'accrochage du vérin au clapet (distance de l'axe du clapet : 2476 mm ; angle par rapport à l'axe du composant : 5.6°). Avec ces dernières propriétés, on peut calculer la position de l'accroche en fonction de l'angle du clapet (AxeY et AxeZ du composant "Tout"). Avec ce point et les coordonnées de l'axe du vérin, on peut calculer la longueur d'allongement du vérin (merci Monsieur Pythagore) et l'angle de rotation avec l'arc-tangente (merci Monsieur CAH-SOH-TOA).
Pour la hauteur d'eau, un autre point du clapet est utilisé : la limite du niveau d'eau (distance de l'axe du clapet : 2525 mm ; angle par rapport à l'axe du composant : 2.9°). On utilise juste la trigo pour calculer la hauteur ou la longueur du composant "Haut".
J'espère que c'est clair...
Je regarde pour plutôt avoir la hauteur en paramètre.... et puis merci, parce que j'étais en manque de sujet pour entretenir l'utilisation de ces outils. En ce moment, je bloque avec mes étudiants sur des thèmes plus... manuels... le bon vieux dessin au té et à l'équerre...
[Edit]
Ben voilà la version avec la hauteur d'eau en paramètre, qui calcule l'angle du clapet avec un petit arc-cosinus (re-merci CAH-SOH-TOA).
Clapet_DD_02_v7.skp
Au final, c'est un peu le bazar dans les différentes fonctions, certaines fois dans le "Tout", d'autres fois dans les sous-composants... mais l'idée y est. -
%(#0000FF)[Beau boulot MR DAREDEVIL
Le travail avec les composants dynamiques paraitrait presque simple quand on voit ce que tu en fait .
Salutations
chri]
-
C'est normal que le clapet se détache du vérin ?
-
@unknownuser said:
C'est normal que le clapet se détache du vérin ?
Non, pour moi ça marche...
Tu utilises bien l'outil d'interaction des composants dynamiques, la petite main le doigt levé ?
Peut-être qu'avec une machine moins puissante, Su n'arrive pas à tout calculer... -
ça marche auusi chez moi, beau boulot ! Mais Pilou est en V6, ça doit coincer.
-
@unknownuser said:
la petite main le doigt levé ?
Bien sûr, sinon il ne se passerait rien de rien!
@unknownuser said:
Peut-être qu'avec une machine moins puissante, Su n'arrive pas à tout calculer...
Possible, avec mon minitel, c'est sûr que cela n'est pas un foudre de guerre!
Quand il y a des composants dynamiques j'utilise la V7 : normalement cela marche très bien!
Je vais essayer sur une autre machine en V8
-
OK Marche nickel en V8 sur un TO7!
Allez comprendre pourquoi cela se désolidarise en V7 ?
D'un point de vue "physique" comment se fait le le mouvement des pièces l'une par rapport à l'autre ?
"Sketchyphysics" n'est pas en marche?
C'est recalculé position après position et affiché en direct? -
@unknownuser said:
OK Marche nickel en V8 sur un TO7!
Allez comprendre pourquoi cela se désolidarise en V7 ?
D'un point de vue "physique" comment se fait le le mouvement des pièces l'une par rapport à l'autre ?
"Sketchyphysics" n'est pas en marche?
C'est recalculé position après position et affiché en direct?%(#008000)[Bonjour PILOU
le mouvement est réalisé par une fonction d'animation déclenchée par un clic .
voici 2 vidéo qui illustrent bien les fonctions onClic , ANIMATECUSTOM :
Youtube Videoles tuto en francais à propos des composants dynamiques ayant été réalisé par notre collégue Tenrev ( présent au meeting sur la dame de Canton ) .
chri]
-
Oui, oui, pour les fonctions, mais c'est le résultat qui m'interpellait, puisque le bras du vérin à l'air de rentrer en coulissant dans sa gaine
Il n'y a donc rien de "phsysique" (un objet "poussant" l'autre) -
@unknownuser said:
Oui, oui, pour les fonctions, mais c'est le résultat qui m'interpellait, puisque le bras du vérin à l'air de rentrer en coulissant dans sa gaine
Il n'y a donc rien de "phsysique" (un objet "poussant" l'autre)Non, il n'y a absolument rien de physique, les positions et rotations de chaque composant sont calculées paramétriquement d'après la position de la hauteur de l'eau.
J'aime bien cette approche par rapport à une résolution "physique" parce qu'on est obligé de comprendre ce qu'il se passe et on doit décrire numériquement les choses. Comme ici le problème est dévaluer l'allongement du vérin par rapport à l'angle du clapet, si on a un problème on peut facilement jouer sur les paramètres (dimension du clapet, longueur du vérin, amplitude de la hauteur d'eau...) pour trouver une solution qui fonctionne.
Après, si ça devient trop compliqué, il vaut mieux utiliser SketchyPhysics parce que l'analyse devient infaisable... et là, ça m'intéresse moins -
D'ailleurs dans un sens, c'est peut-être plus souple puisque dans ce cas-là les objets peuvent s'interpénétrer aux frntières sans "bloquer" tout le système!
C'est du visuel avant tout, avant la validation "matérielle" qui elle risquera de bloquer s'il y a un millimètre de frottemment
-
D'ailleurs dans un sens, c'est peut-être plus souple puisque dans ce cas-là les objets peuvent s'interpénétrer aux frontières sans "bloquer" tout le système!
C'est du visuel avant tout, avant la validation "matérielle" qui elle risquera de bloquer s'il y a un millimètre de frottemment!
-
Je mouline ton travail et je vous en reparle ...
Ya pas à dire faut que je me replonge dans les calculs...
-
Bon ben mon cher Daredevil va falloir te mettre à table et cracher le morceau, dare dare et fissa mon evil...
D'un composant vérin (fut et tige) connecté à un composant clapet (rien dedans) on en arrive à un composant global (Tout) incluant le composant#1 (le bajoyer) le composant#5 (l'eau retenue en amont), le composant#6 (l'eau de déverse en aval)...
Les composants#2 et 3 n'ont pas grand intérêt dans l'histoire car ce sont des sous-ensembles du fût. On peut très bien les éclater pour les intégrer dans le fût et simplifier l'arborescence...Après on se retrouve avec des attributs de composants suivant...
Que tu mette ANIMATECUSTOM(Niveau,3,,,490,590) pour OnClick je comprends que cela détermine le comportement pour le clic sur 'Tout'.
Mon problème c'est que tu mets dans la zone personnalisée "AngleClapet =90-2.9-ACOS((Niveau-clapet!Z)/252.5)"
Puis "AxeY =clapet!Y+cos(Tout!AngleClapet+5.6)*247.6
Puis "AxeZ =clapet!Z+sin(Tout!AngleClapet+5.6)*247.6
et un attribut 'Niveau' en attribut non éditable.Le composant#1 n'a rien, je comprends, il est figé, c'est le mur, le bajoyer selon le terme de métier.
Le composant 'Haut' est en fait le composant#5 de la fenêtre Structure puisque visiblement on peut lui donner un nom "dynamique" en plus de son nom de structure. Bon là, je te suis même s'il m'a fallut un petit moment pour choper cette possibilité.
Qu'un même composant puisse avoir deux noms je suis pas fan mais bon ...Dans sa position Z tu mets =clapet!Z+sin(Tout!AngleClapet+2.9)*252.5 ...
Dans l'idée tu calcule sa position Z sur la base du sinus du clapet avec les corrections nécessaire au décalages induits par la position de l'ensemble.Tu dois surement faire un calcul pour le X, puisque le composant avance avec le clapet...
Ben non... c'est la taille LenY que tu calcules avec =200+clapet!Y+cos(Tout!AngleClapet+2.9)*252.5
Là je pige pas ...
Bon alors le composant dynamique Bas qui est en fait le composant#6 donc il n'est pas concerné.
Le Clapet est animé par calcul de RotX avec =Tout!AngleClapet c'est à dire =90-2.9-ACOS((Niveau-clapet!Z)/252.5) dans le paramètre "Tout".
Là on commence à faire un retour vers le haut, qui commence à me compliquer l'analyse. J'ai l'impression de faire un calcul en boucle dans un tableur. Ce n'est pas dans ma logique de travail façon Tableur...
On finit avec le vérin...
Tu lui affecte une rotation avec RotX et =ATAN(Tout!AxeY/(Z-Tout!AxeZ))
Va falloir que je révise mes bases...
Par contre pour le paramètre perso "Position" et =SQRT(POWER(Tout!AxeY,2)+POWER(633.74-Tout!AxeZ,2)) il va falloir que je double ma ration d'aspirineBon, alors ... tu avoues ou il faut que j'appelle mon frangin ?....
Cordialement
Patrick -
@patrick said:
Bon ben mon cher Daredevil va falloir te mettre à table et cracher le morceau, dare dare et fissa mon evil...
Ok ok... je vais tout te dire... en fait, je ne suis pas le vrai DareDevilje ne suis pas aussi résistant... je vais tout expliquer... ne frappe pas... s'il te plait...
@unknownuser said:
D'un composant vérin (fut et tige) connecté à un composant clapet (rien dedans) on en arrive à un composant global (Tout) incluant le composant#1 (le bajoyer) le composant#5 (l'eau retenue en amont), le composant#6 (l'eau de déverse en aval)...
Je fais un composant général pour que les composants puissent discuter entre eux en passant par ce méga-composant.@unknownuser said:
Les composants#2 et 3 n'ont pas grand intérêt dans l'histoire car ce sont des sous-ensembles du fût. On peut très bien les éclater pour les intégrer dans le fût et simplifier l'arborescence...
Après on se retrouve avec des attributs de composants suivant...
Que tu mette ANIMATECUSTOM(Niveau,3,,,490,590) pour OnClick je comprends que cela détermine le comportement pour le clic sur 'Tout'.
Mon problème c'est que tu mets dans la zone personnalisée
"AngleClapet =90-2.9-ACOS((Niveau-clapet!Z)/252.5)"
Puis "AxeY =clapet!Y+cos(Tout!AngleClapet+5.6)*247.6
Puis "AxeZ =clapet!Z+sin(Tout!AngleClapet+5.6)*247.6
et un attribut 'Niveau' en attribut non éditable.
En général, j'aime bien mettre les calculs dans le composant général parce que c'est plus simple que l'enfant lise une propriété du parent que l'inverse.
Niveau est la valeur qui est modifiée par le OnClick et qui représente le niveau NGF de l'eau ;
AngleClapet est l'angle du clapet calculé en fonction de la hauteur d'eau ;
AxeY et AxeZ sont les coordonnées de la position de l'axe du point d'accroche du vérin au clapet, calculés en fonction de l'angle de rotation du clapet.@unknownuser said:
Le composant#1 n'a rien, je comprends, il est figé, c'est le mur, le bajoyer selon le terme de métier.
Le composant 'Haut' est en fait le composant#5 de la fenêtre Structure puisque visiblement on peut lui donner un nom "dynamique" en plus de son nom de structure. Bon là, je te suis même s'il m'a fallut un petit moment pour choper cette possibilité.
Qu'un même composant puisse avoir deux noms je suis pas fan mais bon ...
Pareil pour le problème des noms dans les deux fenêtres, je n'ai toujours pas compris la logique. Quand je fais des composants dynamiques, je ne travaille plus avec la fenêtre de structure...@unknownuser said:
Dans sa position Z tu mets =clapet!Z+sin(Tout!AngleClapet+2.9)*252.5 ...
Dans l'idée tu calcule sa position Z sur la base du sinus du clapet avec les corrections nécessaire au décalages induits par la position de l'ensemble.Tu dois surement faire un calcul pour le X, puisque le composant avance avec le clapet...
Ben non... c'est la taille LenY que tu calcules avec =200+clapet!Y+cos(Tout!AngleClapet+2.9)*252.5
Là je pige pas ...
Le déplacement se fait selon l'axe vert, donc le Y.
Maintenant, c'est plus sympa que le "début" du plan d'eau (la partie qui ne touche pas le clapet) ne se déplace pas, donc qu'il s'agrandisse. Mais avec la texture qui s'étire, c'est pas top non plus... Il faut voir quelle solution est plus sympa, mais ça ne change pas grand chose puisque dans les deux cas, le calcul est issu de *cos(Tout!AngleClapet+2.9)252.5@unknownuser said:
Bon alors le composant dynamique Bas qui est en fait le composant#6 donc il n'est pas concerné.
Le Clapet est animé par calcul de RotX avec =Tout!AngleClapet c'est à dire =90-2.9-ACOS((Niveau-clapet!Z)/252.5) dans le paramètre "Tout".
Là on commence à faire un retour vers le haut, qui commence à me compliquer l'analyse. J'ai l'impression de faire un calcul en boucle dans un tableur. Ce n'est pas dans ma logique de travail façon Tableur...
Voilà justement un cas où le calcul peut se faire directement dans le RotX du clapet, mais comme j'avais commencé par animer l'angle dans la version précédente, j'ai laissé le calcul de l'angle dans le Tout...@unknownuser said:
On finit avec le vérin...
Tu lui affecte une rotation avec RotX et =ATAN(Tout!AxeY/(Z-Tout!AxeZ))
Va falloir que je révise mes bases...
Petit rappel de trigo : CAH-SOH-TOA (ou SOH-CAH-TOA...), soit "dans un traingle rectangle, Cos(a)=Adjacent/Hypoténuse, Sin(a)=Opposé/Hypoténuse et Tan(a)=Opposé/Adjacent.
Dans notre cas, on connait l'adjacent (AxeY) et l'opposé (Z-AxeZ, soit la hauteur du vérin moins la hauteur de l'axe) donc on utilise la tangente, et comme on veut l'angle, on prend la tan[sup:160ls1os]-1[/sup:160ls1os] ou l'arc-tan.@unknownuser said:
Par contre pour le paramètre perso "Position" et =SQRT(POWER(Tout!AxeY,2)+POWER(633.74-Tout!AxeZ,2)) il va falloir que je double ma ration d'aspirine
Ben là c'est toujours le triangle rectangle mais vu par Pythagore, la longueur de l'hypoténuse est égale à la racine carrée de la somme des carrés des deux autres cotés, en utilisant les mêmes calcul que pour l'angle... sauf que comme j'avais des petits problèmes de calage, j'ai remplacé la hauteur du vérin Z par sa valeur (633.74).@unknownuser said:
Bon, alors ... tu avoues ou il faut que j'appelle mon frangin ?....
Cordialement
Patrick
Ouai ouai... "cordialement" ??? vite dit !!!En espérant que ça éclaircisse la compréhension de tout ça
-
@unknownuser said:
Ok ok... je vais tout te dire... en fait, je ne suis pas le vrai DareDevil
je ne suis pas aussi résistant... je vais tout expliquer... ne frappe pas... s'il te plait...
Mince ! cela fait six mois que je crois parler à Daredevil...
Usurpateur
Signé : SUPERMAN (le vrai)
-
Je ne pourrais pas aider, tant que les composants dynamiques ne seront pas dans la version Free!
Quelqu'un avait montrer que l'on pouvait mais la manipe n'était pas des plus simple!So wait and see
D'un autre côté cela m'arrange bien, je peux finir d'autres choses pendant ce temps là!
Advertisement