zebzeb Posté(e) le 3 septembre 2014 Posté(e) le 3 septembre 2014 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
Patrick_35 Posté(e) le 3 septembre 2014 Posté(e) le 3 septembre 2014 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zebzeb Posté(e) le 3 septembre 2014 Auteur Posté(e) le 3 septembre 2014 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.
Patrick_35 Posté(e) le 3 septembre 2014 Posté(e) le 3 septembre 2014 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zebzeb Posté(e) le 3 septembre 2014 Auteur Posté(e) le 3 septembre 2014 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 ?
Patrick_35 Posté(e) le 3 septembre 2014 Posté(e) le 3 septembre 2014 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zebzeb Posté(e) le 4 septembre 2014 Auteur Posté(e) le 4 septembre 2014 Bonjour Patrick, Cette dernière version est vraiment géniale et comble toutes mes espérances :D , en revanche la seconde ne fonctionne toujours pas ??? Merci beaucoup
Patrick_35 Posté(e) le 4 septembre 2014 Posté(e) le 4 septembre 2014 Salut Tu as bien fait un regen après l'utilisation du lisp comme indiqué à la fin du message #4 ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zebzeb Posté(e) le 4 septembre 2014 Auteur Posté(e) le 4 septembre 2014 En effet je n'avais pas fait de regen, j'avais juste ajouté à la fin (vla-regen activedocument 1)... oups! Du coup avec le regen maintenant ça fonctionne nikel
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant