Aller au contenu

Noms de calques


chris_mtp

Messages recommandés

Bonjour à tous et BONNE ANNEE 2009

 

Est il possible à partir du lisp ci-dessous en utilisant la fonction Getlayers que gile a programmé d'insérer à la suite sous forme de texte et dans 2 colonnes le noms des calques d'un dessin ?

 

J'ai essayé moi même mais deux choses,

 

Comment définir le nombre de textes et par conséquent de calques à insérer sous forme de texte ?

Comment définir un point d'insertion pour que les noms des calques s'insérent les uns à la suite des autres ?

 

 (defun c:gel_fen ()
(foreach l (getlayers "Textes" nil)
(setq ptb (getpoint "\nSpécifiez le point d'insertion: "))
(command "-reseau" l)
)
(princ)
)

;;=========================================================;;

;; GETLAYERS (gile) 03/11/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)
;; lst : la liste des calques à pré-cochés ou nil

(defun getlayers (titre lst / 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))
)
)
(T
(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))
)
)
)
"}}spacer;ok_cancel;}"
)
file
)
(close file)
(setq dcl_id (load_dialog tmp))
(if (not (new_dialog "GetLayers" dcl_id))
(exit)
)
(foreach n lst
(set_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.

John

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne comprends pas bien ce que tu veux faire.

 

Pour avoir le nombre de calques sélectionnés avec GetLayers, il faut d'abord récupérer la liste, puis utiliser la fonction length.

 

(setq liste_de_calques (getlayers "Textes" nil))

(setq nombre_de_calques (length liste_de_calque))

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

Lien vers le commentaire
Partager sur d’autres sites

Oui l'entête du lisp peut paraître bizarre. En effet, il ne marche pas.

 

Je veux tout simplement en sélectionnant dans la boite de dialogue insérer sous forme de texte le noms des calques présents dans un plan.

Avant je rentrer les noms des calques à la main et si il y en a 80 ou 100 calques, je les rentre un à un aprés les avoir exporter sous excel d'où mon idée de réaliser ce petit lisp.

 

Merci pour ton aide.

John

Lien vers le commentaire
Partager sur d’autres sites

Voici en fait l'entête que j'ai pu réaliser mais seul hic

 

 (defun c:nom_calques (/ pti liste_de_calques nombre_de_calques txt)
(setq liste_de_calques (getlayers "Textes" nil))
(setq nombre_de_calques (length liste_de_calque))
(setq pti (getpoint "\nSpécifiez le point haut d'insertion des textes: "))
(foreach label_nombre_de_calques
(command "_text" "bg" pti "5" "100" txt)
(princ)
)

 

Après avoir coché dans la boîte de dialogue GetLayers,

 

Comment insérer le nom des calques cochés sous forme de texte (ou label) à partir du point d'insertion sous forme de deux colonnes les uns à la suite des autres ?

 

Comment utliliser la commande foreach ?

 

Merci par avance de votre aide.

John.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Pour une colonne, c'est assez simple, à partir du point spécifier, on peut deux fois la hauteur de texte courante à la coordonnée Y pour trouver le point d'insertion suivant.

 

Pour deux colonnes, il faut calculer le décalage en X par rapport au premier point d'insertion en fonction du texte le plus long.

On peut par exemple multiplier ce nombre de caractère par la hauteur de texte courante.

 

On peut alors procéder avec deux boucles repeat sur chaque moitié de la liste en incrémentant un indice et le point d'insertion

 

;; liste des noms de calque
(setq lst (getlayers "Textes" nil))

;; point d'insertion du premier txte
(setq pti (getpoint "\nSpécifiez le point haut d'insertion des textes: "))

;; nombre d'éléments de la liste
(setq nb (length lst))

;; hauteur de texte courante
(setq ts (getvar "TEXTSIZE"))

;; décalage en Y
(setq ht (* 2 ts))

;; décalage en X
(setq lg (* (apply 'max (mapcar 'strlen lst)) ts))

;; pt = point d'insertion des textes
(setq pt pti)

;; première colonne
(setq n 0)
(repeat	(/ nb 2)
 (command "_.text" pt "" "" (nth n lst))
 (setq	n  (1+ n)
pt (list (car pt) (- (cadr pt) ht))
 )
)

;; deuxième colonne
(setq pt (list (+ (car pti) lg) (cadr pti)))
(repeat	(- nb (/ nb 2))
 (command "_.text" pt "" "" (nth n lst))
 (setq	n  (1+ n)
pt (list (car pt) (- (cadr pt) ht))
 )
)

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

Lien vers le commentaire
Partager sur d’autres sites

J'ai inséré la partie du code dans le lisp d'origine.

Ca marche nickel mais les calques s'affichent dans l'ordre alphabétique inverse de celui proposé dans la boite de dialogue.

 

Il traite les noms de calques de Z à A apparemment et non de A à Z.

Existe il une solution ?

 

En tout cas, merci de ton aide gile et de ce lisp assea détaillé.

John.

Lien vers le commentaire
Partager sur d’autres sites

Nickel encore une question après c bon je pourrais modifier le lisp selon mes besoins.

 

Comment faire pour utiliser la command find en lisp et remplacer un texte par un autre ?

J'ai essayé avec (command "_find" "calques" "layers") mais ca ne marche pas et dans l'aide de VisualLisp, j'ai cherché mais pas trouvé.

 

 

Lien vers le commentaire
Partager sur d’autres sites

Il n'y a pas de commande, mais on peut faire un LISP qui :

- sélectionne les objets texte (et/ou mtexte)

- lit la valeur de chaque texte sélectionné pour chercher le texte à remplacer

- modifie l'objet si le texte correspond.

 

S'agit-il de remplacer tout le texte ou une partie seulement ?

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

Lien vers le commentaire
Partager sur d’autres sites

Par rapport à la première demande, je te propose une autre méthode qui consiste à scinder la liste des calques en 2. Ceci permet de calculer le décalage de la deuxième colonne par rapport au plus long nom de la première

 

;; liste des noms de calque
(setq lst1 (getlayers "Textes" nil nil))

;; point d'insertion du premier texte
(setq pti (getpoint "\nSpécifiez le point haut d'insertion des textes: "))

;; scinder la liste en 2
(repeat (/ (length lst) 2)
 (setq lst2 (cons (car lst1) lst2)
lst1 (cdr lst1)
)
 )
(setq lst1 (reverse lst1))

;; hauteur de texte courante
(setq ts (getvar "TEXTSIZE"))

;; décalage en Y
(setq ht (* 2 ts))

;; décalage en X
(setq lg (* (apply 'max (mapcar 'strlen lst1)) ts))

;; première colonne
(setq pt pti)
(foreach txt lst1
 (command "_.text" pt "" "" txt)
 (setq	pt (list (car pt) (- (cadr pt) ht)))
)

;; deuxième colonne
(setq pt (list (+ (car pti) lg) (cadr pti)))
(foreach txt lst2
 (command "_.text" pt "" "" txt)
 (setq	pt (list (car pt) (- (cadr pt) ht)))
)

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

Lien vers le commentaire
Partager sur d’autres sites

J'ai testé le lisp que tu viens de poster mais il y des calques qui s'insérent deux fois.

Un problème surement dans les variables lst1 et lst2. Je sais pas.

 

Mais sinon j'ai déjà ajouté un décalage de +10 en Y pour la deuxième colonne. Et même si je change la variable textsize au maximum que je l'utilise, il n'y a pas de superposition des textes donc c'est bon.

 

Une fois le noms des calques insérés, Après je peux modifier l'emplacement comme je veux.

En tout cas, merci Cela va bien m'aider.

 

John.

 

Lien vers le commentaire
Partager sur d’autres sites

J'ai testé le lisp que tu viens de poster mais il y des calques qui s'insérent deux fois.

Un problème surement dans les variables lst1 et lst2. Je sais pas.

 

Il faut que ces variables soient déclarées localement :

(defun c:nom_calques (/ lst1 lst2 ...) ...)

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

Lien vers le commentaire
Partager sur d’autres sites

J'ai rédéfini les variables de ton code mais toujours des textes superposés.

De même, avec le code précedent, on dirait qu'il y a une variable qui bloque entre la première partie du lisp et la fonction Getlayers.

Voici le code que j'ai pu assembler.

En surligner les parties du code que j'ai modifié. J'ai essayé de modifier le décalage entre les colonnes mais aussi de changer la variable n par m mais nada.

 

 (defun c:llist_layer (/ lst1 pti pt nb ts ht lg m)
;; liste des noms de calque
(setq lst1 (reverse (getlayers "Textes" nil)))

;; point d'insertion du premier texte
(setq pti (getpoint "\nSpécifiez le point haut d'insertion des textes: "))

;; nombre d'éléments de la liste
(setq nb (length lst1))

;; hauteur de texte courante
(setq ts (getvar "TEXTSIZE"))

;; décalage en Y
[surligneur] (setq ht (* 1.5 ts))[/surligneur]

;; décalage en X
[surligneur] (setq lg (+ (* (apply 'max (mapcar 'strlen lst1)) ts) 90))[/surligneur]

;; pt = point d'insertion des textes
(setq pt pti)

;; première colonne
[surligneur] (setq m 0)[/surligneur]
(repeat (/ nb 2)
(command "_.text" pt "" "" (nth m lst1))
[surligneur] (setq m (1+ m)[/surligneur]
pt (list (car pt) (- (cadr pt) ht))
)
)

;; deuxième colonne
(setq pt (list (+ (car pti) 70) (cadr pti)))
(repeat (- nb (/ nb 2))
(command "_.text" pt "" "" (nth m lst1))
(setq m (1+ m)
pt (list (car pt) (- (cadr pt) ht))
)
)
(prin1)
)
(defun getlayers (titre lst / 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))
)
)
(T
(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))
)
)
)
"}}spacer;ok_cancel;}"
)
file
)
(close file)
(setq dcl_id (load_dialog tmp))
(if (not (new_dialog "GetLayers" dcl_id))
(exit)
)
(foreach n lst
(set_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
)

J'ai essayé de renommer les variables mais rien n'y fait.

Les textes s'insérent tous aux mêmes endroits ou soit certains textes sont superposés.

On dirait qu'il y a un problème sur le nombre calques sélectionnés dans la boite de dialogue Getlayers. Je sais pas ....

Merci par avance de ton aide.

John

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

J'ai rédéfini les variables de ton code mais toujours des textes superposés.

 

Tu n'utilises pas l'expression que je t'ai donnée, en faisant :

(setq pt (list (+ (car pti) 70) (cadr pti)))

tu ajoutes une constante (70) à la coordonnée X, le décalage sera donc toujours le même quelques soit la hauteur de texte et le nombre de caractères dans les noms de calques

 

En faisant :

(setq lg (* (apply 'max (mapcar 'strlen lst1)) ts))

