Axel2407--- Posté(e) le 13 décembre 2022 Posté(e) le 13 décembre 2022 Bonjour à tous ! J'ai découvert le merveilleux LISP "LISTBLOCK", me permettant d'afficher dans un tableau le nom, le nombre, et le symbole, c'est super ! Mais il me manque quelque chose d'essentiel, car je souhaiterai afficher également le nom de la visibilité de mon bloc dynamique dans une 4e colonne. J'utilise un même bloc avec des dizaines de visibilités et je souhaiterai les quantifier indépendamment. Merci à vous et bonne fin de journée 🙂
Luna Posté(e) le 13 décembre 2022 Posté(e) le 13 décembre 2022 Coucou, As-tu essayé de regarder la commande QUANTITE (ou NOMBRE) ? Elle est dispo depuis la version 2022 d'AutoCAD. Autrement, s'il te faut passer par le langage LISP, regarde du côté des fonctions de LeeMac qui sont parfaite pour la gestion des propriétés dynamiques des blocs : http://www.lee-mac.com/dynamicblockfunctions.html Bisous, Luna
(gile) Posté(e) le 13 décembre 2022 Posté(e) le 13 décembre 2022 Il y a 2 heures, Axel2407--- a dit : Bonjour à tous ! J'ai découvert le merveilleux LISP "LISTBLOCK", me permettant d'afficher dans un tableau le nom, le nombre, et le symbole, c'est super ! Mais il me manque quelque chose d'essentiel, car je souhaiterai afficher également le nom de la visibilité de mon bloc dynamique dans une 4e colonne. J'utilise un même bloc avec des dizaines de visibilités et je souhaiterai les quantifier indépendamment. Merci à vous et bonne fin de journée 🙂 Essaye ça: (defun c:ListBlock (/ ss name value block blocks insPt table row) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*)) ) ;; Select blocks (prompt "\nSelect blocks to list or <All>") (or (setq ss (ssget '((0 . "INSERT")))) (setq ss (ssget "_X" '((0 . "INSERT"))) ) ) (if ss (progn ;; Build a list of dotted pairs (blockName . numberOfReferences) from the selection set (vlax-for x (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (if (not (vlax-property-available-p x 'Path)) (setq name (cons (vla-get-EffectiveName x) (if (vl-some '(lambda (p) (and (vla-get-AllowedValues p) (= (type (setq value (vlax-get p 'Value))) 'STR) ) ) (vlax-invoke x 'GetDynamicBlockProperties) ) value "" ) ) blocks (if (setq block (assoc name blocks)) (subst (cons name (1+ (cdr block))) block blocks) (cons (cons name 1) blocks) ) ) ) ) (vla-delete ss) ;; Prompt for insertion point (initget 1) (setq insPt (trans (getpoint "\nInsertion point: ") 1 0)) ;; Create the table (setq table (vla-addtable (vla-get-modelspace *acdoc*) (vlax-3d-point insPt) (+ 2 (length blocks)) ; number of rows (including title and header) 4 ; number of colums 20 ; cell height 80 ; row width ) ) (vla-put-VertCellMargin table 4.0) (vla-put-TitleSuppressed table :vlax-false) (vla-put-HeaderSuppressed table :vlax-false) ;; Fill the titel and the header ;;(vla-setText table 0 0 "Blocks") ;;(vla-setText table 1 0 "Name") ;;(vla-setText table 1 1 "Count") ;;(vla-setText table 1 2 "Symbol") ;; Textes version Francaise (vla-setText table 0 0 "Quantitatif des Blocs") (vla-setText table 1 0 "Nom") (vla-setText table 1 1 "Nombre") (vla-setText table 1 2 "Visibilité") (vla-setText table 1 3 "Symbole") ;;;;; Hauteur des Textes dans la Table = 5.0 ;;;;; (vla-SetTextHeight table 7 5.0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; fill the following rows from the list contents (setq row 2) (foreach item blocks (vla-settext table row 0 (caar item)) ; block name (vla-settext table row 1 (cdr item)) ; references count (vla-settext table row 2 (cdar item)) (vla-SetBlockTableRecordId ; block symbol table row 3 (vla-get-ObjectId (vla-Item *blocks* (caar item))) :vlax-true ) (setq row (1+ row)) ) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Axel2407--- Posté(e) le 20 décembre 2022 Auteur Posté(e) le 20 décembre 2022 wow ! ça fonctionne ! Un énorme merci à vous tous ! 🙂
Axel2407--- Posté(e) le 22 décembre 2022 Auteur Posté(e) le 22 décembre 2022 Bonjour à tous, Encore merci pour votre aide, mais j'ai un soucis d'affichage dans le tableau avec un bloc Parfois il affiche 1 dans la colonne visibilité. Cela arrive avec un bloc ayant plus de 70 configurations donc je pense que le problème vient de se bloc Autre question, j'aimerai obtenir la longueur de ce bloc dans le tableau, est ce que c'est possible d'ajouter une nouvelle colonne ? Un énorme merci à vous
didier Posté(e) le 22 décembre 2022 Posté(e) le 22 décembre 2022 Bonjour @Axel2407--- Rien à voir avec le sujet, mais quand je lis "70 configurations" je pense qu'on n'est pas dans la meilleure utilisation des blocs dynamiques et que le dessin est, de ce fait, surchargé inutilement. Amicalement Éternel débutant… Mon site perso : Programmer dans AutoCAD
Axel2407--- Posté(e) le 22 décembre 2022 Auteur Posté(e) le 22 décembre 2022 Bonjour Didier, Merci pour ton retour, effectivement cela fait beaucoup, mais j'en ai besoin. Le nombre de visibilité ne joue pas sur le tableau, j'en ai supprimé beaucoup et j'ai toujours le résultat 1 qui apparait. Merci
lecrabe Posté(e) le 22 décembre 2022 Posté(e) le 22 décembre 2022 Hello 70 Configurations : c du delire ! Sinon SVP ton Bloc dynamique avec 70 Configs SVP ! La Sante, Joyeuses Fetes, lecrabe Autodesk Expert Elite Team
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