Aller au contenu

Modifier couleur de l'objet


yusukens82

Messages recommandés

Coucou

 

au clavier par exemple !

-chprop

choix de l'objet

co

numéro de la couleur

valider

 

il faut connaître un minimum la position de ses touches pour aller vite et le numéro des couleurs mais ça vient vite.

dans mon exemple un saut de ligne veut dire appuyer sur la touche entrée.

 

amicalement

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Sinon, tu passes par le groupe de fonction propriétés, dans l'onglet Début.

 

http://pix.toile-libre.org/upload/img/1433178123.png

 

Et si tu ne travailles pas avec le ruban mais avec des barres d'outils classique, tu passes par la barre d'outils des propriétés.

 

http://pix.toile-libre.org/upload/img/1433178501.png

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 Steve c'est de cet façon que je procédais déjà, je cherchais plutôt un moyen d'ouvrir la boite de dialogue "COULEURS VRAIES" grâce à une commande Autocad.

 

Merci Didier,

en le réadaptant en LISP cela donne :

(command "_change" ent "" "_p" "_c" "u")

c'est le seul moyen que j'ai trouvé pour utiliser rapidement les RVB.

 

L'idéal pour moi serait d'avoir une commande permettant d'ouvrir directement la boite de dialogue "Couleurs vraies"

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

pour ouvrir la boite de dialogue des couleurs vraies (j'ai choisi la couleur de départ de façon aléatoire)

 

(acad_truecolordlg '(420 . 15814158))

 

qui renvoie une liste qui peut contenir 3 éléments :

si c'est une couleur ACI, la liste a cette allure ((62 . 18))

si c'est une couleur vrai, la liste est ((62 . 133) (420 . 3589577))

si c'est un carnet de couleur, la liste est ((62 . 7) (420 . 15921387) (430 . "PANTONE f + h Cotton$PANTONE 11-0602 TCX"))

 

ça tombe bien, cette liste correspond aux codes dxf qu'on trouve dans les entités :

 

ACI

((-1 . <Nom d'entité: 7ffffb06050>) (0 . "LINE") (330 . <Nom d'entité:

7ffffb03ec0>) (5 . "7D") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .

"0") (62 . 1) (100 . "AcDbLine") (10 179.215 38.7096 0.0) (11 318.781 136.502

0.0) (210 0.0 0.0 1.0))

 

 

couleurs vraies

((-1 . <Nom d'entité: 7ffffb06050>) (0 . "LINE") (330 . <Nom d'entité:

7ffffb03ec0>) (5 . "7D") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .

"0") (62 . 40) (420 . 15575826) (100 . "AcDbLine") (10 179.215 38.7096 0.0) (11

318.781 136.502 0.0) (210 0.0 0.0 1.0))

 

Carnet

((-1 . <Nom d'entité: 7ffffb06050>) (0 . "LINE") (330 . <Nom d'entité:

7ffffb03ec0>) (5 . "7D") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .

"0") (62 . 7) (420 . 15789796) (430 . "PANTONE f + h Cotton$PANTONE 11-4300

TCX") (100 . "AcDbLine") (10 179.215 38.7096 0.0) (11 318.781 136.502 0.0) (210

0.0 0.0 1.0))

 

qu'il suffit de modifier avec ce que nous renvoie la fonction acad_truecolordlg

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour yusukens82,

 

Ne connaissant pas ton niveau de lisp, je vais essayer de compléter astucieusement la bonne réponse de zebulon_,

 

Car le travail sur le code de couleur dxf 62 ainsi que les éventuels codes associer 420 (couleur vrai) et 430 (carnet de couleur). N'étant pas des codes dxf à entrer multiple n'y des codes dépendant de marqueur de sous classe (code 100).

 

Tu te trouves dans un cas particulier que j'avais tenté d'exposer ici

Lors de la construction d'une liste de définition d'entité, dans le cas de code en doublon c'est le dernier code de groupe qui est mémorisé les précédents sont ignoré…

