(defun c:SPIRALE (/ cen n_tours pas segs_par_tour inc_ang inc_rad ang rad i lst_verts)
  
  ;; 1. Saisie des données
  (if (and (setq cen (getpoint "\nCentre de la spirale : "))
           (setq n_tours (getint "\nNombre de tours : "))
           (setq pas (getdist cen "\nAccroissement par tour (Pas) : ")))
    (progn
      ;; 2. Paramètres de résolution
      (setq segs_par_tour 72)              ; 72 segments = 1 point tous les 5 degrés (compromis fluidité/poids)
      (setq inc_ang (/ (* 2.0 pi) segs_par_tour)) ; Incrément d'angle (radians)
      (setq inc_rad (/ pas (float segs_par_tour))) ; Incrément de rayon
      
      ;; Initialisation
      (setq ang 0.0)
      (setq rad 0.0)
      (setq i 0)
      
      ;; 3. Boucle de calcul des sommets (Vertices)
      ;; On construit la liste des points (Code 10) à l'envers pour la performance (cons)
      (repeat (1+ (* n_tours segs_par_tour))
        (setq lst_verts (cons (cons 10 (polar cen ang rad)) lst_verts))
        (setq ang (+ ang inc_ang))
        (setq rad (+ rad inc_rad))
      )
      
      ;; 4. Création de l'entité via ENTMAKE
      (entmake
        (append
          (list
            '(0 . "LWPOLYLINE")       ; Type d'entité
            '(100 . "AcDbEntity")
            '(100 . "AcDbPolyline")
            (cons 90 (length lst_verts)) ; Nombre de sommets
            '(70 . 0)                 ; 0 = Ouverte, 1 = Fermée
          )
          (reverse lst_verts)         ; On remet les points dans l'ordre
        )
      )
      (princ "\nSpirale créée avec succès.")
    )
    (princ "\nAnnulé.")
  )
  (princ)
)