Aller au contenu

[Résolu ] Rédéfinir un bloc dont la couleur est forcée à l'intérieur de l'éditeur d'attribut étendu


Steven

Messages recommandés

Salut à tous,

J'ai récupérer un dessin dans lequel il y a un bloc avec attribut dont les couleurs ont été forcé mais à l'intérieur de l'éditeur de bloc étendu. De plus, l'étiquette d'attribut est dans un calque nommé. Bref, c'est une galère.

Je souhaiterais que l'étiquette d'attribut, à l'intérieur du bloc soit sur le calque 0 en Couleur, Epaisseur et Type de ligne DUBLOC.

Mais aussi, je souhaiterais que la couleur de ces derniers, soit conserver.

C'est-à-dire :

Je souhaiterais donc qu'ils soient inséré sur un calque, en Epaisseur DUCALQUE, Type de ligne DUCALQUE mais en couleur forcée pour garder leur couleur d'origine.

Par exemple, dans le fichier joint, je souhaiterais que le bloc avec la valeur 048, soit sur un calque de mon choix, en épaisseur DUCALQUE, type de ligne DUCALQUE mais en couleur DUBLOC.

Par exemple :

Couleur BLEU

Epaisseur DUCALQUE

Type de ligne DUCALQUE

Existerait-il un lisp pour çà ?

BLOCS_AVEC_ATT_COUL_FORCEES.zip

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

Bonjour @Steven

Je prends le risque d'avoir mal compris la question, mais je réponds :

Il te suffit de repasser par BATTMAN et de remettre les propriétés suivant tes désirs.
Calque 0, Couleur DUBLOC, ensuite tu modifies à ta guise les propriétés de tes blocs...

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

@Zugzwang?

 

STRIPMTEXT  ne fonctionne que pour les textes, pas pour les attributs de blocs.

@didier,

J'y ai pensé mais ça ne répond pas à ce que je souhaite.

 

@Olivier Eckmann,

 

Ce n'est pas çà non plus.

En fait, quand on regarde dans l'éditeur d'attribut étendu, on voit que la couleur de l'attribut a été forcé. sur l'image, on voit que l'attribut a été forcé en VERT. Or, je souhaiterais que ce soit en DUBLOC.

BLOC-ATT-COUL-FORCEE-II.png

Dans l'espace objet, lorsqu'on sélectionne le bloc, il est en couleur DUCALQUE mais pas l'attribut. C'est normal puisque sa couleur a été forcé dans l'éditeur.

BLOC-ATT-COUL-FORCEE-I.png

 

Je souhaite pouvoir forcer la couleur du bloc, via les propriétés.

BLOC-ATT-COUL-FORCEE-III.png

En fait, si je vais dans l'éditeur d'attribut étendu, il faut que la couleur soit en DUBLOC pour pouvoir forcer la couleur du bloc via les propriétés.

BLOC-ATT-COUL-FORCEE-IV.png

Je souhaite donc pouvoir modifier tous les blocs existants sur le dessinder manière à ce qu'ils soient tous créés sur la calque 0 en DUBLOC, DUBLOC, DUBLOC et sur le dessin, ils sont en couleurs forcées, épaisseur DUCALQUE, Type de ligne DUCALQUE. Mais une fois ceux-ci redéfinis, je souhaite qu'ils gardent le couleur vert, bleu ou rouge. Je veux pas devoir les resélectionner pour forcer leur couleur manuellement sinon, je les aurai tous redéfini sur le calque 0 en DUBLOC, DUBLOC, DUBLOC et j'aurais forcé les couleurs de chacun manuellement pour retrouver les bonnes couleur mais vu le nombre de numéros qu'il y a sur le dessin, je vais y passer le restant de ma vie.

 

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

Salut,

Si j'ai bien compris la demande, ça devrait faire l'affaire :

EDIT : code corrigé (CF plus bas)

(vl-load-com)
(or *acad* (setq *acad* (vlax-get-acad-object)))
(or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
(or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*)))

(defun c:steven	(/ setProps ss att)
  (defun setProps (o)
    (vla-put-Layer o "0")
    (vla-put-Color o 0)
    (vla-put-Linetype o "ByBlock")
    (vla-put-Lineweight o -2)
  )
  (vlax-for o (vla-Item *blocks* "TRAMES")
    (if	(= (vla-get-ObjectName o) "AcDbAttributeDefinition")
      (setProps o)
    )
  )
  (if (ssget "_X" '((0 . "INSERT") (2 . "TRAMES")))
    (progn
      (vlax-for	b (setq ss (vla-get-ActiveSelectionSet *acdoc*))
	(foreach att (vlax-invoke b 'GetAttributes)
	  (if (= (vla-get-TagString att) "N°TRAMES")
	    (progn
	      (vla-put-TrueColor b (vla-get-TrueColor att))
	      (setProps att)
	    )
	  )
	)
      )
      (vla-Delete ss)
    )
  )
  (princ)
)

 

  • Upvote 2

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

Lien vers le commentaire
Partager sur d’autres sites

Salut @(gile)

Lorsque je lance lisp, j'ai ce messqge d'erreur :

type d'argument incorrect: VLA-OBJECT nil

J'ai pourtant bien vérifier que j'avais bien copier le code en entier sans rien oublier

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

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é