Aller au contenu

Nombre de bloc dans une cellule tableau légende ?


Messages recommandés

Bonjour,

Vous pouvez utiliser l'excellent LISP de Gilles

Routine: LISTBLOCK qui genere un Tableau des Blocs avec :

le Nom, le Nombre Total par Bloc et la Representation graphique !

BIEN SUR le tableau genere (contrairement a l 'extraction de donnees AutoCAD) est STATIQUE

Ou bien utiliser l'extraction de donnée

Bonne journée!

Lien à poster
Partager sur d’autres sites

Salut,

 

Es-tu sur AutoCAD ou AutoCAD LT ?

 

 

Si tu es sur AutoCAD, sans passer par la programmation, il y l'extraction de données qui est natif, dans AutoCAD qui répondra à ta demande.

 

Commande: TABLEAU > valider > cocher A partir des données d'objets du dessin (extraction de données) ou commande: DATAEXTRACTION.

Il y a aussi le lisp de Gile, par exemple qui fait aussi le job. Il y a justement un sujet qui en parle où lecrable partage ledit lisp mais je ne le rtrouve pas.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien à poster
Partager sur d’autres sites

Et bien voilà, le LElemurien vient de donner le nom du lisp wink.gif

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien à poster
Partager sur d’autres sites
  • 1 an après...

En voici un autre qui rajoute la désignation du bloc contenue dans un attribut "LEGENDE".

 

;; LGD  
;; Crée un tableau qui liste les blocs sélectionnés 
;; avec la désignation inclue dans l'attribut LEGENDE  
(defun c:lgd (/ ss refs lst ele ins tbl row)  
  (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*)))  
  (prompt "\nSélectionnez les blocs à lister ou ")  
  (or (setq ss (ssget '((0 . "INSERT"))))  
      (setq ss (ssget "_X" '((0 . "INSERT"))))  
  )  
  (if ss  
    (progn  
      (vlax-for x (setq ss (vla-get-ActiveSelectionSet *acdoc*))  
        (or (vlax-property-available-p x 'Path)  
            (setq refs  
                (cons  
                        (list  
                        (cons  
                        (vla-get-EffectiveName x)  
                        (gc:GetVisibilityState x)  
                        )  
                        (vla-get-Name x)  
                        )  
                        refs  
                )  
            )  
        )  
      )  
      (vla-delete ss)  
    )  
  ) 
  (foreach n refs  
    (setq lst (if (setq ele (assoc (car n) lst))  
                (subst (list (car ele) (cadr ele) (1+ (caddr ele))) ele lst)  
                (cons (list (car n) (cadr n) 1) lst)  
              )  
    )  
  )  
  (initget 1)  
  (setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0))  
  (setq tbl (vla-addtable  
              (vla-get-modelspace  
                (vla-get-activedocument (vlax-get-acad-object))  
              )  
              (vlax-3d-point ins)  
              (+ 2 (length lst))  
              4  
              20                        ; Hauteur cellule  
              80                        ; Largeur cellule  
            )  
  )  
  (vla-put-VertCellMargin tbl 4.0)      ; Marge verticale  
  (vla-put-TitleSuppressed tbl :vlax-false)  
  (vla-put-HeaderSuppressed tbl :vlax-false)  
  (vla-setText tbl 0 0 "Légende")         ; Titre  
  (vla-setText tbl 1 0 "Nom du bloc")           ; Titre colonne 1  
  (vla-setText tbl 1 1 "Quantité")        ; Titre colonne 2  
  (vla-setText tbl 1 2 "Symbole")       ; Titre colonne 3 
  (vla-setText tbl 1 3 "Désignation")       ; Titre colonne 4  
  (setq row 2) 
  (foreach b lst 
   (setq tag "XXXXX")
   (if (= (cdr (assoc 0 (entget (cdr (assoc -2 (entget (tblobjname "BLOCK" (caar b))))) '("*")))) "ATTDEF")
      (if (= (cdr (assoc 2 (entget (cdr (assoc -2 (entget (tblobjname "BLOCK" (caar b))))) '("*")))) "LEGENDE")
         (setq tag (cdr (assoc 1 (entget (cdr (assoc -2 (entget (tblobjname "BLOCK" (caar b))))) '("*")))))
      )
   )
    (vla-SetText  
      tbl  
      row  
      0  
      (if (cdar B)  
        (strcat (caar B) " (" (cdar B) ")")  
        (caar B)  
      )  
    )  
    (vla-SetText tbl row 1 (caddr B))  
    (vla-SetBlockTableRecordId tbl row 2 (vla-get-ObjectId (vla-Item *blocks* (cadr B))) :vlax-true) 
    (vla-SetText tbl row 3 tag)
    (vla-setcellalignment tbl row 0 5)  
    (vla-setcellalignment tbl row 1 5) 
    (vla-setcellalignment tbl row 3 4)  
    (setq row (1+ row))  
  )  
  (princ)  
)  
;; gc:GetVisibilityState  
;; Retourne l'état de visibilité d'un bloc dynamique ou nil 
 
(defun gc:GetVisibilityState (blk / state)  
  (if (= (vla-get-IsDynamicblock blk) :vlax-true)  
    (foreach p (vlax-invoke blk 'GetDynamicBlockProperties)  
      (if (= (type (car (vlax-get p 'AllowedValues))) 'STR)  
        (setq state (vlax-get p 'Value))  
      )  
    )  
  )  
  state  
)
(prompt "\nprogramme chargé, saisir: LGD pour lancer.")

 

Lien à poster
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...