Oeil2bidule Posté(e) le 25 mai 2020 Posté(e) le 25 mai 2020 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? Amicalement votre.
LElemurien Posté(e) le 25 mai 2020 Posté(e) le 25 mai 2020 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!
Steven Posté(e) le 25 mai 2020 Posté(e) le 25 mai 2020 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.
Steven Posté(e) le 25 mai 2020 Posté(e) le 25 mai 2020 Et bien voilà, le LElemurien vient de donner le nom du lisp 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.
JPhil Posté(e) le 1 juillet 2021 Posté(e) le 1 juillet 2021 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.")
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