Aller au contenu

Messages recommandés

Posté(e)

Cette idée reviens souvent : lorsque je mets des cotations sur mon plan , j'oubli souvent de mettre le calque en courant. Ne se rait il pas possible que dès qu'une cote est mise sur le plan , elle soit automatiquement sur le calque "cotation", idem pour les hachures?

Cela serait tellement bon. sI un lispeur passe par là....

  • Réponses 50
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Posté(e)

Salut,

oui, c'est possible, avec les réacteur de commandes.

 

Test ça :

cela te permet de mettre automatiquement les cotes sue le calque "cotation" ou les textes sur le calque "texte".

Attention, ceci fonctionne dans le principe de variable : Variable Bred-CoteAuto à mettre sur 1 et variable Bred-TxtAuto à mettre sur 1 si tu veux utiliser l'outil.

Ceci est enregistré dans la base de registre (HKEY_CURRENT_USER\\Software\\Bred\\Variables)

 

;;; Ecriture Automatique des cotes dans calque "cote"
;;; Ecriture Automatique des textes dans calque "texte"
;;; par Fred BONNAUD le 17/04/2007
;;; Version 1.0

;;; Ecrire/Changer Variable + valeur
(defun PUT-var (variable valeur)
 (vl-registry-write "HKEY_CURRENT_USER\\Software\\Bred\\Variables" variable valeur)
 (princ)
)
;;;Récupérer valeur variable
(defun GET-var (variable)
 (setq valvar (vl-registry-read "HKEY_CURRENT_USER\\Software\\Bred\\Variables" variable))  
 valvar
)

; Cotes sur Calque
(defun c:Bred-CoteAuto (/ val test)
 (if (equal (GET-var "Bred-CoteAuto") nil)
   (vl-registry-write "HKEY_CURRENT_USER\\Software\\Bred\\Variables" "Bred-CoteAuto" 0)
   )
 (while (equal test nil)
   (setq val (getint (strcat "\n Entrez une Nouvelle valeur pour Bred-CoteAuto <" (rtos (GET-var "Bred-CoteAuto"))"> :")))
   (if (not (or (equal val 0)(equal val 1)(equal val nil)))
     (progn (princ "Choix : 0 ou 1")(setq test nil))
     (setq test "ok")
     )
   )    
 (PUT-var "Bred-CoteAuto" val)
 (princ)
)

; Texte sur Calque
(defun c:Bred-TxtAuto (/ val test)
 (if (equal (GET-var "Bred-TxtAuto") nil)
   (vl-registry-write "HKEY_CURRENT_USER\\Software\\Bred\\Variables" "Bred-TxtAuto" 0)
   )
 (while (equal test nil)
   (setq val (getint (strcat "\n Entrez une Nouvelle valeur pour Bred-TxtAuto <" (rtos (GET-var "Bred-TxtAuto"))"> :")))
   (if (not (or (equal val 0)(equal val 1)(equal val nil)))
     (progn (princ "Choix : 0 ou 1")(setq test nil))
     (setq test "ok")
     )
   )    
 (PUT-var "Bred-TxtAuto" val)
 (princ)
)

;;; Test pour Réaction FIN de Commandes (à compéter si besoin)
(defun Reacteur_FIN_Commandes (Rea Cde)  
 	(cond    		
	((and (equal (car Cde) "DIMLINEAR")(equal (GET-var "Bred-CoteAuto") 1))  
	 (entmod (subst (cons 8 "Cotation")(assoc 8 (entget (entlast)))(entget (entlast)))))
	
	((and (equal (car Cde) "DIMALIGNED")(equal (GET-var "Bred-CoteAuto") 1)) 
	 (entmod (subst (cons 8 "Cotation")(assoc 8 (entget (entlast)))(entget (entlast)))))
	
	((and (equal (car Cde) "DIMCONTINUE")(equal (GET-var "Bred-CoteAuto") 1))
	 (progn
	   (setq dernier_obj (entnext dernier_obj))
	   (while dernier_obj
	     (entmod (subst (cons 8 "Cotation")(assoc 8 (entget dernier_obj)) (entget dernier_obj)))
	     (setq dernier_obj (entnext dernier_obj)))))
	
	((and (equal (car Cde) "MTEXT")(equal (GET-var "Bred-TxtAuto") 1)) 
	 (entmod (subst (cons 8 "Texte")(assoc 8 (entget (entlast)))(entget (entlast)))))
	
	(t nil)
)    	)

