Aller au contenu

chris_mtp

Membres
  • Compteur de contenus

    406
  • Inscription

  • Dernière visite

Tout ce qui a été posté par chris_mtp

  1. Ca marche nickel On pourrait aller encore plus loin mais après ce n'est qu"un souci de présentation du genre faire pivoter les bandes planimétriques selon l'axe en plan avec un angle de 100 gr et les aligner succesivement avec une longueur prédéfini en ajustant auparavant les bords de coupe pour n'avoir q'une partie du plan d'état des lieux qui corresponde à une partie du profil Mias c déjà bien En fait, ce lisp répond aussi aux deux sujets que j'avais posté sur les bissectrices qui sont donc maintenant résolu. Merci pour ton aide et encore congratulations. Bonne fêtes à tout le monde. John.
  2. Presque ca sauf que au lieu de créer deux polylignes fermées par segment de l'axe en plan, une seule polyligne qui comprend le segment décalé de gauche, le segment décalé à droite ainsi que les deux polylignes qui joint les deux extrémités. Merci par avance. John
  3. Merci Gile. Ca marche nickel mais juste un petit truc supp. Tu me dit si c'est possible et pas trop long sinon tu laisses tomber. Serait il possible pour chaque bande de créer un contour sous forme de polyligne fermés directement ? De manière à sélectionner d'un coup la bande planimétrique et non les quatres côtés de celle ci pour pouvoir les intégrer plus facilement dessous le profil en long. Sinon c pas grave. Merci quand même pour aide. John
  4. Ok c pour çà qu'il m'afficher l'erreur erreur: no function definition: 2D-COORD->PT-LST Merci quand même. John
  5. Merci quand ^même pour ton aide.
  6. Merci Gile pour ce lisp. Désolé de m'avoir mal exprimé dans mon sujet. Ton lisp décale parfaitement de chaque côté la polyligne 2D sélectionné. Il m'affiche à la fin ceci ; erreur: no function definition: 2D-COORD->PT-LST Mais après je voudrais ensuite joindre les sommets de la polyligne de gauche et de droite. En fait, tracer une nouvelle polyligne entre le premier sommet de la polyligne décalé à gauche et le premier sommet de la polyligne décalé à droite, puis tracer une nouvelle polyligne entre le second sommet de la polyligne décalé à gauche et le second sommet de la polyligne décalé à droite ainsi de suite jusqu'au dernier sommet pour crée à la fin des bandes planimétriques de mon axe en plan. J'arrive pas à insérer l'image qui pourrait mieux t'expliquer ce que je cherche. Attend je reviens
  7. Bonjour à tous, J'ai une polyligne 2D qui est en fait un axe en plan que je dois décaler de 30m de chaque côté puis couper les polylignes ainsi crées en chaque sommet. Attention, les polylignes découpés doivent rester des polylignes et ne doivent pas être des lignes d'ou l'impossibilité de décomposer les polylignes décalés. Le problème est que ma polyligne comporte 85 côtés donc 86 sommets . Ca fait donc 172 points de coupure a selectionner. ca fait long. Je dois ensuite joindre par des polylignes les sommets des polylignes décalés (donc de gauche et de droite) pour composer en fait des bandes planimétriques. Si quelq'un pourrait m'aider. Merci par avance. Chris_mtp
  8. Bonjour à tous Est il possible (en adpatant le lisp de gile ci-dessous) par sélection d'un axe en plan qui est en fait une polyligne 2d classique de tracer directement pour chaque sommet la bissectrice de l'angle correspondant et si possible d'une largeur prédéfini de part et d'autre de cet axe ? Je m'explique. j'ai un profil qui fait un peu plus de 90 côtés. Pour tracer les bissectrices, j'utilise le lisp de gile qui nécessite de sélectionner d'abord un côté puis l'autre avant de tracer la bissectrice de la longueur souhaité. Mais avec une polyligne de 90 côtés ou même plus, ca fait du taf de sélectionner un côté après l'autre puis de tracer la bissectrice voulue pour chaque sommet. ;;; C:BISSECTRICE 10/02/07 ;;; Crée une ligne sur la bissectrice de l'angle formé par les deux segments sélectionnés. (defun c:bissectrice (/ erreur acdoc space e1 e2 l1 l2 p1 p1e p1m p2 p2e p2m som ang gr pe) (defun erreur (msg) (if (= msg "Fonction annulée") (princ "\n*Annuler*") (princ (strcat "\nErreur: " msg)) ) (redraw) (setq *error* m:err m:err nil ) ) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace acdoc) (vla-get-ModelSpace acdoc) ) m:err *error* *error* erreur ) (while (not (setq e1 (entsel "\nSélectionnez le premier segment: ")) ) ) (while (not (setq e2 (entsel "\nSélectionnez le second segment: ")) ) ) (setq l1 (entget (car e1)) l2 (entget (car e2)) p1 (osnap (cadr e1) "_near") p2 (osnap (cadr e2) "_near") ) (if (and (or (and (member (cdr (assoc 0 l1)) '("XLINE" "RAY")) (setq p1m (mapcar '+ p1 (trans (cdr (assoc 11 l1)) 0 1 T))) (setq p1e (mapcar '- p1 (trans (cdr (assoc 11 l1)) 0 1 T))) ) (and (setq p1m (osnap (cadr e1) "_midpoint")) (setq p1e (osnap (cadr e1) "_endpoint")) ) ) (or (and (member (cdr (assoc 0 l2)) '("XLINE" "RAY")) (setq p2m (mapcar '+ p2 (trans (cdr (assoc 11 l2)) 0 1 T))) (setq p2e (mapcar '- p2 (trans (cdr (assoc 11 l2)) 0 1 T))) ) (and (setq p2m (osnap (cadr e2) "_midpoint")) (setq p2e (osnap (cadr e2) "_endpoint")) ) ) ) (if (vl-every '(lambda (x) (equal (caddr p1) (caddr x) 1e-009)) (list p1m p1e p2 p2m p2e) ) (if (and (null (inters p1 p1m p1 p1e)) (null (inters p2 p2m p2 p2e)) ) (if (setq som (inters p1 p1e p2 p2e nil)) (progn (setq ang (ang<2pi (/ (+ (angle som p1) (angle som p2)) 2.0))) (while (and (setq gr (grread T 12 0)) (/= (car gr) 3)) (if (= 5 (car gr)) (progn (redraw) (setq pe (polar som (if (< 0 (ang<2pi (- (angle som (cadr gr)) (+ (/ pi 2) ang))) pi ) (+ ang pi) ang ) (distance som (cadr gr)) ) ) (grdraw som pe -1) ) ) ) (vla-StartUndoMark acdoc) (vla-addLine space (vlax-3d-point (trans som 1 0)) (vlax-3d-point (trans pe 1 0)) ) (redraw) (vla-EndUndoMark acdoc) ) (princ "\nErreur: segments parallèles") ) (princ "\nErreur: segment non linéaire") ) (princ "\nErreur: segments non coplanaires ou non parallèles au plan du SCU courant" ) ) (princ "\nErreur: entité non valide") ) (setq *error* m:err m:err nil ) (princ) ) ;;; Ang<2pi Retourne l'angle, à 2*k*pi près, compris entre 0 et 2*pi (defun ang<2pi (ang) (if (and (<= 0 ang) (< ang (* 2 pi))) ang (ang<2pi (rem (+ ang (* 2 pi)) (* 2 pi))) ) ) Merci par avance de votre aide. Chris_mtp
  9. Merci Gile. Ca marche du feu de Dieu C'est exactement ce que je cherchais. En effet, ca marche même dans le SCG donc pas besoin chaque fois de déplacer le SCU suivant l'objet polyligne. Merci encore. Chris_mtp.
  10. chris_mtp

    MVSETUP

    Ca permet je crois de paramétrer un dessin comme les unites, facteur d'échelle .... mias ca fait longtemps que l'ai plus utilisé
  11. Salut, Désolé de ne pas vous avoir répondu avant mais j'étais parti en déplacement cette semaine. Non, le but est de tracer une polyligne 2d pour indiquer l'emplacement d'un profil. Des points topo sous forme de blocs en 3D sont situés de part et d'autre de cette polyligne 2D. En mettant le scu objet le long de cette polyligne 2D, le but serait de projeter sur cette polyligne en les copiant les blocs 3D dans un autre calque pour à la fin tracer une polyligne 3D passant par les blocs 3D projetés. J'ai testé le lisp avec les blocs à Z=0. En effet, ca marche bien. le but serait en fait simplement d'adapter le lisp mais pour des blocs en 3D avec si possible la possibilité de copier les blocs à projeté dans un autre calque. Ce n'est pas un problème de profil en long mais simplement de poly3D. Avec des projections orthogonales et une distance maximale de déport, c'est plus rapide surtout lorsqu'il faut tracer des profils avec 300 points par exemple. Merci par avance de votre aide. Chris_mtp.
  12. Dans ce cas, je n'ai pas copier le bon code car dans le sujet, il y a à la fin un lisp indiquant qu"on peut projeté des textes ou des blocs. Sinon, serait il possible d'adapter ce lisp mais cette fois ci pour des blocs type point topo toujours suivant le même principe en les copiant si possible dans un autre calque et en les projetant suivant l'axe des Y sur une polyligne 2d? Ceci, dans le but de créer une polyligne 3D par projection orthogonale de points topo. Pratique dans le cas de profils hydrauliques. Merci par avance Chris_mtp.
  13. C'est bon, je m'en suis sorti en faisant un nouveau lisp avec une nouvelle fonction d'appel, intégrer ton code, écrire un princ à la fin sans oublier les parenthèses et ca marche. Merci pour ton aide. Chris_mtp.
  14. Je ne trouve pas non plus la partie de lisp dans le AutoCAD.mnl qui permet d'appeler la commande ai_molc. Je voudrais simplement trouver ce code pour le copier dans un nouveau lisp et changer le nom de la fonction d'appel pour la personnaliser à mes besoins. Chris_mtp.
  15. Bonjour, J'ai récupérer ton lisp gile ui permet de projeter orthogonalement suivant l'axe Y des blocs sur une polyligne ou une courbe. ;; PtOnCurveY (gile) ;; Déplace parallèlement à l'axe Y les points, blocs textes sélectionnés sur la courbe (defun c:MoveOnCurveY (/ space dist curve pts coord line) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (setq space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace *acdoc*) (vla-get-ModelSpace *acdoc*) ) ) (if (and (setq dist (getdist "\nSpécifiez la longueur maximale: ")) (setq curve (car (entsel "\nSélectionnez la courbe: "))) (setq curve (vlax-ename->vla-object curve)) (IsCurveObject curve) (princ "\nSélectionnez les points, blocs ou textes: ") (ssget '((0 . "POINT,INSERT,MTEXT,TEXT"))) ) (vlax-for pt (setq pts (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object) ) ) ) (if (= (vla-get-ObjectName pt) "AcDbPoint") (setq coord (vlax-get pt 'Coordinates)) (setq coord (vlax-get pt 'InsertionPoint)) ) (setq line (vla-addLine space (vlax-3d-point (list (car coord) (- (cadr coord) dist) (caddr coord)) ) (vlax-3d-point (list (car coord) (+ (cadr coord) dist) (caddr coord)) ) ) ) (if (setq int (vlax-invoke curve 'IntersectWith line acExtendNone)) (vlax-put pt (if (= (vla-get-ObjectName pt) "AcDbPoint") 'Coordinates 'InsertionPoint ) (list (car int) (cadr int) (caddr int)) ) ) (vla-delete line) ) ) (princ) ) ;; IsCurveObject ;; Evalue si un objet (ename ou vla-object) est un "CurveObject" (defun IsCurveObject (obj) (and (or (= (type obj) 'VLA-OBJECT) (setq obj (vlax-ename->vla-object obj)) ) (member (vla-get-ObjectName obj) '("AcDbArc" "AcDbCircle" "AcDbEllipse" "AcDbLine" "AcDbPolyline" "AcDb2dPolyline" "AcDb3dPolyline" "Acdb2dSpline" ) ) ) ) Pourquoi ce lisp ne marche ou du moins ne déplace pas les blocs sélectionnés sur l'axe en question en conservant si possible le Z de départ ? Merci par avance de votre. Chris_mtp
  16. Bonjour à tous, Serait il possible par modification du lisp de Gile Getlayers, en sélectionnant un objet de rendre le calque de l'objet courant ? J'ai beau essayer d'insérer un c: après le defun mais autocad me retourne l'erreur suivante; erreur: nombre d'arguments insuffisants du coup !!!!!! ;; GETLAYERS (gile) 02/12/07 ;; Retourne la liste des calques cochés dans la boite de dialogue ;; ;; arguments ;; titre : le titre de la boite de dialogue ou nil (defaut = Choisir les calques) ;; lst1 : la liste des calques à pré-cochés ou nil ;; lst2 : la liste des calques non cochables (grisés) ou nil (defun c:getlayers (titre lst1 lst2 / toggle_column tmp file lay layers len dcl_id) (defun toggle_column (lst) (apply 'strcat (mapcar (function (lambda (x) (strcat ":toggle{key=" (vl-prin1-to-string x) ";label=" (vl-prin1-to-string x) ";}" ) ) ) lst ) ) ) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (while (setq lay (tblnext "LAYER" (not lay))) (setq layers (cons (cdr (assoc 2 lay)) layers)) ) (setq layers (vl-sort layers '<) len (length layers) ) (write-line (strcat "GetLayers:dialog{label=" (cond (titre (vl-prin1-to-string titre)) ("\"Choisir les calques\"") ) ";:boxed_row{:column{" (cond ((< len 12) (toggle_column layers)) ((< len 24) (strcat (toggle_column (sublist layers 0 (/ len 2))) "}:column{" (toggle_column (sublist layers (/ len 2) nil)) ) ) ((< len 45) (strcat (toggle_column (sublist layers 0 (/ len 3))) "}:column{" (toggle_column (sublist layers (/ len 3) (/ len 3))) "}:column{" (toggle_column (sublist layers (* (/ len 3) 2) nil)) ) ) (T (strcat (toggle_column (sublist layers 0 (/ len 4))) "}:column{" (toggle_column (sublist layers (/ len 4) (/ len 4))) "}:column{" (toggle_column (sublist layers (/ len 2) (/ len 4))) "}:column{" (toggle_column (sublist layers (* (/ len 4) 3) nil)) ) ) ) "}}spacer;ok_cancel;}" ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "GetLayers" dcl_id)) (exit) ) (foreach n lst1 (set_tile n "1") ) (foreach n lst2 (mode_tile n 1) ) (action_tile "accept" "(setq lst nil) (foreach n layers (if (= (get_tile n) \"1\") (setq lst (cons n lst)))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) lst ) Merci par avance de votre aide. Chris_mtp
  17. Merci Gile pour ce lisp modifie Je l'ai testé dans diverses config comme des poly 2d joint à des poly 3d, des poly 3d non jointives, des poly 3d jointives d'un même calque et appartenant à des calques différents. Et franchement, il n'y a pas de problème. Le lisp marche à merveille et dans tous les cas de figure. Merci encore qui je pense va rendre service à plus d'un. Chris_mtp.
  18. Bonjour à tous. Serait il possible à partir du lisp de Gile de, au lieu de sélectionner soi-même les polylignes 3D à joindre, sélectionner de manière automatique tous les polylignes 3D d'un même calque et de les joindre si elles sont jointives sinon non et ceci pour tous les calques d'un dessin autocad ? ;; Join3dPoly (gile) ;; Joint les objets sélectionnés en une polyligne 3d s'ils sont jointifs ;; La polyligne est créée avec les propriétés courantes (calque, couleur, ...) (defun c:Join3dPoly (/ Space ss lst plst olst n 3p) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (setq Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace *acdoc*) (vla-get-ModelSpace *acdoc*) ) ) (while (not (ssget '((-4 . " (0 . "LINE") (-4 . " (0 . "POLYLINE") (70 . 8) (-4 . "AND>") (-4 . " (0 . "LWPOLYLINE") (70 . 0) (-4 . "AND>") (-4 . "OR>") ) ) ) ) (vlax-for obj (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (cond ((= (vla-get-ObjectName obj) "AcDbLine") (setq lst (cons (cons obj (list (vlax-get obj 'StartPoint) (vlax-get obj 'EndPoint) ) ) lst ) ) ) ((= (vla-get-ObjectName obj) "AcDbPolyline") (setq lst (cons (cons obj (PlinePoints obj)) lst)) ) ((= (vla-get-ObjectName obj) "AcDb3dPolyline") (setq lst (cons (cons obj (3d-coord->pt-lst (vlax-get obj 'Coordinates))) lst ) ) ) ) ) (while (and lst (< (length olst) 2)) (setq plst (cdar lst) olst (list (caar lst)) lst (cdr lst) n 0 ) (while (and lst (< n (length lst))) (cond ((equal (cadar lst) (last plst) 1e-9) (setq plst (append plst (cddar lst)) olst (cons (caar lst) olst) lst (cdr lst) n 0 ) ) ((equal (last (cdar lst)) (car plst) 1e-9) (setq plst (append (cdar lst) (cdr plst)) olst (cons (caar lst) olst) lst (cdr lst) n 0 ) ) ((equal (cadar lst) (car plst) 1e-9) (setq plst (append (reverse (cdar lst)) (cdr plst)) olst (cons (caar lst) olst) lst (cdr lst) n 0 ) ) ((equal (last (cdar lst)) (last plst) 1e-9) (setq plst (append plst (cdr (reverse (cdar lst)))) olst (cons (caar lst) olst) lst (cdr lst) n 0 ) ) (T (setq lst (append (cdr lst) (list (car lst))) n (1+ n) ) ) ) ) ) (if (and (= 1 (setq n (length olst))) (< 1 (vla-get-Count ss))) (princ "\nObjets non jointifs.") (progn (vla-StartUndoMark *acdoc*) (vlax-invoke Space 'add3dPoly (apply 'append plst)) (if (= 1 n) (princ "\n1 objet a été transformé en polyligne 3d.") (princ (strcat "\n" (itoa n) " objets ont été joints en une polyligne 3d." ) ) ) (mapcar 'vla-delete olst) (vla-EndUndoMark *acdoc*) ) ) (vla-delete ss) (princ) ) ;;; 3d-coord->pt-lst ;;; Convertit une liste de coordonnées 3D en liste de points ;;; (3d-coord->pt-lst '(1.0 2.0 3.0 4.0 5.0 6.0)) -> ((1.0 2.0 3.0) (4.0 5.0 6.0)) (defun 3d-coord->pt-lst (lst) (if lst (cons (list (car lst) (cadr lst) (caddr lst)) (3d-coord->pt-lst (cdddr lst)) ) ) ) ;;; PlinePoints ;;; Retourne la liste des sommets (coordonnées SCG) de la polyligne (ename ou vla-object) (defun PlinePoints (pl / sub) (vl-load-com) (or (= (type pl) 'VLA-OBJECT) (setq pl (vlax-ename->vla-object pl)) ) (defun sub (l e n) (if l (cons (trans (list (car l) (cadr l) e) n 0) (sub (cddr l) e n) ) ) ) (sub (vlax-get pl 'Coordinates) (vla-get-Elevation pl) (vlax-get pl 'Normal) ) ) En effet, j'ai un plan autocad de restitution qui pèse plus de 100Mo avec un nombre de polylignes important et j'aimerais automatiser certaines procédures. Je n'ariive pas non plus à lister moi même la liste des calques d'un dessin autocad avec la fonction getlayer.ou a moins que cette fonction serve à choisir le calque courant.. Merci par avance de votre aide. Chris_mtp
  19. Merci Bonuscad pour ton aide. Le lisp marche très bien et fonctionne à merveille. Du coup, maintenant, cela va me réduire énormément pour les prochains chantiers le temps de traitement. Pour l'astuce du format TXT, ca marche aussi. Bravo Chris_mtp
  20. Que dire de mieux Parfait Pour la distance de point à point c'est bon. C'est sur, c'est pas la même chose que si je calcule mes distances cumulés à partir du premier sommet mais sous excel après je modifie le fichier. Par contre, dis moi quel parti du code dois je modifier pour inclure les entetes de lignes Numéro, Dist.partielle, Dist.cum,Z, X,Y dans le fichier de sortie. Bravo encore et merci
  21. Oui pas de prob ce n'est pas pressé. Ok pour la commande Unique ou multiple. En effet, avec une Lwpolyligne, il n'y a pas de problème. Pas de probleme non plus, distance de point à point pour les distances partielles et distance du premier point au point n pour les distances cumulées. De tout façon, mes profils en travers sont linéaires. Par contre, pour le choix du fichier de destination, c'est principalement le but d'avoir un nom de fichier unique pour chaque profil en travers exporté. Du coup, si on peut choisir le nom du fichier comme le bout de lisp que je t'ai joins précedemment. Merci tout de même. Et je te confirme encore, avec des poly2D en sélection unique ou multiple, ca marche très bien.
  22. chris_mtp

    quelqu\'un peut m\'aider

    Bonjour, Si avec un simple copier coller ca ne marche je ne sais pas quoi t edire car au travail avec la version 2009, ca marche très bien et que ce soit avec Excel 2003 ou Vista. Essaye peut être en objet OLE Sinon tu as la possibilité de convertir des tableaux en image mais ca risque de prendre du temps. Chris_mtp
  23. Bonjour Bonuscad Déjà bravo comme d'hab pour ce lisp qui en servira plus d'un à mon avis y compris LECrab Je l'ai testé Pas mal le truc de choisir le type de séparateur. Par contre, Ya deux trois trucs Lorsque je sélectionne une polyligne 3D, le fichier xyz créer comporte uniquement les deux premiers sommets de la polyligne et non pas tous les sommets. Lorsque je sélectionne une première polyligne et donc créer le premier fichier xyz puis dans un second temps répète cette manip avec une seconde polyligne , le fichier xyz de la seconde polyligne comporte les sommets de la première polyligne. On dirait qu'il n'y a pas de mise à jour. Serait il possible au lieu d'avoir les distances 3d entre les sommets d'avoir que les distances 2D comme un vrai. JE ne comprends pas la demande Sélection Unique ou multiple, c'est pour un segment de la polyligne ou pour toute la polyligne ? Deplus, je te joins un bout de lisp récupérer sur cadxp qui permet je crois de de choisir le répertoire du fichier de destintation avec une fenêtre windows classique. JE ne sais pas ou doit on l'inserer dans le lisp final pour avoir cette opportunité (setq dirname (getfiled "Select a location to save the layer list..." "layers.csv" "csv" 1)) (setq file (open dirname "w")) (write-line (strcat "Layer List for " (getvar "dwgprefix") (getvar "dwgname")) file) (write-line "" file) (write-line "NAME, COLOR, LINETYPE, STATUS" file) (setq count 0) (setq f 1) (while (setq row (tblnext "LAYER" f)). Je sais plus d'ou viens ce lisp ou du moins de qui il provient. Je vais cherché la source. Merci par avance tout de même pour ta précieuse aide. Chris_mtp
  24. Bonjour LEcrabe C'est sur que je peux très bien m'en sortir avec ce lisp et un fichier excel et peut être aussi que j'en demande trop mais mon seul point faible est que je ne connais vraiment mais vraiment rien de rien à la programmation. Même si je modifie le lisp en question Du coup, si cinq à dix minutes (pour les personnes qui connaissent le lisp bien sur) de votre temps me permettrai d'éviter des dizaines voire des centaines de manipulation sous bloc notes et excel ceci dans le but d'éviter les erreurs de retranscription d'une part et d'autre part de répéter une manip 323 fois pour 323 profils en travers, ce me serait grandement utile. Mais rien de vous oblige à m'aider, c'est sur. Chris_mtp
  25. Pas de porblème. Je me suis trompé en postant ce sujet sur le forum de Covadis. Merci pour ton aide. er par contre, si on pourrait choisir le répertoire de destination du fichier créer, ce serait génial. Merci tout de même. Chris_mtp
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité