Merci pour cette réponse. Un dernier problème se pose. Je chercher à calculer les centres de gravité de ma polyligne. Pour cela j'ai rédigé le programme suivant : (setq taille (/ (length ListePoints) 3)) ; on divise la liste en trois parties (setq sousliste11 (ExtraitSousListe ListePoints 1 taille)) ; on crée la première sous liste (setq sousliste22 (ExtraitSousListe ListePoints (+ taille 1) (* taille 2))) ; on crée la deuxième sous-liste (setq sousliste33 (ExtraitSousListe ListePoints (+ (* taille 2) 1) (length ListePoints))) ; on crée la troisième sous-liste (princ "\n la sous-liste1 est : \n");On affiche les différentes sous listes (print sousliste11) (princ "\n la sous-liste2 est : \n") (print sousliste22) (princ "\n la sous-liste3 est : \n") (print sousliste33) (setq result1 (list sousliste11 sousliste22 sousliste33)) result1 (setq v (getvar "osmode")) ; on stocke la valeur courante avec getvar ce qui retourne 16425 si l'accrochage aux objets et désactivé et 41 si il est activé (setq r (rem v 16384)); on calule et on stoke le reste de la division euclidienne de getvar par 16384 = 164525 - 41, dans les deux cas (41/16384 et 16425/16384) le reste retournée est 41 (setvar "osmode" (+ r 16384));on affecte la valeur 16425 à la variable osmode, ce qui permet de désactiver l'accrochage aux objets, si celui ci ne l'était pas et le laisse désactivé si il l'était (setvar "pdmode" 32) (setvar "pdsize" 0.5) (setq ssliste11 (car result1)) (setq ssliste22 (cadr result1)) (setq ssliste33 (caddr result1)) (setq A1 (CentredeGravite ssliste11)) (command "_point" A1 "" "") (command "_change" A1 "" "_P" "_C" 1 "") (setq B1 (CentredeGravite ssliste22)) (command "_point" B1 "" "") (setq C1 (CentredeGravite ssliste33)) (command "_point" C1 "" "") Cependant autocad me retourne une erreur de type numberp=nil et je ne trouve pas le problème après plusieurs modification sur les variables. Je vous joins également le programme CentredeGravite (j'ai essayé de chercher de ce coté la mais rien de concluant non plus): (defun CentredeGravite (liste);Cette fonction donne le centre de gravité des points de la polyligne (setq grav liste) (setq g1 (car (car grav)));On prend le premier x de la premiere sous liste (setq g2 (cadr (car grav)));On prend le premier y de la premiere sous liste (setq g3 (caddr (car grav)));On prend le premier z de la premiere sous liste (while (/= (cdr grav) nil);La condition d'arret est que la liste ne contient plus d'élément non traité (setq grav (cdr grav));On avance dans la liste en enlevant la sous-liste en tête (setq g1 (+ g1 (car (car grav))));On ajoute à g1 la valeur du x du triplet de tête (setq g2 (+ g2 (cadr (car grav))));On ajoute à g2 la valeur du y du triplet de tête (setq g3 (+ g3 (caddr (car grav))));On ajoute à g3 la valeur du z du triplet de tête ) (setq coordgrav (list (/ g1 (length liste)) (/ g2 (length liste)) (/ g3 (length liste))));On crée la liste comprenant les sommes calculées précédemment qu'on divise par le nombre d'élément de la liste (princ coordgrav) (print) coordgrav ) Merci d'avance