;;; Réacteur de Test de FIN de Commande à charger au démarrage.
(if (not Rea_FIN_Commandes)
 (setq Rea_FIN_Commandes (vlr-command-reactor nil
		    (list (cons :vlr-commandEnded
				(function Reacteur_FIN_Commandes)))))
)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bonjour,

 

il te suffit de rajouter clayer;cotation; devant la macro des boutons qui t'interresse

du genre, pour une cotation linéaire : ^C^Cclayer;cotation;_dimlinear

 

voila. c'est du bricolage mais ca fonctionne

 

a+

 

Rémy

 

Bon j'ai répondu après Bred, en beaucoup moins technique...

 

[Edité le 17/4/2007 par grand_sapin]

Posté(e)

Re,

la prposition de grand_sapin fonctionne, mais attention, cela t'active le calque désigné, et à moins que pour tous les outils (ligne ...) tu fasse un chagement de calque, il y a un risque de te retrouver avec des objets qui ne seront pas sur le bon calque (si tu fais une ligne après une cote par exemple).

mais c'est une méthode "plus douce" ... ;)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bred, c'est super de te voir jouer aussi avec les réacteurs ;)

Je pense toutefois que, dans le cas présent, c'est un peu sortir l'artillerie lourde (en terme de ressources) pour palier à des étourderies.

La solution grand_sapin est plus légère.

 

Toutefois, aucune des deux ne s'assure que le calque "cotation" existe bien.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)
Toutefois, aucune des deux ne s'assure que le calque "cotation" existe bien.

 

je le crées (entmod ....)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Les petits gars, une meilleure solution en script !

 

^C^C_dimlinear \\\chprop d  ca cotation;;

 

Avantage : ne change pas le calque courant

 

Inconvénients : marche pour une cote en 3 clics (pour selectionner un objet, créer un autre bouton)

Plante si le calque n'existe pas mais peut être contourner en ajoutant l'option Etablir de la commande Calque avant, dans la macro

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Salut Tramber,

Ton script peut fonctionner pour les cotes continus ?