[…]

De ce qui précède, on comprend mieux pourquoi il est possible de modifier une définition d'entité seulement par ajout de propriétés à la définition existante. Sans passer par la fonction de substitution subst et sans devoir tester la présence ou non de codes DXF facultatif.

 

En conséquence en ajoutant (et non en modifiant ;) ) les valeurs de retour de la fonction acad_truecolordlg au moyen de la fonction append au code dxf de l'entité sélectionné, tu vas déléguer la totalité du travail de suppression/d'ajout ou de substitution des codes dxf 62, 420, 430 dans ta liste de définition dxf à la fonction entmod.

 

Pour passer indifféremment la couleur de ton entité en couleur ACI/vrai/carnet avec un code polyvalent et concis…

 

La ligne de code à intégrer dans un bouton ou dans une fonction définie en defun c:, ou bien à tester directement sur la ligne de commande

(entmod (append (entget (car (entsel)) ) (acad_truecolordlg '(420 . 15814158))))

 

Cordialement,

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

2 choses pour compléter :

 

il existe une fonction "fossile" (acad_colordlg numcouleur [drapeau]) qui ne gère que les couleurs ACI, la couleur 0 pour dubloc et la couleur 256 pour ducalque (j'allais écrire duplan... :P). Quant à l'argument facultatif [drapeau], si celui-ci est nil, les boutons ducalque et dubloc sont désactivés.

 

L'argument facultatif [drapeau] peut aussi s'utiliser avec la version "moderne" acad_truecolordlg :

(acad_truecolordlg '(420 . 15814158) nil)

avec la même conséquence.

 

Une idée de code :

(defun c:chcol (/ ss e CC TC ACI NUMCOL I)
 (if (not (setq ss (cadr (ssgetfirst))))
   (setq ss (ssget))
 )
 (if ss
   (progn
     ;; initialise avec la couleur du premier élément de ss
     (setq e (ssname ss 0))
     (setq CC (assoc 430 (entget e)))
     (setq TC (assoc 420 (entget e)))
     (setq ACI (assoc 62 (entget e)))
     (cond
       (CC (setq NUMCOL CC))
       (TC (setq NUMCOL TC))
       (ACI (setq NUMCOL ACI))
       (T (setq NUMCOL '(62 . 256)))  ;; couleur ducalque
     )
     (setq NUMCOL (acad_truecolordlg NUMCOL))
     (setq I 0)
     (repeat (sslength ss)
       (setq e (ssname ss I))
       (setq I (1+ I))
       (entmod (append (entget e) NUMCOL))
     )
   )
 )
 (princ)
)

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Juste une question ! Pourquoi FORCER les objets ? C'est toujours galère lorsqu'on reprend des dessins basés sur des PROPRIETES FORCEES au lieu d'utiliser des calques et TOUT LAISSER en DUCALQUE !

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Une idée de code Zebulon ? C’est exactement ce qu'il me fallait je n'aurais jamais pu coder ça !!!

Un grand merci.

 

 

rebcao : Idem je déteste récupérer des plans avec des couleurs forcées, mais dans certain cas lorsqu'on a besoin d'appliquer différentes couleurs RVB c'est vachement utile.

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Pour le plaisir de coder, une réécriture équivalente du code proposé par zebulon_, avec pour objectif de faire un éducatif orienté programmation fonctionnel (en minimisant l'emploi de variables) pour ceux que ça intéressent..

 

(defun c:chcol (/ ssmap ChangeCou)
 
 (defun ssmap (fun ss / n)
   (if (= 'PICKSET (type ss))
     (repeat (setq n (sslength ss)) (apply fun (list (ssname ss (setq n (1- n))))))
   )
 )
 
 (defun ChangeCou (e)
   (eval (list 'defun
               'ChangeCou
               '(e)
               (list 'entmod
                     (list 'append
                           '(entget e)
                           (list 'quote
                                 (acad_truecolordlg
                                   (cond ((assoc 430 (setq e (entget e))))
                                         ((assoc 420 e))
                                         ((assoc 62 e))
                                         ((cons 62 256))
                                   )
                                 )
                           )
                     )
               )
         )
   )
   (ChangeCou (cdr (assoc -1 e)))
 )

 ;; Corps du programme
 (ssmap 'ChangeCou
        (cond ((cadr (ssgetfirst)))
              ((ssget))
        )
 )
 
 (princ)
)

 

Voir ici pour des explications sur le fonctionnement de la fonction ssmap (fonction de second ordre) et pour la fonction ChangeCou (fonction utilisant la précomputation).

 

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

avec pour objectif de faire un éducatif orienté programmation fonctionnel (en minimisant l'emploi de variables)

 

Super intéressant ! Je dois reconnaitre que cela ne correspond pas à ma culture. Ce n'est pas comme ça que j'ai appris à parler programmation. C'est dingue, c'est écrit avec la même langue, mais cela me parait totalement étranger ! J'ai aussi du mal avec la récursivité, ça explique sans doute. J'aime programmer comme faire du café : je mets le filtre, je mets le café, je mets l'eau (on peut mettre l'eau quand on veut mais pas le café avant le filtre !). En gros, une chose après l'autre... et les variables m'aident bien dans cette démarche, surtout quand il s'agit de débuguer.

 

Je vais donc décortiquer ce code pour essayer d'en comprendre le fonctionnement.

 

Merci

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Je dois reconnaitre que cela ne correspond pas à ma culture.

Oui tu as raison de parler de culture (ou de mode), personnellement j'ai commencé à codé très tardivement (bien après toi), à un moment ou la programmation fonctionnelle est plus dans l'air du temps ceci expliquant peut être cela…

 

Ou alors peut-être ma façon de faire le café, le filtre en dernier avec une cafetière à piston cela me semble plus naturel… ;)

 

Au passage pour ceux qui souhaiteraient se faire une idée plus précise de la programmation fonctionnelle, la lecture des 4 premiers billets du blog Func' programming - un blog homéopathique me semble intéressant, c'est écrit en CLisp mais cela reste compréhensible (d'ailleurs l'adaptation des exemples en AutoLisp est certainement un bon exercice).

 

Amicalement Bruno

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

C'est déroutant parce que tout est tellement imbriqué qu'on se dit, peut être à tort, qu'avec ce style de programmation, il faut que les choses soient bien pensées d'entrée. Il me semble difficile d'écrire un bout, de voir ce que ça donne en regardant ce qu'il y a dans la variable, et de continuer si ça correspond à ce à quoi on s'attend, et ainsi de suite. D'où mon exemple du café :D qui n'est sans doute pas la métaphore la plus géniale pour illustrer mon propos.

 

Sinon, j'écris des lignes de code depuis 1987 et j'ai commencé avec le Turbo Pascal. Autocad et lisp sont venus plus tard à la sortie de la version 12 en 1992. Avant, j'utilisais Microstation V2.0, V3.0, V4.0 qui étaient tellement mieux fichus qu'Autocad R12, mais notre client de l'époque voulait du dwg... et le dwgtranslator de microstation n'était pas génial. Donc, exit microstation et bienvenue à Autocad R12. C'était comme revenir à l'âge de pierre. En plus, quand on connait un logiciel, il est forcément mille fois mieux que celui qu'on ne connait pas. Je veux dire qu'on n'est pas spécialement objectif... Mais il faut quand même reconnaitre que le microstation de l'époque qui tournait sous DOS avait déjà un look windows, alors qu'autocad R12, c'était du MS-DOS...

 

Je suis allé vers Autocad à reculons, mais j'ai bien dû m'y est faire, puis je me suis investi dans le lisp. Aujourd'hui, cela me parait impensable de changer pour autre chose... Mais, s'il le faut...

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é