Aller au contenu

Modifier couleur


Messages recommandés

Bonjour,

J'ai un problème pour modifier la couleur d'un objet

Je mets la nouvelle couleur dans une variable nommée Cou, mais lorsque je veux la remplacer dans l'objet il me met une erreur.

Exemple:

(setq Objet-A-Modifier (entget (car (entsel))))

Sélectionnez un objet: ((-1 . <Nom d'entité: 1c81879ce70>) (0 . "LINE") (330 . <Nom d'entité: 1c81323fa30>) (5 . "92947") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 146.0 932.0 0.0) (11 809.0 1141.5 0.0) (210 0.0 0.0 1.0))


Commande: (setq cou 7)
7

Commande: (cons 62 cou)
(62 . 7)

Commande: (append objet-a-modifier (cons 62 cou))
; erreur: liste incorrecte: 7

Mais, lorsque je le mets manuellement, ça fonctionne: (append Objet-A-Modifier '((62 . 7)))

Commande: (append Objet-A-Modifier '((62 . 7)))
((-1 . <Nom d'entité: 1c81879ce70>) (0 . "LINE") (330 . <Nom d'entité: 1c81323fa30>) (5 . "92947") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 146.0 932.0 0.0) (11 809.0 1141.5 0.0) (210 0.0 0.0 1.0) (62 . 7))
 

Merci d'avance pour votre aide.

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

(append) joint des listes d'éléments, si tu fais:

(append objet-a-modifier (list (cons 62 cou)))

cela fonctionne. D'ailleurs quand tu l'as fait manuellement, tu as quoter ta liste : '((62 . 7)) 😉

  • Upvote 1

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

il y a 23 minutes, dfbiagio a dit :

Commande: (append objet-a-modifier (cons 62 cou))
; erreur: liste incorrecte: 7

Mais, lorsque je le mets manuellement, ça fonctionne: (append Objet-A-Modifier '((62 . 7)))

Bonjour,

Oui lorsque tu le mets manuellement la syntaxe est bonne, regarde le nombre de parenthèses diffèrent dans tes 2 expressions.

Pour l'exemple une écriture "épuré" de ce que tu veux faire :

(entmod (append (entget (car (entsel))) '((62 . 7))))

Cdt Bruno

  • Upvote 1

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je te renvoi vers le merveilleux site https://www.da-code.fr/append/

tu l'écrit toi même :
(append objet-a-modifier (cons 62 cou)) => ne marche pas
(append Objet
-A-Modifier '((62 . 7))) => ça marche.

Sauf que (cons 62 cou) créé une paire pointée, toute seul, alors que '((62 . 7)) créé une paire pointée dans une liste.

C'est ce "dans une liste" qui fait toute la différence.
 

  • Like 1

Lispeur éternel débutant!
Autocad Map3D 2023
Covadis-Autopist 18.2

Lien vers le commentaire
Partager sur d’autres sites

Il y a 10 heures, dfbiagio a dit :

Pas sur de tout comprendre entre les list les ' 

en tout cas avec (list (cons 62 cou)) ça fonctionne.

Merci bcq

Pour compléter Vincent.P regarde aussi https://www.da-code.fr/quote/

Une autre remarque pour le code 62 concernant la couleur:

Par défaut une entité n'a pas pas ce code, si l'on veut forcer la couleur il faut faire un (append)

Mais si la couleur est déjà forcée, il faut faire un (subst) du code 62

Donc bien vérifier si ce code existe dans la liste retournée par (entget) pour bien faire l'action désirée: (subst) ou (append)

NB: pour retourner au défaut  ducalque on peut mettre (62 . 256) et (62 . 0) pour dubloc.

  • Upvote 1

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Il y a 11 heures, bonuscad a dit :

Une autre remarque pour le code 62 concernant la couleur:

Par défaut une entité n'a pas pas ce code, si l'on veut forcer la couleur il faut faire un (append)

Mais si la couleur est déjà forcée, il faut faire un (subst) du code 62

Donc bien vérifier si ce code existe dans la liste retournée par (entget) pour bien faire l'action désirée: (subst) ou (append)

Bonjour,

Pour compléter, c’est un idiome d’implémentation qui est proposé et que l’on retrouve dans de nombreux codes Autolisp, mais qui n’est pas toujours justifié (avec les codes dxf générique), du moins si c’est pour construire des listes à soumettre à entmake, entmakex, entmod.

J’avais ci-dessous tenté d’expliquer le pourquoi, dans un petit décryptage des fonctions entmake, entmakex, entmod:

https://cadxp.com/topic/40688-exceptions-et-anomalies-dans-certaines-fonctions-lisp/?do=findComment&comment=227875

Et c’est pourquoi ci-dessus j’avais qualifié mon exemple de code "épuré"

 

A+ Bruno

  • Upvote 1

Apprendre => Prendre => Rendre

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é