je récupère le nombre de caractères du nom de claque le plus long dans la première colonne et je le multiple par la hauteur de texte, lg sera toujours proportionnel.

 

Essaye ça, avec la dernière version de getLayers

 

(defun c:llist_layer (/ lst1 lst2 pti pt ts ht lg)

 ;; liste des noms de calque
 (setq lst1 (getlayers "Textes" nil nil))

 ;; point d'insertion du premier texte
 (setq	pti (getpoint
      "\nSpécifiez le point haut d'insertion des textes: "
    )
 )

 ;; scinder la liste en 2
 (repeat (/ (length lst) 2)
   (setq lst2 (cons (car lst1) lst2)
  lst1 (cdr lst1)
   )
 )
 (setq lst1 (reverse lst1))

 ;; hauteur de texte courante
 (setq ts (getvar "TEXTSIZE"))

 ;; décalage en Y
 (setq ht (* 2 ts))

 ;; décalage en X
 (setq lg (* (apply 'max (mapcar 'strlen lst1)) ts))

 ;; première colonne
 (setq pt pti)
 (foreach txt lst1
   (command "_.text" pt "" "" txt)
   (setq pt (list (car pt) (- (cadr pt) ht)))
 )

 ;; deuxième colonne
 (setq pt (list (+ (car pti) lg) (cadr pti)))
 (foreach txt lst2
   (command "_.text" pt "" "" txt)
   (setq pt (list (car pt) (- (cadr pt) ht)))
 )
 (princ)
)

