Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

 

Pouvez vous me dire si il est possible dans une cellule d'un tableau autocad de pouvoir compter automatiquement le nombre de bloc dans l'espace objet?

Le "champ" permet de reconnaitre le nom du bloc, pourquoi pas le nombre du nom du bloc?

 

 

post-76190-0-73583100-1590390846_thumb.png

 

Amicalement votre.

Posté(e)

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!

Posté(e)

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 le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Posté(e)

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 le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

  • 1 an après...
Posté(e)

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

 

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é