Aller au contenu

Masquer les Attributs sélectionnés


zebzeb

Messages recommandés

Bonjour,

 

Pour la synthèse et l'impression de différents plans j’aurais besoin de masquer les attributs de certains blocs sans modifier les blocs sachant que chacun de ces blocs contient des attributs visible et non visible.

 

Je souhaiterais savoir s’il existe une technique pour faire un ATTMODE=0 uniquement sur des blocs sélectionnés ? Ou le cas échéant ATTMODE=0 dans l’espace objet et ATTMODE=1 ou 2 dans les présentations ?

Peut-être qu’un lisp existe ?

 

Merci pour vos conseils

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Et pourquoi ne pas mettre ces attributs dans un calque gelé ?

 

Par exemple

(defun c:gat(/ calque doc ent)
 (vl-load-com)

 (setq calque "Mon_Calque_à_Geler")

 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (while (setq ent (nentsel))
   (and (setq ent (vlax-ename->vla-object (car ent)))
 (eq  (vla-get-objectname ent) "AcDbAttribute")
     (vla-put-layer ent calque)
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

Ps : Tu as cette valeur à adapter à ton besoin "Mon_Calque_à_Geler"

 

@+

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

Bonjour Patrick et merci pour la solution que tu apportes toutes fois mon soucis est différent

 

Je charge pliseurs dessins de différents corps d'état en xref ensuite je fais mon attmode=0 pour pouvoir y voir un peu mieux dont notament les conflits. Les dessins montés en xref je ne peu les modifiers.

 

Le problème est qu'à l'impression mes cartouches sont eux aussi sans attribut actuellement la seul solution que j'ai trouvée est de faire un copier/coller de mon cartouche en supperposant, ensuite j'en "burst" un, bref pas terrible comme solution.

Lien vers le commentaire
Partager sur d’autres sites

Une version qui rends invisible les attributs, sur xref ou pas et sans tenir compte de la variable attmode

 

(defun c:gat(/ calque doc ent)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (while (setq ent (nentsel))
   (and (setq ent (vlax-ename->vla-object (car ent)))
        (eq  (vla-get-objectname ent) "AcDbAttribute")
     (vla-put-visible ent :vlax-false)
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

Ne pas oublier de faire un regen à la fin.

 

@+

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

Je viens de tester:

Pour un dessin dont les blocs sont insérer directement pas de soucis je cache bien les attributs sélectionnés, et pour faire réapparaitre attsync.

 

Par contre sur les xref ça ne fonctionne pas, lors de la sélection de l'attribut, celui reste visible. Mais ce sont les propriètés de l'étiquette du bloc qui sont modifiées hors l'xref est indépendant du dessin ainsi que les blocs qui le compose.

 

Une idée comme ça, et merci pour ta patience, mais est-il réellement possible de dire "aucun attribut visible sur Xref sélectionné" comme la variable attmode ?

Lien vers le commentaire
Partager sur d’autres sites

Par contre sur les xref ça ne fonctionne pas, lors de la sélection de l'attribut, celui reste visible. Mais ce sont les propriètés de l'étiquette du bloc qui sont modifiées hors l'xref est indépendant du dessin ainsi que les blocs qui le compose.

Si, ca fonctionne car j'ai testé sur un dessin en xref contenant des attributs et ils sont bien invisible.

Par contre, si on sauvegarde et qu'on réouvre le dessin, ils redeviennent visible.

Il est possible de faire quelque chose de plus poussé pour conserver dans le dessin ce qui a été rendu invisible dans les xrefs, mais en rentre dans une appli beaucoup plus complexe que mes 3 lignes.

 

Une idée comme ça, et merci pour ta patience, mais est-il réellement possible de dire "aucun attribut visible sur Xref sélectionné" comme la variable attmode ?

Oui, c'est faisable comme

(defun c:gat(/ doc ent ele)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (while (setq ent (entsel))
   (and (setq ent (vlax-ename->vla-object (car ent)))
        (eq  (vla-get-objectname ent) "AcDbBlockReference")
        (vlax-property-available-p ent 'path)
     (progn
(vlax-for ele (vla-item (vla-get-blocks doc) (vla-get-name ent))
  (and	(eq (vla-get-objectname ele) "AcDbBlockReference")
	(eq (vla-get-hasattributes ele) :vlax-true)
    (mapcar '(lambda(x) (vla-put-visible x :vlax-false)) (vlax-invoke ele 'getattributes))
  )
)
(vla-regen doc acallviewports)
     )
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

@+

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é