Wibz Posté(e) le 30 mars 2007 Posté(e) le 30 mars 2007 Bonjour J'ai un petit soucis, j'aimerai compter tous les bloc que j'ai sur mon dessin et les compter en fonction de ce qu'ils ont dans leurs attributs en gros j'ai un bloc qui représente un rond dans lesquels j'ai mis un attribut. mais je peux avoir plusieurs fois le meme bloc avec des attributs différents, je voudrai avoir par exemple tout les bloc rond avec un 2 dedans et aussi le nombre de bloc qui as un 5 comme attributs. La solution de le faire a la main va etre super longue j'ai plus de 1000 bloc par niveau et j'ai 8 niveau dans mon batiments j'ai fait une recherche dans le forum et aussi dans l'aide je pense qu'une extraction d'attribut serai ma solution mais je comprend rien a la réalisation du gabarit, quelqu'un pourrai m'aider? au pire me dire exactement quoi mettre dans mon gabarit. merci d'avance!
Bred Posté(e) le 30 mars 2007 Posté(e) le 30 mars 2007 Salut,- tu lances l'extrateur,p1- Tu créés un nouveau tableaup2 - Tu choisis ce qui t'interressep3 - A gauche tu selectionnes les blocs que tu veux compter (tu peux faire une selection avec shift ou ctrl...)A droite tu choisis les propriétés que tu veux garder (normalement tu dois avoir l'étiquette de tes attributs)p4 - Tu as le résultats de ce qui va sortir, tu peux l'extraire vers un tableau autocad, ou exterene (excel...)p5 - Choisis le style si tableau autocadp6 - Tu peux enfin enregistrer ton gabarit, qui pourras te reservir en p1 !... .... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Wibz Posté(e) le 30 mars 2007 Auteur Posté(e) le 30 mars 2007 Laissez tomber je suis le boulet de la semaine, je viens de le faire avec le poste de mon collegue et ca fonctionne parfaitement et pas avec moi, mais le truc c'est que j'ai pas réagis que je suis sous autocad 2007 LT et lui en version complete. Merci quand meme (je viens d'arrivé dans la boite j'ai pas l'habitude d'avoir un autocad LT, sorry encore)
Patrick_35 Posté(e) le 30 mars 2007 Posté(e) le 30 mars 2007 Salut Un petit lisp qui fait ce que tu recherches et il ne prend que le premier attribut des blocs @+ (defun c:compt(/ i js n lst rechercher_nom tbl) (defun rechercher_nom(val / att nom) (if (vlax-property-available-p val 'effectivename) (setq nom (list (vla-get-effectivename val))) (setq nom (list (vla-get-name val))) ) (if (eq (vla-get-hasattributes val) :vlax-true) (progn (setq att (vla-get-textstring (car (vlax-invoke val 'getattributes)))) (if (not (member att '(nil ""))) (setq nom (reverse (cons att nom))) ) ) ) nom ) (setq n 0 js (ssget "x" (list (cons 0 "INSERT"))) tbl '() lst '()) (if js (while (setq bl (ssname js n)) (setq i (cdr (assoc 70 (tblsearch "block" (cdr (assoc 2 (entget bl))))))) (if (not (or (eq (logand i 4) 4) (eq (logand i 8) 8) (eq (logand i 16) 16) ) ) (setq tbl (cons (rechercher_nom (vlax-ename->vla-object bl)) tbl)) ) (setq n (1+ n)) ) ) (while tbl (setq n (length tbl) js (car tbl) tbl (vl-remove js tbl) lst (cons (cons (itoa (- n (length tbl))) js) lst) ) ) (if lst (foreach n (vl-sort lst '(lambda (a b) (if (= (cadr a) (cadr b)) (< (caddr a) (caddr b)) (< (cadr a) (cadr b)) ) ) ) (princ (strcat "\n" (substr " " 1 (- 5 (strlen (car n)))) (car n) " " (cadr n) ) ) (if (caddr n) (princ (strcat (substr ".............................." 1 (- 30 (strlen (cadr n)))) "avec attribut " (caddr n) ) ) ) ) (princ "\nPas de bloc à dénombrer.") ) (princ) ) Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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