;; 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 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
((	((	 (strcat (toggle_column (sublist layers 0 (/ len 2)))
	 "}:column{"
	 (toggle_column (sublist layers (/ len 2) nil))
 )
)
((	 (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
)

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Gile,

 

J'ai essayé ton lisp mais toujours ce problème de superposition de textes.

J'ai essayé plusieurs manip mais toujours le même prob.

 

Mais je pensais, ce n'est pas un problème de la variable TEXTSIZE car c'est la seule variable commun au décalage en X et en Y. On pourrait par exemple entrer une valeur de texte nous même.

Quand on le répète 3 fois de suite, au bout de la 3eme ca marche par contre après plus.

De plus, j'ai vu que dans la boîte de dialogue GetLayers, le nom du calque en bas de la 3eme colonne est le même que le premier de la 4eme colonne.

Au moment du lancement du lisp, il dit "NOM du calque" redéfinition de la touche.

Je sais pas si ce problème est spécifique à AutoCAD 2008 mais......

 

Sinon au lieu de compter le nombre de caractères du nom de calque le plus long, on ne peut pas insérer un décalage constant de 80 ou 90.

 

Merci par avance de ton aide.

John.

 

Lien vers le commentaire
Partager sur d’autres sites

J'ai essayé ton lisp mais toujours ce problème de superposition de textes

 

Peut être simplement un problème d'accroche objet.

Soit tu désactive ton accrochobj avant la routine, soit tu fais une modification mineure dans le lisp.

 

(command "_.text" pt "" "" txt)

en

(command "_.text" "_none" pt "" "" txt)

 

Ceci présent 2 fois dans le lisp de (gile)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Je modifie rapidement le lisp de (gile), j'espère que ça ira !

 

(defun c:llist_layer (/ lst1 lst2 pti pt ts ht lg sv_col l_layers)

;; liste des noms de calque
(setq lst1 (getlayers "Textes" nil nil))

;; point d'insertion du premier texte
(setq pti (getpoint
"\nSpécifiez le point haut d'insertion des textes: "
)
)

;; scinder la liste en 2
(repeat (/ (length lst) 2)
(setq lst2 (cons (car lst1) lst2)
lst1 (cdr lst1)
)
)
(setq lst1 (reverse lst1))

;; hauteur de texte courante
(setq ts (getvar "TEXTSIZE"))

;; décalage en Y
(setq ht (* 2 ts))

;; décalage en X
(setq lg (* (apply 'max (mapcar 'strlen lst1)) ts))

;; première colonne
(setq pt pti)
(setq sv_col (getvar "cecolor"))
(foreach txt lst1
(setvar "Cecolor" (itoa (cdr (assoc txt l_layers))))
(command "_.text" "_none" pt "" "" txt)
(setq pt (list (car pt) (- (cadr pt) ht)))
)

;; deuxième colonne
(setq pt (list (+ (car pti) lg) (cadr pti)))
(foreach txt lst2
(setvar "Cecolor" (itoa (cdr (assoc txt l_layers))))
(command "_.text" "_none" pt "" "" txt)
(setq pt (list (car pt) (- (cadr pt) ht)))
)
(setvar "cecolor" sv_col)
(princ)
)

;; 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 getlayers (titre lst1 lst2 / toggle_column tmp file lay layers len dcl_id)

(defun sublist (lst start leng / n r)
 (if (or (not leng) (< (- (length lst) start) leng))
   (setq leng (- (length lst) start))
 )
 (setq n (+ start leng))
 (repeat leng
   (setq r (cons (nth (setq n (1- n)) lst) r))
 )
)

(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 (cons (cdr (assoc 2 lay)) (cdr (assoc 62 lay))) layers))
)
(setq
l_layers layers
layers (vl-sort (mapcar 'car 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
)

 

[Edité le 9/1/2009 par bonuscad]

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

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é