Aller au contenu

modification REA-ATT V2.00


matban

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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]

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

 

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

Lien vers le commentaire
Partager sur d’autres sites

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]

Lien vers le commentaire
Partager sur d’autres sites

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 ?

 

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é