Curlygoth Posté(e) le 21 mai 2021 Auteur Posté(e) le 21 mai 2021 Alors Méthode @didier : 13.16 Méthode @(gile) : -0.42 EXO.dwg Methode didier Function MATH_ALTI_POINT_TRIANGLE(Pa, Pb, Pc, Pm) Vab = VECTEUR(Pa, Pb) Vac = VECTEUR(Pa, Pc) Vn = PROD_SCALAIRE(Vab, Vac) MATH_ALTI_POINT_TRIANGLE = Z_VECTEUR_NORMAL_Pa(Pa, Pm, Vn) End Function Function VECTEUR(Pa, Pb) Dim V(0 To 2) As Double For i = 0 To 2 V(i) = Pb(i) - Pa(i) 'Vecteur ab Next i VECTEUR = V End Function Function PROD_SCALAIRE(Vab, Vac) Dim V(0 To 2) As Double V(0) = Vab(1) * Vac(2) - Vab(2) * Vac(1) V(1) = Vab(2) * Vac(0) - Vab(0) * Vac(2) V(2) = Vab(0) * Vac(1) - Vab(1) * Vac(0) PROD_SCALAIRE = V End Function Function Z_VECTEUR_NORMAL_Pa(Pa, Pm, Vn) T1 = Pa(0) * Vn(0) + Pa(1) * Vn(1) T2 = Pa(2) * Vn(2) T3 = Pm(0) * Vn(0) T4 = Pm(1) * Vn(1) Z_VECTEUR_NORMAL_Pa = (T1 + T2 - T3 - T4) / Vn(2) End Function methode gilles Function CoordZ(pt1 As Variant, pt2 As Variant, pt3 As Variant, pt As Variant) As Double Dim norm(0 To 2) As Double norm_ = CrossProduct(Vector(pt1, pt2), Vector(pt1, pt3)) pt = ThisDrawing.Utility.TranslateCoordinates(pt, acWorld, acOCS, False, norm_) pt(2) = 0# pt = ThisDrawing.Utility.TranslateCoordinates(pt, acOCS, acWorld, False, norm_) CoordZ = pt(2) End Function Function Vector(pt1 As Variant, pt2 As Variant) As Variant Dim result(0 To 2) As Double result(0) = pt2(0) - pt1(0) result(1) = pt2(1) - pt1(1) result(2) = pt2(2) - pt1(2) Vector = result End Function Function DotProduct(v1 As Variant, v2 As Variant) As Double DotProduct = v1(0) * v2(0) + v1(1) * v2(1) + v1(2) * v2(2) End Function Function CrossProduct(v1 As Variant, v2 As Variant) As Variant Dim result(0 To 2) As Double result(0) = v1(1) * v2(2) - v1(2) * v2(1) result(1) = v1(2) * v2(0) - v1(0) * v2(2) result(2) = v1(0) * v2(1) - v1(1) * v2(0) CrossProduct = result End Function Mon site Web (en cours de construction) : Site DA-CODE de @didier
didier Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 Bonjour @Curlygoth Je vois que tu y es arrivé, c'est ok. Je vais sans doute me servir de cet exemple pour mon site, d'ailleurs j'ai plein d'exemples en LSP que je vais migrer en VBA pour que tout le monde ait les mêmes chances de progresser. Je rends (encore une fois) hommage à @(gile) qui, très tôt, nous a orienté sur le travail avec les vecteurs, on a tous fait un grand pas en avant à la suite de ses explications. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 La méthode que j'ai donné avec TranslateCoordinates est fausse (je suis allé un peu trop vite en besogne), celle avec la calcul vectoriel (dotProduct) est "juste" (si j'ai bien compris la demande). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 @Curlygothla fonction que tu appelles PROD_SCALAIRE dans la "méthode didier" calcule en fait le produit vectoriel. À définir des fonctions réutilisables, autant les nommer correctement... EDIT : et le nom de la fonction Z_VECTEUR_NORMAL_Pa n'est pas très explicite. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 Bonjour @Curlygoth Je ne comprends pas ce que tu as écrit dans le dessin que tu proposes en téléchargement. Il semblerait que tu obtiennes deux résultats différents, comment est-ce possible ? Je veux bien quelques explications… Je trouve 15.3507 pour l'altitude du point cherché, on est OK ? En espérant que tu ne prennes pas la mouche : Tu n'es pas très ancien sur le site aussi je me permets de te demander de faire quelques efforts d'explication, déposer un dessin sans commentaires, faire une réponse lapidaire n'est pas forcément une bonne chose, car quand on écrit sur les forums, les gens qui lisent n'ont pas forcément ton cheminement intellectuel ni ton niveau de connaissance et se retrouvent avec plus de questions que de réponses en te lisant. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Curlygoth Posté(e) le 21 mai 2021 Auteur Posté(e) le 21 mai 2021 Quote Il semblerait que tu obtiennes deux résultats différents, comment est-ce possible ? Je veux bien quelques explications... Oui c'est bien le problème 😊 avec ta méthode : je trouve 13 et des patates (ce qui est faux car je dois etre entre 14,51 et 16,41) et je trouve -0.4282 avec la méthodes de transformation de @(gile) qui est aussi erroné @(gile) J'ai jamais été bon pour donner des noms aux fonctions XD et j'ai un probleme avec : Function CoordZ_(pt1 As Variant, pt2 As Variant, pt3 As Variant, pt As Variant) As Double Dim norm_1(0 To 2) As Double norm_1 = CrossProduct(Vector(pt1, pt2), Vector(pt1, pt3)) Dim zAxis(0 To 2) As Double zAxis(2) = 1# CoordZ_ = DotProduct(norm_1, Vector(pt, pt1)) / DotProduct(norm_1, zAxis) End Function Me dit : "impossible d’affecter à un tableau sur norm_1" La je comprends pas tout à l'air carré... d'ailleurs diviser deux matrices en VBA... @didier J'ai mis le dwg sans explication car gile me l'a demander hier 😉 désolé ^^ mais ok oui je note ^^ Pour le dessin J'ai voulu dessiner en 3D la face3D des 3 pts, pour avoir une surface ensuite j'ai dessiné "physiquement et manuellement" une polyligne verticale pour avoir sa longueur (et donc le Z attendu (environ 15.34)) vu que j'ai "dessiner géométriquement" le résultat, et bien je me suis lancer dans des calculs (voir au début du posts avec CTzen) donc vous ENORMEMENT aidé !! et je vous en remercie beaucoup ! mais il y a des couacs (peut-être du a mes connaissances erronés justement 😝) Quote ton niveau de connaissance Mon site Web (en cours de construction) : Site DA-CODE de @didier
didier Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 Coucou Ah c'est donc pas si simple que ça, si tu trouves deux résultats différents l'un des deux est forcément faux, et il semblerait qu'en l'occurrence les deux sont faux. Est-ce que la valeur que je t'ai proposée est correcte à tes yeux ? J'ai vérifié (comme à chaque fois que j'écris quelque chose) et pour moi c'est bon... Dans quelle mesure on peut t'aider sur ce coup ? Tu connais les formules et il n'y a plus qu'à les appliquer, tu n'aurais pas des variables déconnantes ? Sont-elles correctement déclarées ? À suivre Éternel débutant... Mon site perso : Programmer dans AutoCAD
Curlygoth Posté(e) le 21 mai 2021 Auteur Posté(e) le 21 mai 2021 Quote Est-ce que la valeur que je t'ai proposée est correcte à tes yeux ? Quote Je trouve 15.3507 pour l'altitude du point cherché, on est OK ? Oui ce sera ça donc j'ai fait un boulette c'est sur ! Function MATH_ALTI_POINT_TRIANGLE(Pa, Pb, Pc, Pm) Vab = VECTEUR(Pa, Pb) Vac = VECTEUR(Pa, Pc) Vn = PROD_SCALAIRE(Vab, Vac) MATH_ALTI_POINT_TRIANGLE = Z_VECTEUR_NORMAL_Pa(Pa, Pm, Vn) End Function Function VECTEUR(Pa, Pb) Dim V(0 To 2) As Double For i = 0 To 2 V(i) = Pb(i) - Pa(i) 'Vecteur ab Next i VECTEUR = V End Function Function PROD_SCALAIRE(Vab, Vac) Dim V(0 To 2) As Double V(0) = Vab(1) * Vac(2) - Vab(2) * Vac(1) V(1) = Vab(2) * Vac(0) - Vab(0) * Vac(2) V(2) = Vab(0) * Vac(1) - Vab(1) * Vac(0) PROD_SCALAIRE = V End Function Function Z_VECTEUR_NORMAL_Pa(Pa, Pm, Vn) T1 = Pa(0) * Vn(0) + Pa(1) * Vn(1) T2 = Pa(2) * Vn(2) T3 = Pm(0) * Vn(0) T4 = Pm(1) * Vn(1) Z_VECTEUR_NORMAL_Pa = (T1 + T2 - T3 - T4) / Vn(2) Mon site Web (en cours de construction) : Site DA-CODE de @didier
(gile) Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 18 minutes ago, Curlygoth said: J'ai jamais été bon pour donner des noms aux fonctions Avec PROD_SCALAIRE ce n'est pas seulement "ne pas être bon" c'est carrément "être faux" en donnant comme à une opération celui d'un autre. Je vais essayer de prendre le temps pour une petite explication des base du calcul vectoriel. 22 minutes ago, Curlygoth said: et j'ai un probleme avec : Function CoordZ_(pt1 As Variant, pt2 As Variant, pt3 As Variant, pt As Variant) As Double Dim norm_1(0 To 2) As Double norm_1 = CrossProduct(Vector(pt1, pt2), Vector(pt1, pt3)) Dim zAxis(0 To 2) As Double zAxis(2) = 1# CoordZ_ = DotProduct(norm_1, Vector(pt, pt1)) / DotProduct(norm_1, zAxis) End Function Me dit : "impossible d’affecter à un tableau sur norm_1" La je comprends pas tout à l'air carré... Ça c'est ton domaine, c'est du VBA, je n'ai jamais vraiment compris ces histoires de variants (je n'ai jamais vraiment cherché non plus), mais tu peux essayer : Dim norm_1 As Variant = CrossProduct(Vector(pt1, pt2), Vector(pt1, pt2)) Dim norm_1 As Variant = CrossProduct(Vector(pt1, pt2), Vector(pt1, pt2)) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Curlygoth Posté(e) le 21 mai 2021 Auteur Posté(e) le 21 mai 2021 J'ai fait différemment : Vu qu'on ne peut apparement pas mettre un tableau dans un tableau (ça le fait aussi quand je doit mettre une list dans une liste) et je fait ça : temp = CrossProduct(Vector(pt1, pt2), Vector(pt1, pt3)) For i = 0 To 2 norm_1(i) = temp(i) Next i bah le variant, je l'appelle le joker... il peut varié dans ton code ! c'est à la fois génial et surtout très casse gueule ! 😝 @didier Par contre là c'est bon !!!! j'avais une erreur de frappe... j'avais donc un Z=0 dans mon point A... MERCI CHAMPION @(gile) Tu trouve combien quand tu fais tourner tes codes ? Édit: sinon t'embête pas je peux rester avec ce j'ai 😉 En tout cas merci merci beaucoup !! Mon site Web (en cours de construction) : Site DA-CODE de @didier
didier Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 Bonjour @Curlygoth C'est avec ce genre de code que la notion de rigueur prend de l'importance. Tant qu'on "joue" avec des entités, qu'il faut les déplacer ou les copier, ou encore les changer de couleur, on trouve des bidouilles et c'est vite et facilement vérifiable. Avec la géométrie analytique ou les mathématiques on ne peut plus "bidouiller" et la rigueur prend tout son sens. Autre chose que je ne comprends pas, tu dis : "bah le variant, je l'appelle le joker... il peut varié dans ton code ! c'est à la fois génial et surtout très casse gueule !" J'espère que tu t'es mal exprimé, car c'est FAUX, il est impossible de changer de type en cours de code Si la variable n'est pas déclarée (mauvaise pratique) elle est typé implicitement en variant, Dès qu'une valeur lui est attribuée, VBE type la variable suivant la valeur (string, integer...) et ensuite, c'est figé. Je guette les réponses pour exprimer mes excuses si je suis dans l'erreur Tu nous expliques s'il te plaît. Par ailleurs je ne comprends pas non plus : "mais je comprned pas le Ac" C'est quoi Ac ? Et en dernier je dirais qu'il est possible de mettre un tableau dans un tableau. Ça fait beaucoup de commentaires pour un message, mais je me contente du maximum à commencer par la rigueur dans les propos exprimés, on n'est pas sur un réseau Asocial à déblatérer sur le clébard de la concierge. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 @Curlygoth Manifestement, tu ne sais pas ce que sont produit scalaire et produit vectoriel et tu ne comprends pas complètement les codes qu'on te donne. Le produit scalaire de deux vecteurs (dot product en anglais) est un nombre réel (appelé scalaire). Le produit vectoriel de deux vecteurs (cross product en anglais) est un vecteur, donc un simple tableau unidimensionnel en VBA, il n'est pas question de "tableau dans un tableau". Le corps de la fonction CrossProduct que j'ai donné est exactement le même que celui de celle que tu as improprement appelée PROD_SCALAIRE. La seule différence est dans la déclaration des arguments et du type de retour et là on touche à un autre truc qui me sort par les yeux en VBA : le typage plus ou moins dynamique et les déclarations optionnelles. Donc je te laisse te dépatouiller avec ça, c'est toi qui connais le VBA. Sinon les résultats que j'ai avec la méthode utilisant le produit scalaire donne les bon résultats (du moins en LISP). Cette méthode est équivalente à celle donnée par @didier elle met juste l'utilisation du produit scalaire sous une forme explicite. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Curlygoth Posté(e) le 21 mai 2021 Auteur Posté(e) le 21 mai 2021 Alors je vais traiter vos réponses dans l'ordre et avec grand respect que j'ai pour vous 😀 Je commence par @didier Quote J'espère que tu t'es mal exprimé, car c'est FAUX, il est impossible de changer de type en cours de code alors dans les faits d'exactitude tu as raison mais j'ai appris que si on ne declare pas de variable elle se met en variant "automatiquement" et tu remarquera les guillements du coup si tu dit dim TOTO as variant et ensuite toto = 1 toto = "A" tu n'aura pas de probleme d'où l'utilisation peu abusive du mot joker, car si on mets un liste ou tableau sans le déclarer ça marche pas ! (sauf sur apel d'une "fonction") Quote Par ailleurs je ne comprends pas non plus : "mais je comprned pas le Ac" Ce qui est drôle c'est que le correcteur a accepté le "comprned" mais pas le "Ac" pt = ThisDrawing.Utility.TranslateCoordinates(pt, acOcs, acWorld, False, norm) enfin bref c'etait par rapport au acOCS qui est le plan normal des "blocs" ce que je n'avais pas compris et donc je ne voyais pas comment l'avoir sans le produit vectoriel... que d'ailleurs je ne maitrise pas totalement... et c'est une belle transition pour répondre @(gile) Quote Manifestement, tu ne sais pas ce que sont produit scalaire et produit vectoriel et tu ne comprends pas complètement les codes qu'on te donne. C'est pour ça que je préférè qu'on me donne les formules 😉 Mais pour être encore plus précis avec toi : je ne l'ai pas vu à l'école (enfin les vecteur si quand même) mais uniquement sur du 2D ! Donc hier soir, j'ai regardé une vidéo qui explique. Mais disons le clairement : sans pratique c'est compliqué de maitriser ! (un peu comme au échec du reste) Voilà ! Mon site Web (en cours de construction) : Site DA-CODE de @didier
didier Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 Bonjour @Curlygoth Dans l'ordre d'apparition : "les faits d'exactitude" On parle de quoi d'autre ? Ce qui est avéré a sa place sur un site qui sera lu par des débutants, ne rien écrire qui puisse prêter à confusion sauf spécification explicite. Le coup de la variable qui change de type est osé pour le VBA. Le lisp n'exige pas déclaration et de typage lui et c'est sa façon intrinsèque de fonctionner, pas le VBA. Pourquoi écris-tu "automatiquement alors que le vrai mot est "implicitement" puisque déclaration il y a tout de même avec le gâchis en réservation de mémoire qui va avec, as-tu lu mes pages sur "Option Explicit" ? Il me semble que les arguments sont recevables (pour le moins) Il semble que certains réquisits ne sont pas acquis, le "ac" est le préfixe pour les OBJETS propres à AutoCAD, je suis quelque peu surpris de ta question pour un programmeur sur AutoCAD. Au même titre que "vb" est le préfixe pour VBA et "ex" pour les objets Excel. J'ai fait une page là-dessus, mais tu ne l'as pas lue visiblement, c'est celle des "constantes". Ensuite pour les formules, assurément, c'est pas simplissime, pour (gile) comme pour moi, les souvenirs scolaires sont lointains et d'autant ténus, à dix-sept ans je travaillais déjà, tu veux qu'on parle d'école ? Par contre, la rigueur d'application des formules n'a rien à voir avec ça, on peut appliquer une formule inconnue à la lettre et faire fonctionner un programme avec, je suis d'accord que ce n'est pas valorisant, mais c'est factuel. "C'est pour ça que je préfère qu'on me donne les formules" On ne peut pas te donner plus de formules que celles fournies, il y a tout, sans compter que (gile) s'est fendu d'une explication explicitement explicite et je le remercie explicitement. Je vais sans doute stopper là cette discussion qui pollue le sujet et revenir à la question liminaire. Tu en es où ? Et comment on peut t'aider ? Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Curlygoth Posté(e) le 21 mai 2021 Auteur Posté(e) le 21 mai 2021 Quote Il semble que certains réquisits ne sont pas acquis, le "ac" est le préfixe pour les OBJETS propres à AutoCAD oui je suis d'accord, mais mon correcteur orthographique lui n'en sais rien 😉 Quote Pourquoi écris-tu "automatiquement alors que le vrai mot est "implicitement" puisque déclaration car je n'ai pas l'art de ton écriture et je m'en excuse 😉 Quote "C'est pour ça que je préfère qu'on me donne les formules" On ne peut pas te donner plus de formules que celles fournies, il y a tout, sans compter que (gile) s'est fendu d'une explication explicitement explicite et je le remercie explicitement. moi aussi je le remercie ! une formule : je m'attendais plus à ça ^^ vous m'avez mâcher le travail... c'est très bien ! mais il est vrai comme dit @(gile) que je ne comprends pas du coup toutes les formules que vous m'avez donner hormis celle que j'ai écrite ou réécrite car j'ai regarder un cours hier soir ce qui malheureusement ne fait pas de moi un expert ^^ Quote Tu en es où ? Et comment on peut t'aider ? tu semble tracasser pourtant j'ai écrit plus haut dans ce message : où d'ailleurs je t'ai "insulté" de champion 😈 Mon site Web (en cours de construction) : Site DA-CODE de @didier
(gile) Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 J'ai ajouté une page à la rubrique Tutoriels de gileCAD avec un petit topo sur le calcul vectoriel (en LISP). J'ai essayé de refaire un peu ce que j'avais fait sur AcadLabs l'ancien site de @didier. Le code VBA que, manifestement, je ne suis pas arrivé à écrire est une extrapolation pour cette demande particulière de la routine gc:IntersLinePlane à la fin de cette page. 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Curlygoth Posté(e) le 21 mai 2021 Auteur Posté(e) le 21 mai 2021 C'est parfait !!! Merci @(gile) Et merci aussi encore a @didier pour le formule du z et me disant d'avoir le vecteur normal ! Mon site Web (en cours de construction) : Site DA-CODE de @didier
(gile) Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 5 minutes ago, Curlygoth said: Et merci aussi encore a @didier pour le formule du z et me disant d'avoir le vecteur normal ! Cette phrase ne veut absolument rien dire. S'il te plait, fait un effort quand tu postes un message essaye qu'il soit compréhensible et prend le temps de te relire pour t'en assurer. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 Bonjour @(gile) Bravo, super page, très utile. Car dans les problèmes que les gens rencontrent avec la programmation est souvent l'incapacité de résoudre le sujet "à la main" (alors le programmer ?) @Curlygoth On va dire que c'est une faute de frappe (taquinerie), car tu écris par erreur "vecteur normal" (sans e) et il faut lire, le vecteur de la normale du plan. Édition du message : je reviens sur le vecteur normal pour modérer mon propos ou plutôt le préciser, j'avais appris que c'était le vecteur de la normale du plan, je suis allé vérifier depuis et on trouve du vecteur normal un peu partout, donc OK dans cette acception normal signifie définissant "la normale". On parle de normale dans le cas de talus et d'épaisseur de terre à déposer par exemple. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
CTZen Posté(e) le 21 mai 2021 Posté(e) le 21 mai 2021 Il a écrit son message comme un mec qui vient de finir un gros apéro AutoCAD Map 3D 2025 Covadis 18.3c + AutoPiste Windows 11 Famille v.24H2 - 64 bits Toujours à l'affût des bonnes astuces
(gile) Posté(e) le 23 mai 2021 Posté(e) le 23 mai 2021 Une dernière tentative en VBA (pas testée). J'ai remplacé tous les Variants dans les déclarations par de Double(). Function Vector(pt1() As Double, pt2() As Double) As Double() Dim result(0 To 2) As Double result(0) = pt2(0) - pt1(0) result(1) = pt2(1) - pt1(1) result(2) = pt2(2) - pt1(2) Vector = result End Function Function DotProduct(v1() As Double, v2() As Double) As Double DotProduct = v1(0) * v2(0) + v1(1) * v2(1) + v1(2) * v2(2) End Function Function CrossProduct(v1() As Double, v2() As Double) As Double() Dim result(0 To 2) As Double result(0) = v1(1) * v2(2) - v1(2) * v2(1) result(1) = v1(2) * v2(0) - v1(0) * v2(2) result(2) = v1(0) * v2(1) - v1(1) * v2(0) CrossProduct = result End Function Function CoordZ(pt1() As Double, pt2() As Double, pt3() As Double, pt() As Double) As Double Dim norm(0 To 2) As Double = CrossProduct(vect(pt1, pt2), vect(pt1, pt3)) Dim zAxis(0 To 2) As Double zAxis(2) = 1.0 CoordZ = DotProduct(norm, Vector(pt, pt1) / DotProduct(norm, zAxis) End Function Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 24 mai 2021 Posté(e) le 24 mai 2021 Pour ceux que ça intéresse, avec .NET, c'est plus simple et plus explicite. C# static double? CoordZ(Point3d p1, Point3d p2, Point3d p3, Point3d p) { var plane = new Plane(p1, p2, p3); var line = new Line3d(p, Vector3d.ZAxis); return line.IntersectWith(plane)?[0].Z; } F# let coordZ (p1: Point3d) (p2: Point3d) (p3: Point3d) (p: Point3d) = match (new Line3d(p, Vector3d.ZAxis)).IntersectWith(new Plane (p1, p2, p3)) with | null -> None | pts -> Some pts.[0].Z Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant