Aller au contenu

Modification d\'attribut


chti52

Messages recommandés

Bonjour à tous

 

Je reçois régulièrement des plans de l'extérieur comportant des blocs avec attributs et, comme dans la majorité des cas ceux-ci n'utilisent pas l'invisibilité de ces attributs. Je dois donc ouvrir l'éditeur de bloc dynamique ( bedit ), modifier dans les propriétés la valeur en invisible, enregistrer le bloc puis synchroniser ( battman ) l'attribut afin que tous se changent dans le dessin.

 

Je vous laisse imaginer la lourdeur de l'opération lorsqu'il y a plus d'une centaine de blocs dans le fichier, aussi je souhaiterais trouver un lisp ou un vba qui me transforme çà en un ou 2 clics. N'étant pas un pro du lisp et pas du tout du vba, Quelqu'un pourrait-il m'aider sur ce terrain ?

Merci d'avance

:casstet:

Lien vers le commentaire
Partager sur d’autres sites

Salut Gile

oui justement pour pouvoir les conserver dans la base de données mais non visibles à l'impression. J'ai bien essayé la commande ATTMODE mais çà me fait modifier chaque bloc un par un « Quelle galère !!! » et puis il faut chaque fois synchroniser pour mettre à jour tous les blocs du plan. Avec COVADIS on peut choisir tous les blocs d'un calque et modifier leurs attributs mais seulement leur Couleur, Hauteur, Position, Angle, etc... mais on ne peut pas les rendre invisibles. C'est pourquoi je lance ce message car à force çà devient fastidieux et épuisant pour les yeux.

 

Lien vers le commentaire
Partager sur d’autres sites

J'ai bien essayé la commande ATTMODE mais çà me fait modifier chaque bloc un par un « Quelle galère !!! » et puis il faut chaque fois synchroniser pour mettre à jour tous les blocs du plan.
:casstet: :casstet: :casstet:

 

ATTMODE est une variable système qui contrôle la visibilité des attrributs :

 

0 Inactif : Rend tous les attributs invisibles.

 

1 Normal : Retient la visibilité courante de chaque attribut ; les attributs visibles sont affichés ; les attributs invisibles ne sont pas affichés

 

2 Actif : Rend tous les attributs visibles.

 

 

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

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Il y a une solution assez simple en changeant l'attribut de calque avec Covadis et ensuite rendre ce calque inactif pour cacher les attributs.

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Un lisp vite fait (fonctionne bien si bloc inséré synchro avec la base)

 

(defun c:inv(/ att bl doc lst n nom nombl pos tot)

 (defun nombl(bl)
   (if (vlax-property-available-p bl 'effectivename)
     (vla-get-effectivename bl)
     (vla-get-name bl)
   )
 )

 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (while (and (setq att (nentsel))
      (setq att (vlax-ename->vla-object (car att)))
 )
   (and (eq (vla-get-objectname att) "AcDbAttribute")
 (setq bl  (vla-objectidtoobject (vla-get-database att)(vla-get-ownerid att))
       lst (vlax-invoke bl 'getattributes)
       pos (- (length lst) (length (member att lst)))
 )
 (ssget "x" (list (cons 0 "insert") (cons 2 (strcat (setq nom (nombl bl)) ",`**")) (cons 66 1)))
     (progn
(setq tot 0)
(vlax-for ent (setq sel (vla-get-activeselectionset doc))
  (and (eq (nombl ent) nom)
       (setq lst (vlax-invoke ent 'getattributes))
       (setq att (nth pos lst))
       (setq tot (1+ tot))
    (vla-put-invisible att :vlax-true)
  )
)
(setq n -1)
(vlax-for ent (vla-item (vla-get-blocks doc) nom)
  (and (eq (vla-get-objectname ent) "AcDbAttributeDefinition")
       (eq (vla-get-constant ent) :vlax-false)
       (setq n (1+ n))
       (eq n pos)
    (vla-put-invisible ent :vlax-true)
  )
)
       (vla-delete sel)
(princ (strcat "\nModification de " (itoa tot) " bloc(s)."))
     )
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

@+

 

[Edité le 11/3/2009 par Patrick_35]

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Mais j'aimerais bien savoir pourquoi ATTMODE à 0 ne convient pas ?

 

Sans trop savoir le but recherché...

Mais si malgré tout tu veux conserver la visibilité de certain attributs (disons 2 sur 5), ATTMODE à 0 ne te permet pas cela, c'est tout ou rien.

 

Je pense qu'il veut simplement rendre certain attributs invisible en ATTMODE normal (1), changer le flag de ceux-ci en quelque sorte.

 

OU pouvoir conserver les attributs visibles sur d'autres blocs, tout simplement.

 

[Edité le 10/3/2009 par bonuscad]

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

Bonjour à tous et merci pour vos réponses.

 

Bonuscad a bien compris ce que je veux.

 

Quand au coup des calques, c'est déjà fait sur COVADIS avec les points topo, mais je ne peux pas créer un calque par attribut de bloc surtout que je dois respecter un cahier des charges.

Aussi je dois mettre certains attributs en invisible plutôt qu'en constant lors de leur création.

 

Je vais essayer ton lisp Patrick_35 et je te dirai si c'est ce que je recherche.

 

:)

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Je viens de tester INV sur un MAP 2006 avec un dessin qui contient de nombreux blocs différents insérés avec des échelles et rotations différentes !

 

Test réalisé sur un bloc avec 2 attributs visibles ...

 

En sélectionnant un attribut visible sur un bloc existant : rien ne se passe !

 

Par contre si j'insère à nouveau le même bloc et que je lance INV sur un attribut,

il m'a mis a jour les 200 blocs de mon dessin en rendant invisible l'attribut sélectionné !

 

A partir de ce moment, cela fonctionne pour tous les autres blocs existants ...

 

Curieux ! Non !?

Comme si quelque chose avait besoin de s'initialiser !?

 

Le Decapode

 

PS: j'ai rajoute un (vl-load-com) au debut du Lisp

 

 

 

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

 

ReHello

 

Sorry pour le dérangement, ça fonctionne parfaitement avec MAP 2004 / 2006 / 2009

et donc aussi avec AutoCAD ... ;)

 

J'avais un problème "curieux lors de mon 1er test avec MAP 2006

sans doute lié à l'absence du (vl-load-com) :casstet:

 

Du grand Patrick comme d'habitude ! :)

 

Merci, Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bjr à tous

J'ai aussi essayé ton LISP , Patrick_35, mais pour moi çà ne fonctionne pas. J'ai Autocad Map 2008 et voilà le message que j'ai en retour:

 

erreur: no function definition: VLAX-GET-ACAD-OBJECT

 

Où me suis-je trompé?

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

J'ai ajouté (vl-load-com) au début du lisp

Je crois bien que c"est une erreur récurrente et je pensa pas être le seul ;)

 

Du grand Patrick comme d'habitude ! :)

Je sens que je vais rougir ;)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é