(c'était un point délicat pour mon code...)

ça me dégouterrais bien de ne pas y avoir pensé ...

 

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bonjour,

 

je vous explique un peu comment je fonctionne avec les cotes.

 

Donc, je commence par créer un style de cote que j'appelle cot-1 dans lequel je défini tous le paramètres de taille de flèche, de taille de texte de décalage etc ... sans me préoccuper de l'échelle. C'est mon style de cote au 1:1ème et tous les autres styles de cotes seront créés à partir de ce modèle. J'en fait une copie que j'appelle, par exemple cot-50,et je change simplement l'échelle générale de l'onglet ajuster du style de cote où je remplace 1 par 50. Je fais pareil pour la cot-100 où je remplace 1 par 100, on s'en serait douté. Etc ...

 

J'ai donc un fichier avec une série de styles de cotes :

cot-1

cot-2

cot-5

cot-10

...

cot-50

cot-100

...

cot-500

 

fichier que j'enregistre comme mon prototype et que j'utilise tout le temps.

 

Je trouve aussi qu'il est intéressant d'avoir un calque par échelle de cotation. Donc un calque cot-50 pour les cotes créées avec le style de cote cot-50, un calque cot-100 etc ... plutôt que d'avoir un seul calque qui s'appelle cotation. Pourquoi ? Parce qu'il m'arrive de vouloir utiliser le même dessin pour en faire 2 fmults avec 2 échelles différentes (un plan d'ensemble au 1:100 + un plan de détai au 1:20l). Donc avec 2 styles de cotations sur le même dessin. Après il suffit de geler les cotes 1:20 dans la fmult 1:100 et inversement.

Avantage : s'il y a une modification à faire, on change le plan d'ensemble et le plan de détail est modifié du même coup.

 

Après, sur le principe, je fais un peu comme grand_sapin, c'est à dire que je me place sur le bon style de cotation et le bon calque avant de faire la cote, plutôt que de mettre en branle des réacteurs, comme le propose Bred.

 

le dcl

dcl_settings : default_dcl_settings { audit_level = 0 ;}

Cct : dialog {
     label = "PLACER UNE COTE";
     : row {
       : boxed_radio_column {
         label = "Type de cotation";
         key = typ_cot;
         : radio_button {
           label = "Linéaire";
           mnemonic = "L";
           key = lin;
         }
         : radio_button {
           label = "Alignée";
           mnemonic = "A";
           key = ali;
         }
         : radio_button {
           label = "conTinue";
           mnemonic = "T";
           key = con;
         }
         : radio_button {
           label = "ligne de Base";
           mnemonic = "B";
           key = lig;
         }
         : radio_button {
           label = "Ordonnée";
           mnemonic = "O";
           key = ord;
         }
         : radio_button {
           label = "Rayon";
           mnemonic = "R";
           key = ray;
         }
         : radio_button {
           label = "anGulaire";
           mnemonic = "G";
           key = ang;
         }
         : radio_button {
           label = "Diamètre";
           mnemonic = "D";
           key = dia;
         }
       }
       : boxed_radio_column {
         label = "ECHELLE";
         key = typ_ech;
         : radio_button {
           label = "Echelle 1:1";
           key = "cot-1";
         }
         : radio_button {
           label = "Echelle 1:2";
           key = "cot-2";
         }
         : radio_button {
           label = "Echelle 1:5";
           key = "cot-5";
         }
         : radio_button {
           label = "Echelle 1:10";
           key = "cot-10";
         }
         : radio_button {
           label = "Echelle 1:20";
           key = "cot-20";
         }
         : radio_button {
           label = "Echelle 1:25";
           key = "cot-25";
         }
         : radio_button {
           label = "Echelle 1:50";
           key = "cot-50";
         }
         : radio_button {
           label = "Echelle 1:75";
           key = "cot-75";
         }
         : radio_button {
           label = "Echelle 1:100";
           key = "cot-100";
         }
         : radio_button {
           label = "Echelle 1:200";
           key = "cot-200";
         }
         : radio_button {
           label = "Echelle 1:250";
           key = "cot-250";
         }
         : radio_button {
           label = "Echelle 1:500";
           key = "cot-500";
         }
       }
     }
     spacer_1;
     ok_cancel;
}

 

le lisp

;;; créer un calque
(defun calque (NewLayer ColLayer TlLayer)
 (if (not (tblsearch "LTYPE" TlLayer))
   (command "_LINETYPE" "_L" TlLayer "acadiso" "")
 )
 (if (not (tblsearch "LAYER" NewLayer))
     (command "_layer" "_M" NewLayer "_CO" ColLayer "" "_LT" TlLayer "" "")
     (command "_LAYER" "_T" NewLayer "_ON" NewLayer "_S" NewLayer "")
 )
)

;------------------------------------------------------------------------------

(defun place_cote (TYP_COT)
 (cond
   ((= TYP_COT "lin")
     (princ (strcat "\nCotation linéaire au 1:" (substr TYP_ECH 5)))
     (command "_dimlinear")
   )
   ((= TYP_COT "ali")
     (princ (strcat "\nCotation alignée au 1:" (substr TYP_ECH 5)))
     (command "_dimaligned")
   )
   ((= TYP_COT "con")
     (princ (strcat "\nCotation continue au 1:" (substr TYP_ECH 5)))
     (command "_dimcontinue")
   )
   ((= TYP_COT "lig")
     (princ (strcat "\nCotation ligne de base au 1:" (substr TYP_ECH 5)))
     (command "_dimbaseline")
   )
   ((= TYP_COT "ord")
     (princ (strcat "\nCotation ordonnée au 1:" (substr TYP_ECH 5)))
     (command "_dimordinate")
   )
   ((= TYP_COT "ray")
     (princ (strcat "\nCotation rayon au 1:" (substr TYP_ECH 5)))
     (command "_dimradius")
   )
   ((= TYP_COT "ang")
     (princ (strcat "\nCotation angulaire au 1:" (substr TYP_ECH 5)))
     (command "_dimangular")
   )
   ((= TYP_COT "dia")
     (princ (strcat "\nCotation diamètre au 1:" (substr TYP_ECH 5)))
     (command "_dimdiameter")
   )
   ((= TYP_COT "rep")
     (princ (strcat "\nCotation repère au 1:" (substr TYP_ECH 5)))
     (command "_leader")
   )
 )
)
;------------------------------------------------------------------------------


;------------------------------------------------------------------------------
(defun init_cct (/ prefix cfgname cfg)
 (if (not TYP_COT) 
   (setq TYP_COT "lin")
 )
 (if (not TYP_ECH)
   (setq TYP_ECH "cot-50")
 )
)
;------------------------------------------------------------------------------


;------------------------------------------------------------------------------
(defun do_accept_cct ()
 (setq TYP_COT (get_tile "typ_cot"))
 (setq TYP_ECH (get_tile "typ_ech"))
 (done_dialog 1)
)
;------------------------------------------------------------------------------



;------------------------------------------------------------------------------
; programme principal
;------------------------------------------------------------------------------
(defun c:CCT (/ OLD_CMD WHAT_NEXT DCL_ID)
 (if (= (getvar "cmdactive") 1)
   (command "_exit")
 )
;;  (setvar "DIMASSOC" 1)              ; cotation non associative
;;  (setvar "DIMASSOC" 2)              ; cotation associative
 (init_cct)
 (setq dcl_id (load_dialog "cct.dcl"))
 (if (not (new_dialog "Cct" dcl_id)) (exit))
 (set_tile "typ_cot" TYP_COT)
 (set_tile "typ_ech" TYP_ECH)

 (action_tile "accept" "(do_accept_cct)")
 (action_tile "cancel" "(done_dialog 0)")

 (setq what_next (start_dialog))
 (unload_dialog dcl_id)
 (if (= what_next 1)   ;OK
   (progn
     (setq OLD_CMD (getvar "cmdecho"))
     (setvar "cmdecho" 0)
     (if (not (tblsearch "DIMSTYLE" TYP_ECH))
       (alert (strcat "Le style de cote " TYP_ECH " n'existe pas"))
       (progn
         (calque TYP_ECH "7" "CONTINUOUS")  ;; la couleur 7 pour le calque
         (command "_dimstyle" "_r" TYP_ECH) ;; restaurer le style de cote
         (place_cote TYP_COT)
       )
     )     
     (setvar "cmdecho" OLD_CMD)
   )
 )
 (princ)
)

 

Bien entendu, pour les textes, je fais quelque chose de tout à fait similaire.

 

Amicalement

Zebulon_

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)
Salut Tramber,

Ton script peut fonctionner pour les cotes continus ?

 

Non, à ce moment là, il faut reprendre la solution de grand_sapin du calque courant.

 

Sur LT c'est un peu chiant (mais possible) mais en version pleine, rien n'empêche de mettre un tout petit peu de lisp dans le bouton pour retenir le CLAYER avant de le restituer.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

(gile) :

Bred, c'est super de te voir jouer aussi avec les réacteurs
Je pense toutefois que, dans le cas présent, c'est un peu sortir l'artillerie lourde

 

Zebulon :

plutôt que de mettre en branle des réacteurs, comme le propose Bred

 

Bon... ben moi, je vais me coucher... :(

On ne me reprendra plus de sitôt à proposer un truc avec des réacteurs ...

 

complétement ecoeuré .... :mad:

 

;)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)
idem pour les hachures?

 

