Aller au contenu

couleur cotes forcées


x_all

Messages recommandés

bonjour

 

ha les plans archicad...

J'ai un nouvel archi qui à pour habitude (pas très propre) de forcer les couleurs des objets.

Alors bien sur Edit bloc, RB et defducalque font des miracles, mais sur les blocs... quand ce petit malin s’amuse à forcer dans les cotes la couleur du texte, des lignes d'attaches, des flèches... c'est un peu pénible à la longue de fouiller dans les propriétés pour tout recaler en dubloc ou ducalque.

 

Si quel qu'un à une routine qui traine je suis preneur.

En lisp je crois pas m'en sortir car je rame grave avec le VB et je ne suis pas sur qu'on y arrive avec les DXF

 

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

C'est faisable en pur AutoLISP (DXF) comme en Visual LISP.

Je ne peux pas donner le code que j'ai écrit (privé) mais je peux t'indiquer la piste.

 

Si le "forçage" des couleurs est défini dans le style de cote, c'est faisable sans programmation en modifiant le style de cote avec l'interface habituelle ou par programmation en mettant à 0 (couleur DuBloc) les groupes 176, 177 et 178 de la liste DXF du style de cote.

 

Les information concernant les couleurs forcées dans les objets cote sont contenues dans les données étendues de la cote (xdata) sous l'application enregistrée "ACAD".

 

Pour avoir la liste DXF complète, y compris les xdata:

(entget (car (entsel "\nSélectionnez une cote: ")) '("*"))

 

Pour n'avoir que les xdata qui t'interesse :

(cdr (assoc "ACAD"( cdr (assoc -3 (entget (car (entsel "\nSélectionnez une cote: ")) '("ACAD"))))))

 

Si des couleurs ont été forcées, tu devrais trouver des groupes :

(1070 . 176) ; ligne de cote

(1070 . 177) ; ligne d'attache

(1070 . 178) ; texte de cote

Chacun de ces groupes est suivi d'un autre groupe 1070 avec l'index de la couleur forcée.

Il "suffit" donc de substituer ces valeurs par 0 (DuBloc) pour revenir aux valeurs par défaut de la cote.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

ok merci pour la piste..

si j'ai un peu de temps je chercherai ce week end. ça fait qqs temps que j'ai rien pondu, le lisp comme toutes les langues vivantes, si on pratique pas on perd tout...

 

en attendant, j'ai trouvé le truc avec CORRESPROP et l'option P qui bien que non documenté donne le résultat attendu donc je récupère une cote déja modifiée dans un autre dessin dessin un coup de SSE et zou !

Lien vers le commentaire
Partager sur d’autres sites

J'ai voulu essayer un truc en supprimant dans les xdata concernées les groupes dont le cdr est 176, 177 et 178 ainsi que le groupe suivant, et ça fonctionne aussi.

 

(defun c:RemoveDimColorOverrides (/ cleanup dimMod i ss)

 (defun cleanup (l)
   (cond
     ((null l) nil)
     ((member (cdar l) '(176 177 178)) (cleanup (cddr l)))
     (T (cons (car l) (cleanup (cdr l))))
   )
 )

 (defun dimMod (dim / elst xdata)
   (and
     (setq elst (entget dim '("ACAD")))
     (setq xdata (cdr (assoc -3 elst)))
     (entmod
(subst
  (list -3 (cons "ACAD" (cleanup (cdar xdata))))
  (assoc -3 elst)
  elst
)
     )
   )
 )

 (if (setq ss (ssget "_X" '((0 . "DIMENSION"))))
   (repeat (setq i (sslength ss))
     (dimMod (ssname ss (setq i (1- i))))
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

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é