Aller au contenu

modification REA-ATT V2.00


Messages recommandés

Posté(e)

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

Posté(e)

vérifie si dans ton style de cotation courant si la case à cocher "supprimer le zero de fin est validé

ca peut etre ca

a voir

 

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

Posté(e)

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

Posté(e)

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]

Posté(e)

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.

:)

Posté(e)

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é pour

ramener au 1er plan tes attributs.

 

Valable uniquement pour des tirages en noir & blanc.

Posté(e)

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...)

Posté(e)

 

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

Posté(e)

Je crois que matban voulait en fait que seules ces lignes d'attributs

masquent l'arrière plan ... d'où le problème du nombre de caractères variable.

Posté(e)

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]

Posté(e)

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 maxi

qu'ils peuvent comporter ...) puis tu utilises la commande nettoyer - polyligne - tu sélectionnes

ton 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 ?

 

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é