Aller au contenu

Changer les couleurs des objets dans un dessin


willy95

Messages recommandés

Bonjour à tous, je cherche a changer automatiquement dans un dessin la couleur (Index) d'un objet (couleur forcé différente de la couleur du calque) par une autre couleur (Couleur Réelle).

Par exemple : je lance le lisp et il va chercher directement tous les objets qui ont la couleur forcé "91" et remplace ces même objets par la couleur "225,255,219 avec 93 de Luminance" et il continue avec d'autre couleur comme "31" par "255,224,194 avec 88 de Luminance".

Si quelqu'un peu m'aider, j'ai essayé de bricolé quelquechose en recherchant sur le forum mais rien ne fonctionne, j'aimerai remplacer plein de couleur dans plusieurs de mes fichiers rapidement sans avoir a le faire objet par objet.

Merci par avance pour votre compréhension et pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Salut @willy95,

Tu peux faire ça nativement, sans Lisp, avec AutoCAD.

Tu lances la sélection rapide, commande SELECTRAP ou _QSELECT, tu choisis le type d'objet, puis par couleur, OK

puis tu modifies la couleur via la fenêtre des propriétés.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Merci quand Steven pour ta réponse, mais c'est justement pour ne pas avoir à faire ça 30 fois dans chacun de mes 60 fichiers que je cherche une routine pour que le remplacement des couleurs soit fait automatiquement. Il me reste plus qu'a passer 3 jours pour le faire comme ça à la main couleurs par couleur et fichier par fichier. 😞 😭

J'ai beau chercher sur internet ou à modifier des lisp trouvés, rien ne fonctionne. 😞 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Tu peux essayer ça.

Il faut modifier/compléter la liste des couleurs dans le code en respectant le format : (indexACI . "rouge,vert,bleu")

(defun c:willyChangeColor (/ changeColor colors)

  (defun changeColor (aci rgb / ss i)
    (if	(setq ss (ssget "_X" (list (cons 62 aci))))
      (repeat (setq i (sslength ss))
	(setpropertyvalue (ssname ss (setq i (1- i))) "Color" rgb)
      )
    )
  )

  ;; Liste à compléter en respectant le format : (indexACI . "rouge,vert,bleu")
  (setq	colors
	 '(
	   (91 . "255,255,219")
	   (31 . "255,224,194")
	   ;; ...
	  )
  )

  (foreach p colors (changeColor (car p) (cdr p)))

  (princ)
)

 

PS : on ne peut pas forcer la luminance si on spécifie les valeurs de rouge, vert, bleu. Si R,V,B est égal à 255,255,219 la luminance est égale à 93. Si je force la luminance à 90 le R,V,B devient : 255,255,204.

  • Upvote 1

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

Lien vers le commentaire
Partager sur d’autres sites

HELLO @(gile)

avec ton lisp, si des fois on devait faire l'inverse pour les couleurs

chercher des couleurs vraies ( RVB) et les remplacer par des couleurs index ACI.

on ne pourrait plus utiliser

(ssget "_X" (list (cons 62 aci)))

car il y a plus de couleurs vraies que les 256 couleurs indexées.

ex  rdv = index ACI : 60,195,123  = 103

                                   60,195,124  = 103    

 

faudrait tout sélectionner et vérifier pour chaque entité si "setpropertyvalue" ... "color" est égal à "60,195,123" par exemple.

Non?

 

Phil

 

  • Upvote 1

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Merci Gile pour ce temps passé et cette réponse qui corresponds exactement à mon besoin, j'ai ajouté toutes mes couleurs et ça marche à merveille, je vais gagner du temps et pouvoir passer grace toi plus de temps avec ma famille car sinon j'aurai été bloqué pas mal de temps sur ces modifications. Merci Beaucoup.

Et merci Phiphil pour cette précision qui pourra etre utile également par la suiteL

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é