AutoCAD : Modifier la hauteur de texte des attributs de plusieurs blocs

AutoCAD : Modifier la hauteur de texte des attributs de plusieurs blocs

bruno_pancrazi
Explorer Explorer
1 631 Visites
7 Réponses
Message 1 sur 8

AutoCAD : Modifier la hauteur de texte des attributs de plusieurs blocs

bruno_pancrazi
Explorer
Explorer

Bonjour à tous,

 

Je suis paysagiste concepteur, je travaille sur Autocad depuis quelques années maintenant. Petit à petit je me suis créé une banque de données d'arbres en plan. Ces arbres sont des blocs dynamiques que je peux agrandir à ma guise, en fonction de la largeur de houppier désirée (cf photo). Il se trouve que chaque bloc est associé à un attribut. L'attribut est identique à chaque bloc. Ainsi, lorsque je le désire, je peux nommer l'arbre en fonction de l'espèce que j'ai choisi de lui attribuer (par exemple : Oe pour Olea europeae), d'un simple double-clic!

 

Capture d'écran 2023-12-15 160109.png

 

L'attribut correspondant à chacun des blocs distincts est identique puisqu'il s'agit d'un copier-coller d'attribut dans chacune des définitions de bloc. Chaque attribut a donc les mêmes propriétés d'étiquette, d'invite et de style de texte.

 

Capture d'écran 2023-12-15 161023.png

 

Aujourd'hui je travaille sur l'échelle du grand paysage avec des centaines d'arbres affichés à l'écran. J'ai donc besoin de plus de lisibilité en ce qui concerne leurs noms.

 

Ainsi, ma question est la suivante : existe t-il un moyen, un lisp (ou autre), pour modifier la hauteur du texte des attributs de tous les blocs d'un seul coup?

 

J'ai déjà essayé plusieurs choses :

- Modifier le style du texte, suivi d'un ATTSYNC, sans effet

- Divers LISP (je ne me souviens plus du nom de leurs créateurs, désolé) : CHT_ATTR ; ECHTEXT ; HT-ATT (de Gile je crois)

Mais rien à faire, j'ai l'impression que je dois passer par BATTMAN, mais je n'aurai pas la patience de modifier la hauteur pour chacun des blocs, surtout si ça doit se reproduire.

 

