Bonjour, Vendredi dernier j'ai reçu des plans d'un prestataire travaillant sur le même projet que moi, et certains blocs contiennent des attributs qui ne doivent pas apparaitre à l'impression. Étant donné qu'il y avait environ 500 blocs à modifier j'ai fait une petite routine toute simple en lisp: (defun dbe01 ( / ss cpteur ent entl typent attexist attribname)
(setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 "XEMT*"))))
(setq cpteur 0)
(while (setq ent (ssname ss cpteur))
(setq entl (entget ent))
(setq typent (cdr (assoc 0 entl)))
(setq attexist (cdr (assoc 66 entl)))
(if (and (= typent "INSERT") (= attexist 1))
(progn
(setq ent (entnext ent))
(setq entl (entget ent))
(while (= (cdr (assoc 0 entl)) "ATTRIB")
(Setq attribname (cdr (assoc 2 entl)))
(if (or (= attribname "$REPERE_TENANT")
(= attribname "$FIL_TENANT")
(= attribname "$REPERE_ABOUTISSANT")
)
(progn
(setq entl (subst (cons 8 "002 - NUMEROTATION - INVISBLE AU TRACAGE")
(assoc 8 entl) entl))
(setq entl (subst (cons 62 250) (assoc 62 entl) entl))
(entmod entl)
(entupd ent)
)
)
(setq ent (entnext ent))
(setq entl (entget ent))
)
)
)
(setq cpteur (1+ cpteur))
)
(princ (strcat "\n\nNombre d'attribut déplacé dans le calque \"002 etc...\" = " (itoa cpteur)))
(princ) Tout se passe bien, le seul point qui me chagrine c'est la ligne: (setq entl (subst (cons 62 250) (assoc 62 entl) entl)) Le code de groupe "62" étant la couleur de l'attribut, je le force à "250", c'est la couleur du calque où je le déplace, mais j'aimerais que mon attribut ait la couleur "Ducalque". En comparant les valeurs de groupe entre un attribut avec une couleur et un autre en couleur "Dulcalque", la seule différence est que dans le 2ème cas le code de groupe 62 n'existe pas. J'ai essayé de faire un: (setq entl (vl-remove (assoc 62 entl) entl)) mais ça n'a pas marché. J'ai aussi essayé de mettre la valeur "nil" pour le groupe "62" mais nada! Quelqu'un aurait-il une solution? Merci Mattoti