Bonjour, je pense aussi qu'il faut abandonner l'idée du réseau qu'on peut remplacer par une boucle itérative. C'est vrai que les places PMR sont souvent en bout de rangée, compte tenu qu'elles doivent être le plus près possible de l'entrée de l'établissement. J'ai fait quelque chose qui demande à quelle position on veut mettre ces places, mais on pourrait simplifier comme suggère arnaudalp en demandant simplement combien il y a de places handicapées, puis si elles sont au début ou à la fin. (defun C:parking ()
(setvar "cmdecho" 0)
;entrée des données
(setq LISTENT nil)
(setq nbplace (getint "\nNombre de places de parking :"))
(if (or (= nbplace nil) (< nbplace 1)) (exit))
(setq I 1)
(setq LREP nil)
(while ;; définir les positions des places handicapées
(and
(< (length LREP) nbplace)
(setq REP (getint (strcat "\nPosition place handicapée n° " (itoa I) " (entrée pour quitter) : ")))
)
(if (member REP LREP)
(alert "position déjà prise")
(if (and (>= REP 1) (<= REP nbplace))
(setq LREP (cons REP LREP))
(alert "position non valable")
)
)
(setq I (1+ I))
)
(setq p0 (getpoint "\nPoint de départ du parking :"))
(setq pt0 p0)
(setq ang0 (getangle pt0 "\nAngle d'orientation des places :"))
(setq larg 2.3)
(setq largh 3.3)
(setq long 5.0)
(setq I 1)
(repeat nbplace
;calcul
(setq pt1 (polar pt0 (+ ang0 (/ pi 2)) long))
(if (member I LREP)
(progn ;; une place handicapée
(setq pt2 (polar pt1 ang0 largh))
(setq pt3 (polar pt0 ang0 largh))
)
(progn ;; une place non handicapée
(setq pt2 (polar pt1 ang0 larg))
(setq pt3 (polar pt0 ang0 larg))
)
);; fin if
(command "_pline" "_non" pt0 "la" 0 0 "_non" pt1 "_non" pt2 "_non" pt3 "_cl")
(setq LISTENT (cons (entlast) LISTENT))
(command "_text" "_j" "_BL" "_non" pt0 0.2 "_non" pt3 (itoa I))
(setq LISTENT (cons (entlast) LISTENT))
(setq I (1+ I))
(setq pt0 pt3)
);; fin repeat
;texte
(setq pt4 (polar p0 ang0 (* (distance p0 pt3) 0.5)))
(setq pt4 (polar pt4 (+ ang0 (/ pi 2)) -0.20))
(setq pt5 (polar pt3 (+ ang0 (/ pi 2)) -0.20))
(setq index (strcat (itoa nbplace) " Place(s)"))
(command "_text" "_j" "_MC" "_non" pt4 0.2 "_non" pt5 index)
(setq LISTENT (cons (entlast) LISTENT))
;; tout mettre dans un groupe
(command "_.-group" "_create" "*" "Parking")
(foreach EN LISTENT (command EN))
(command "")
(princ)
) Amicalement Vincent