Steven Posté(e) le 7 février 2023 Posté(e) le 7 février 2023 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 Citer 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.
JPhil Posté(e) le 7 février 2023 Posté(e) le 7 février 2023 La commande "DEFDUCALQUE" pourrait faire l'affaire 😉 Citer
didier Posté(e) le 7 février 2023 Posté(e) le 7 février 2023 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 Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
Olivier Eckmann Posté(e) le 7 février 2023 Posté(e) le 7 février 2023 Salut @Steven, C'est ça que tu veux? Olivier BLOCS_AVEC_ATT_COUL_FORCEES.dwg Citer
Steven Posté(e) le 7 février 2023 Auteur Posté(e) le 7 février 2023 @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. 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. Je souhaite pouvoir forcer la couleur du bloc, via les propriétés. 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. 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. Citer 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.
(gile) Posté(e) le 7 février 2023 Posté(e) le 7 février 2023 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) ) 2 Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Steven Posté(e) le 8 février 2023 Auteur Posté(e) le 8 février 2023 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 Citer 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.
(gile) Posté(e) le 8 février 2023 Posté(e) le 8 février 2023 Au temps pour moi, une petite faute frappe oubliée. Le code est corrigé. Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Steven Posté(e) le 8 février 2023 Auteur Posté(e) le 8 février 2023 Rôôôôh, c'est beau Encore un grand merci au maître Citer 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.
Messages recommandés