Pour les hachures passe par la palette d'outil, Motif-calque sont créés même s'il n'existe pas (excellent) et surtout tu es sur(e) d'etre toujours sur le bon calque!!!

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Super, merci pour vos réponses.

Tramber:

j'aime bien mais ca marche top, il faut a chaque fois choisir le calque. Moi l'idée, c'est lorsque on en oubli une ou deux.

grand-sapin:

J'aime pas trop l'idée de mettre le calque actif a chaque fois, même si c'est que'il faut faire pour avoir un dessin propre, je rejoins un peu la remarque de Bred

Bred:

pour le code , ca a de la geule, mais je sais pas comment on l'utilise. Et est il possible de faire machine arriere si cela ne me plait pas?

Zebulon:

J'aime pas quand la liste de calque est trop longue, cela augmente encore plus le risque d'erreur de calque.

Merci a tous pour vos réponse, je vais essayer de faire un petit quelque chose avec tous ca.

Encore une petite idée : pourquoi pas un petit dcl pour parametrer tous ca?

Posté(e)

Bonjour à tous

 

On peut faire très simple sans programmation ni script.

 

Créer une cote sur le calque cotation.

 

La faire ensuite glisser dans la palette d'outils.

 

Et voila maintenant les cotes se placeront automatiquement sur le bon calque sans tenir compte du calque courant et quelque soit le type de cote (linéaire, rayon, angle)

 

Il faut au minimum AutoCAD 2005 pour faire cela

Posté(e)

Re,

Charger un lisp : là. (gile)

 

Et est il possible de faire machine arriere si cela ne me plait pas?

Tout à fait, c'est juste un code que tu charge ou pas à l'ouverture d'un nouveau plan.

 

Moi l'idée, c'est lorsque on en oubli une ou deux.

.. ben tu n'as qu'à utiliser le changement de propriétés ... (_matchprop)

 

... mais pour défendre un peu ma proposition, je n'ai pas fait de mise qur calque des hachures (je peux le faire), mais je peux mettre n'importe quel entité sur un calque voulus.... sans changer de bouton, ni la macro.