Si jamais vous avez une solution autre qui consiste à changer ma manière de procéder, je suis preneur (mais je teins quand même à garder l'idée de l'attribut, pratique, surtout quand on l'associe avec PAT de Patrick_35).

 

Merci à tous pour votre aide!


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Modifier la hauteur de texte des attributs de plusieurs blocs

0 J'aime
Solutions acceptées (1)
1 632 Visites
7 Réponses
Replies (7)
Message 2 sur 8

Luna3
Advocate
Advocate

Coucou,

Faut-il modifier les références de bloc ou bien les définitions de blocs ?

Etant donné que tes blocs sont déjà dynamiques, pourquoi ne pas ajouter un paramètre linéaire associé avec une action d'échelle sur ton attribut ? Il suffit de mettre 0 poignée sur ce paramètre comme chat il ne viendra pas polluer ton dessin avec une poignée inutile et tu pourras modifier la hauteur de ton attribut directement via la palette des propriétés pour l'ensemble des références de blocs sélectionnées... Malheureusement cela nécessite de modifier l'ensemble des définitions de blocs...Et bien s'assurer que dans ta définition de bloc, la hauteur de texte est équivalente à la longueur par défaut pour le paramètre linéaire...Autrement tu auras un facteur de conversion entre la distance spécifiée dans la palette de propriétés et la hauteur réelle de ton texte dans le dessin.

 

Bisous,
Luna

Message 3 sur 8

O_Eckmann
Mentor
Mentor
Solution acceptée

Bonjour,

 

Tu peux essayer ça : 

(defun C:HautAtt ( / ssTree dHaut oTree oAttTreeDxf)
  (if (setq ssTree (ssget (list (cons 0 "INSERT") (cons 66 1))))
    (progn
      (initget (+ 1 4))
      (setq dHaut (getreal "\nNouvelle hauteur des attributs : "))
      (setq I 0)
      (repeat (sslength ssTree)
	(setq oTree (ssname ssTree I))
	(setq I (1+ I))
	(setq oAttTreeDxf (entget (entnext oTree)))
	(setq oAttTreeDxf (subst (cons 40 dHaut) (assoc 40 oAttTreeDxf) oAttTreeDxf))
	(entmod oAttTreeDxf)
	(entupd oTree)
      )
    )
  )
)

 

Olivier Eckmann

EESignature

Message 4 sur 8

bruno_pancrazi
Explorer
Explorer
Bonjour Luna,

Merci pour cette réponse qui me satisfait pas mal. C'est effectivement une solution à mon problème.
Celà dit, s'il existait un LISP qui puisse modifier la hauteur du texte de tous les attributs de blocs d'un coup, ça m'éviterait de devoir modifier les centaines de blocs pour arriver au même résultat!

Bonne soirée!
0 J'aime
Message 5 sur 8

_Steven_
Mentor
Mentor

Bonjour Bruno @bruno_pancrazi,

 

Si c'est pour un soucis de lisibilité sur les sorties de plans, peut-être devriez-vous utiliser l'annotativité et rendre les attributs des blocs, annotatifs. De ce fait, lorsque vous sortirez vos plans à des échelles différentes, les attributs auront toujours la même hauteur.

 

Toutefois, ça nécessite de voir aller dans l'éditeur de bloc pour sélectionner les étiquettes d'attribut et les rendre annotatives.

Steven

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton APPROUVER LA SOLUTION en dessous de la réponse.



« L’homme de bien n’exige pas de l’autre qu’il soit parfait, il l’aide à accomplir ce qu’il a en lui de meilleur. »
Lao Tseu
Message 6 sur 8

bruno_pancrazi
Explorer
Explorer
Bonsoir, ça fonctionne, c'est exactement ce que je recherchais!

Merci à vous, bon weekend!
Message 7 sur 8

bruno_pancrazi
Explorer
Explorer
Bonsoir, j'ai déjà tenté de rendre tous les attributs de blocs annotatifs, mais cela en fonctionne pas ou alors je m'y prends mal, je ne sais pas ? Ce qui est sûr c'est que dans la présentation, annotatif ou non, rien ne change
0 J'aime
Message 8 sur 8

reb_c1
Mentor
Mentor

Bonjour Bruno,


L'ANNOTATIF (depuis la version 2008) est une fonction qui simplifie considérablement la gestion de certains OBJETS qui doivent s'adapter à l'échelle du PLAN ou de la VUE, comme les TEXTES, les COTES, les HACHURES et les BLOCS avec ou sans ATTRIBUTS.

 

Par contre, pour les BLOCS, ça demande réflexion, car je considère DEUX familles de BLOCS :

 

   1. Les BLOCS dimensionnels, comme : les Meubles, les Végétaux, les Véhicules, les Personnages, etc.

   2. Les BLOCS "SCHEMATIQUES", comme : les Panneaux de signalisation, les Equipements ELEC (prise, interrupteur, etc.)

 

Pour la FAMILLE 2, un BLOC ANNOTATIF avec ATTRIBUTS gardera toujours un aspect (taille) correct en fonction de l'ECHELLE (1/20e, 1/50e, 1/100e, etc.).

 

Pour la FAMILLE 1, ça peut s'avérer un peu moins évident ! En effet, une ASTUCE aussi vieille qu'AutoCAD est de jouer sur son ECHELLE, mais dans ce cas la taille des ATTRIBUTS va varier en permanence.

 

Dans ce cas, il faudrait plutôt utiliser des BLOCS DYNAMIQUES NON ANNOTATIFS où seul les OBJETS seront modifiés au niveau de leur TAILLE (paramètre d'ECHELLE), mais pas les ATTRIBUTS qui eux seront ANNOTATIFS !

 

Je ne sais pas si c'est clair pour Toi ?

 

Christian


Formateur Indépendant, Consultant, AutoCAD, AutoCAD LT, REVIT MEP, INVENTOR -
www.rebcao.fr

Christian REB

0 J'aime