matban Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Bien le bonjour... J'utilise la très bonne LISP "REA-ATT V2.00" mais je souhaiterai qu'il me force l'affichage des zéros. Je m'explique, lorsqu'il trouve 8.12m² il me l'écrit tel quel. mais quand il trouve un tout pile il me marque 8m² alors que je veux 8,00m². Petit rappelle... ;;;================================================================= ;;; ;;; REA-ATT.LSP V2.00 ;;; ;;; Associer un Attribut à une poly fermée ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================================= (defun modif_poly(obj rea arg-list) (if (and (vlax-read-enabled-p obj)(vlax-read-enabled-p (vlr-data rea))) (vla-put-textstring (vlr-data rea) (strcat (rtos (/ (vla-get-area obj) 10000) 2 2) "M2")) (vlr-remove rea) ) ) (defun effacer_pt(obj rea arg-list)(setq aa obj bb rea) (vlax-ldata-delete obj "Patrick_35" (vlr-data rea)) (vlax-ldata-delete (vlr-data rea) "Patrick_35" obj) (vlr-remove rea) ) (defun c:srea-att(/ sel rec) (if (setq sel (car (nentsel "Sélection d'un objet lié : "))) (progn (setq sel (vlax-ename->vla-object sel)) (if (setq rec (vlax-ldata-get sel "Patrick_35")) (progn (mapcar 'vlr-remove (vl-remove-if-not '(lambda (x) (if (eq (type (vlr-data x)) 'VLA-OBJECT) (if (vlax-read-enabled-p (vlr-data x)) (or (eq (vla-get-ownerid (vlr-data x)) (vla-get-ownerid sel)) (eq (vla-get-ownerid (vlr-data x)) (vla-get-ownerid rec)) ) ) ) ) (cdr (car (vlr-reactors :vlr-object-reactor))) ) ) (vlax-ldata-delete sel "Patrick_35" rec) (vlax-ldata-delete rec "Patrick_35" sel) (princ "\nLiaison effacée.") ) (alert "Pas de liaison") ) ) ) (princ) ) (defun c:rea-att(/ n sel_poly sel_text) (while (not sel_poly) (setq sel_poly (car (entsel "\nSélection de la polyligne/spline/cercle : "))) (if sel_poly (if (member (cdr (assoc 0 (entget sel_poly))) '("POLYLINE" "LWPOLYLINE" "SPLINE" "CIRCLE")) (progn (setq sel_poly (vlax-ename->vla-object sel_poly)) (if (/= (vla-get-objectname sel_poly) "AcDbCircle") (if (= :vlax-false (vla-get-closed sel_poly)) (progn (alert "Cette Polyligne/Spline n'est pas fermée") (setq sel_poly nil) ) ) ) (if sel_poly (if (vlax-ldata-get sel_poly "Patrick_35") (progn (alert "Polyligne/Spline/Cercle déjà associé à un attribut") (setq sel_poly nil) ) ) ) ) (progn (alert "Ce n'est pas une Polyligne/Spline/Cercle") (setq sel_poly nil) ) ) ) ) (if sel_poly (progn (while (not sel_text) (setq sel_text (car (nentsel "\nSélection de l'attribut : "))) (if sel_text (if (= (cdr (assoc 0 (entget sel_text))) "ATTRIB") (progn (setq sel_text (vlax-ename->vla-object sel_text)) (if (vlax-ldata-get sel_text "Patrick_35") (progn (alert "Attribut déjà associé à une Polyligne/Spline/Cercle") (setq sel_text nil) ) ) ) (progn (setq sel_text nil) (alert "Ce n'est pas un attribut") ) ) ) ) (if sel_text (progn (vlr-object-reactor (list sel_poly) sel_text '((:vlr-modified . modif_poly)(:vlr-erased . effacer_pt))) (vlr-object-reactor (list sel_text) sel_poly '((:vlr-erased . effacer_pt))) (vlax-ldata-put sel_poly "Patrick_35" sel_text) (vlax-ldata-put sel_text "Patrick_35" sel_poly) (vla-put-textstring sel_text (strcat (rtos (/ (vla-get-area sel_poly) 10000) 2 2) "M2")) ) ) ) ) (princ) ) (defun refaire_reacteurs(/ entp entt) (vl-load-com) (if (not appli_patrick_35) (progn (setq appli_patrick_35 (ssget "x" (list (cons 102 "{ACAD_XDICTIONARY")))) (if appli_patrick_35 (progn (setq n 0) (while (setq entp (ssname appli_patrick_35 n)) (setq entp (vlax-ename->vla-object entp)) (if (setq entt (vlax-ldata-get entp "Patrick_35")) (progn (vla-put-textstring entt (strcat (rtos (/ (vla-get-area entp) 10000) 2 2) "M2")) (vlr-object-reactor (list entp) entt '((:vlr-modified . modif_poly)(:vlr-erased . effacer_pt))) (vlr-object-reactor (list entt) entp '((:vlr-erased . effacer_pt))) ) (vlax-ldata-delete entp "Patrick_35") ) (setq n (1+ n)) ) ) ) ) ) (princ) ) (refaire_reacteurs) (princ "\nREA-ATT.LSP chargé. Tapez REA-ATT ou SREA-ATT pour l'exécuter") (princ) MERCI d'avance de votre aide et soutien :P
capde06 Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 vérifie si dans ton style de cotation courant si la case à cocher "supprimer le zero de fin est validéca peut etre caa voir Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
matban Posté(e) le 18 mars 2009 Auteur Posté(e) le 18 mars 2009 Super c'est bien ça... :cool: bravo capde06 et merci.
matban Posté(e) le 18 mars 2009 Auteur Posté(e) le 18 mars 2009 Une autre petite question. Peut -on faire un masque derrière un bloc contenant des attributs pour cacher le dessin. ou une solution du même genre... :cool: J’attends vos réponses avisées. merci
lili2006 Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Bonjour à toutes et tous, Bienvenue matban , Derrière l'attribut ou le bloc ? Attribut avec "textmask", par exemple des express, Bloc, avec hachures et en jouant avec la plume de ton calque,...(STB ou CTB ?) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
matban Posté(e) le 18 mars 2009 Auteur Posté(e) le 18 mars 2009 Text Mask de Exptress Tool ???Je rentre dans mon bloc.Je selectionne dans « Exptress » Text puis Text mASK « masktype » « wipeout / 3d face / solid » késako?Disons solide - couleur blanche Et la magie ça fait que dal...Ça semble être la bonne solution pour temps. (précision: oui c'est bien dérrière l'attribut.) [Edité le 18/3/2009 par matban]
lili2006 Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Re, Je n'ai pas le tps de tester, mais je suis sûr d'avoir déjà pratiqué cette astuce avec Wipeout(Attention aux ordres de tracé également,...),...Version 2008 pleine, et toi ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
matban Posté(e) le 18 mars 2009 Auteur Posté(e) le 18 mars 2009 On a un peu de tout, je jongle avec la revit 2008 et la light 2009. Je ferai différents tests ce soir, mais si quelqu'un à la réponse d'ici là, ça m'arrange. :)
thry0 Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Bjr, Tu peux essayer en hachurant ton bloc en motif SOLID couleur 255,couleur visible à l'écran mais pas au tirage et jouer avec l'ordre de tracé pourramener au 1er plan tes attributs. Valable uniquement pour des tirages en noir & blanc.
matban Posté(e) le 18 mars 2009 Auteur Posté(e) le 18 mars 2009 Le problème c'est que je veux que cela s'adapte (s'étire) en fonction de la longueur du texte des attributs. (comme les masques de texte...)
thry0 Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Dis nous en plus pour ce qui concerne la forme générale de ton bloc ...
matban Posté(e) le 18 mars 2009 Auteur Posté(e) le 18 mars 2009 http://www.host-style.com/uploads/e9f701d777.jpg http://www.host-style.com/uploads/672209d9dd.jpg merci de vos réponses assez rapides je trouve^^ [Edité le 18/3/2009 par matban]
thry0 Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Re, Si je comprends bien ton bloc en fait se résume à tes 3 lignes d'attributs ...C'est bien ça ?
lecrabe Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Hello Tu vas essayer la manipulation suivante (AutoCAD complet ou LT 2009) : Sur le calque ZERO ... Tu dessines un rectangle, puis tu le hachures avec le code couleur RGB 255,255,255 càd en fait le VRAI blanc en 16 millions de couleurs Ensuite tu dessines par dessus, ce que tu veux : attrbuts, ligne, arc, polyligne, etc ... Ensuite tu en fais un bloc que tu vas utiliser / tester ... Si tu ne veux pas voir le rectangle noir autour, il aurait fallu forcer la couleur du rectangle avec le code couleur 255,255,255 Ca marche ? Le Decapode (255,255,255) Autodesk Expert Elite Team
thry0 Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Je crois que matban voulait en fait que seules ces lignes d'attributsmasquent l'arrière plan ... d'où le problème du nombre de caractères variable.
matban Posté(e) le 19 mars 2009 Auteur Posté(e) le 19 mars 2009 Oui thry0 c'est exactement ça. Si je comprends bien ton bloc en fait se résume à tes 3 lignes d'attributs ...C'est bien ça ? ----------- oui Edit : Ba alors tout le monde fait la grève?^^[Edité le 19/3/2009 par matban] [Edité le 19/3/2009 par matban]
thry0 Posté(e) le 19 mars 2009 Posté(e) le 19 mars 2009 Re, A priori, il n'y a pas moyen de coller un arrière plan à des attributs texte de blocs ...On me rectifiera si je me trompe.Donc je reste sur ma solution initiale, c'est en tous cas ce que je ferai personnellement,à savoir un rectangle qui englobe tes attributs (tu dois "maitriser" le nb de lettres maxiqu'ils peuvent comporter ...) puis tu utilises la commande nettoyer - polyligne - tu sélectionneston cadre puis tu ramènes au dessus tes attributs. Tu fais un bloc de tout cela et voilà !Petite question, comment renseignes-tu tes attributs ... manuellement ?
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