Aller au contenu

Messages recommandés

Posté(e)

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

 

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité