Bonjour, j'ai un programme Lisp synoptique qui classe les blocs en fonction des "attributs" ADRESSE.
Il fonctionne si l'adresse est saisie comme ceci :
001 002 003 004, etc. ou 1 2 3 4, etc.
J'aimerais qu'il puisse mettre les blocs dans l'ordre avec l'adresse saisie comme suit :
L1-001 L1-002 L1-003, etc. ou
1/1/1-001 1/1/1-002 1/1/1-003 1/1/1-004, etc.
Merci pour votre aide. Cordialement, Philip.
(defun c:SYNOD (/ *error* _No-p sel i sn en p)
(defun *erro* (x) (setvar 'cmdecho 1) (princ "*Cancel*"))
(defun _No-p (nxt / e No)
(while (not (eq (cdr (assoc 0 (setq e (entget nxt)))) "SEQEND"))
(if (and (eq (cdr (assoc 0 e)) "ATTRIB")
(numberp (read (cdr (assoc 1 e))))
)
(setq No (cdr (assoc 1 e)))
)
(setq nxt (entnext nxt))
)
No
)
(if (setq sel (ssget "_:L" '((0 . "INSERT") (66 . 1))))
(repeat (setq i (sslength sel))
(setq sn (ssname sel (setq i (1- i))))
(if (and (setq p (read (_No-p (entnext sn))))
(numberp p)
)
(progn
(setvar 'cmdecho 0)
(command "_.move"
sn
""
"_none"
(cdr (assoc 10 (entget sn)))
"_none"
(list p 0. 0.)
)
(setvar 'cmdecho 1)
)
)
)
)
(princ)
)