Et c'est "dédébrayable !" ....

 

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

plutôt que de mettre en branle des réacteurs, comme le propose Bred

 

j'ai dit ça par pure jalousie parce que je n'y connais absolument rien aux réacteurs

 

J'aime pas quand la liste de calque est trop longue, cela augmente encore plus le risque d'erreur de calque.

pas d'accord puisque c'est le lisp qui met automatiquement la cote sur le bon calque. Cela fait 15 ans que je fais comme ça et je n'ai jamais mis une cote sur un autre calque que celui qui lui est destiné puisque j'utilise tout le temps mon outil. Après, c'est facile de filtrer les calques de cote en faisant un filtre "cot-*" sur le nom. Maintenant, tu fais comme tu as envie.

Les calques sont là pour différencier les choses qui ne sont pas de même nature. Moi, je suis plutôt de l'avis de ne pas se priver, même si la liste devient longue. Il suffit de se définir un certaine logique au niveau des noms de calques pour pouvoir facilement filtrer.

 

Après, si tu as un jour l'opportunité de bosser dans un gros bureau d'études, on te diras "pour les textes, les cotes et les calques, tu feras comme ça et pas autrement !". On passe tous par là un jour ou l'autre. C'est peut être contraignant, mais c'est le seul moyen de bosser ensemble.

 

Et puis, si tu as un jour l'opportunité de travailler dans une cellule de synthèse sur un gros projet, tu n'aimeras pas recevoir des fichiers qui ne contiennent que 3 calques (un pour le trait fin, un pour le trait moyen et un pour le trait fort) où tu ne sauras pas distinguer un mur d'une cloison ou d'une porte.

 

Mais je m'égare ...

 

Amicalement

Zébulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

re,

 

Moi l'idée, c'est lorsque on en oubli une ou deux.

 

pour les cotations, en guise d'outils moins violent, tu peux faire ça :

 

(defun c:cc ()
 (if (not (tblobjname "LAYER" "cotations"))
   (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) "cotations"))
 (command "_LAYMCH" (ssget "_X" '((0 . "DIMENSION"))) "" "N" "cotations")
 )

 

tu tapes cc sur la ligne de commade, et toutes les cotes présentes seront placé sur le calque "cotation" (à modifier si besoin)

 

mais tu es sous quelle version ?

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Pour le "fun" et dans le même esprit que la dernière de Bred (que j'espère n'avoir pas froissé ;) )

 

Pour mettre toutes les cotes sur claque "cotation"

 

(defun c:cc ()
 (mapcar
   '(lambda (x)
      ((lambda	(e)
  (entmod
    (subst '(8 . "cotation")
	   (assoc 8 e)
	   e
    )
  )
)
 (entget x)
      )
    )
   (mapcar 'cadr (ssnamex (ssget "_X" '((0 . "DIMENSION")))))
 )
 (princ)
) 

 

[Edité le 17/4/2007 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)
(...) que la dernière de Bred (que j'espère n'avoir pas froissé ;) )

Si !!!... :mad:

 

;)

 

Preuve :

Ton code, (gile) ... ben je voulais faire pareil, mais je suis presque sûr que le miens est plus rapide ....

(mais bon... faut voir la quantité de cote tu me diras ...)

 

bon, daccord, il y a un (command ... mais justement ....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bred, apperement, ton dernier code, il se bloque après avoir fait la selection des objets.

Bah je vais essayer celui de (gille)

Encore un merci pour toute vos réponses

 

Posté(e)
Super, merci pour vos réponses.

Tramber:

j'aime bien mais ca marche top, il faut a chaque fois choisir le calque. Moi l'idée, c'est lorsque on en oubli une ou deux.

 

Pas du tout, ta macro est mal copiée.

 

J'en reviens à ce qu'à dit Jalna et qui est parfaitement adapté : avec les palettes d'outils, tu eux créer des outils cotations qui vont dans les bons calques, ourquoi se prende la tête.

 

MESSAGE CLOS (je déconne :cool: )

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Oups, je viens de relire ce qu'écrit Eric. On est d'accord.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

c'est vrai, avec les palettes , plus de probleme. Mais j'aime pas trop m'en servir en dehors des blocs. Les vielles habitudes....c'est plus rapide par les menus je trouve, et comme dit mon patron, le temps c'est du pognon.

Finalement, j'ai jeté mon dévolu sur la macro de (gille), super, juste ce que je recherché. Je vais même peut etre l'adapter pour d'autre objet.

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant



×
×
  • 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é