mattoti Posté(e) le 22 novembre 2010 Posté(e) le 22 novembre 2010 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?MerciMattoti
(gile) Posté(e) le 22 novembre 2010 Posté(e) le 22 novembre 2010 Salut, Comme tu l'as remarqué le groupe 62 est optionnel. Donc, s'il est présent, on le modifie, s'il est absent, c'est que l'entité est déjà en DuCalque.(if (assoc 62 entl) (setq entl (subst '(62 . 256) (assoc 62 entl) entl)) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
mattoti Posté(e) le 22 novembre 2010 Auteur Posté(e) le 22 novembre 2010 Merci (gile), il faut mettre la valeur 256, je n'y avais pas pensé...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant