pra-em1a Posté(e) le 6 novembre 2012 Posté(e) le 6 novembre 2012 Dans quelques uns des projets sur lesquels je travaille,on me demande de valider le nombre de dispenseur de savon,de papier-toilette, de bac à ordures etc....Ces items sont indérés sous forme de blocs.Avec Autocad 2011, existe-il une manière d'en extraire lenombre avec facilité??
Julian-Nihon Posté(e) le 6 novembre 2012 Posté(e) le 6 novembre 2012 Sans faire de pub, regarde >>> ici <<<
x_all Posté(e) le 7 novembre 2012 Posté(e) le 7 novembre 2012 ce n'est pas une très bonne idée de poster dans 'CADxp, comment ça marche?' si tu as une version pleine, il y a des lisp qui font ça... cherche tabloblo ou bcnt mais si tu est sur une LT c'est marron quelques trucs sur autocad
lecrabe Posté(e) le 7 novembre 2012 Posté(e) le 7 novembre 2012 Hello Avec un vrai AutoCAD, la routine BCNT c tip-top !Il suffit de trier dans l'ecran texte ce qui t'interesse ... lecrabe Autodesk Expert Elite Team
Fraid Posté(e) le 7 novembre 2012 Posté(e) le 7 novembre 2012 Bonjour, Sinon avec la sélection rapide tu as directement le nombre de blocs sélectionnés dans la fenêtre de propriétés. https://github.com/Fraiddd
salvanorigatore Posté(e) le 7 novembre 2012 Posté(e) le 7 novembre 2012 Bonjour,moi j'utilise celle-ci (qui n'est pas de moi hein :ph34r: mais je crois de (gille) ) qui à l'avantage de te proposer d'enregistrer un fichier avec les résultat.par contre les resultat dans la Fenetre de texte ne sont pas aussi bien rangés :(Peut-être un mélange des deux routines pourrait etre bien ...:wub:mais moi je ne sais pas faire :wacko: Ciao. (defun c:cnt-blk (/ obj ss n bl nom lst str file) (vl-load-com) (prompt "\nSélectionnez les blocs ou < Objet >: ") (if (not (setq ss (ssget '((0 . "INSERT"))))) (if (setq obj (car (entsel "\nSélectionnez l'objet délimitant la sélection: ") ) ) (if (member (cdr (assoc 0 (entget obj))) '("CIRCLE" "ELLIPSE" "LWPOLYLINE") ) (progn (ZoomObject (list (vlax-ename->vla-object obj))) (setq ss (SelByObj obj "WP" '((0 . "INSERT")))) ) (princ "\nEntité non valide.") ) (princ "\nAucune entité sélectionnée.") ) ) (if ss (progn (setq n (sslength ss)) (setq str (strcat "\n" (itoa n) " blocs dans la sélection\n") ) (repeat n (setq bl (vlax-ename->vla-object (ssname ss (setq n (1- n)))) nom (if (vlax-property-available-p bl 'EffectiveName) (vla-get-EffectiveName bl) (vla-get-Name bl) ) lst (if (assoc nom lst) (subst (cons nom (1+ (cdr (assoc nom lst)))) (assoc nom lst) lst ) (cons (cons nom 1) lst) ) ) ) (setq str (apply 'strcat (cons str (mapcar '(lambda (x) (strcat (car x) "\t" (itoa (cdr x)) "\n" ) ) lst ) ) ) ) (textscr) (princ str) (initget "Oui Non") (if (= (getkword "\nEnregistrer dans un fichier ? [Oui/Non] < Non >: " ) "Oui" ) (progn (setq file (open (getfiled "Créez ou sélectionnez un fichier" "" "xls" 1 ) "a" ) ) (princ str file) (close file) ) ) (graphscr) ) (princ "\nAucune entité sélectionnée.") ) (princ) ) ;; ZoomObject Effectue un zoom sur les objets contenus dans la liste ;; ;; Argument ;; objlst : une liste de vla-object ;; ;; Variables ;; dir : normale du plan de la vue courante ;; ang : angle de la vue courante ;; 3x3 : matrice de transformation du SCG vers la vue courante (dimension 3) ;; 4x4 : matrice de transformation du SCG vers la vue courante (dimension 4) ;; ptlst : liste des points minimum et maximum des bounding-boxes des objets sélectionnés (SCG) (defun ZoomObject (objlst / dir ang 3x3 4x4 ptlst) (vl-load-com) (setq dir (mapcar '- (trans (getvar "viewdir") 1 0) (trans '(0 0 0) 1 0) ) ang (- (getvar "viewtwist")) 3x3 (mxm (mapcar '(lambda (x) (trans x 0 dir)) '((1 0 0) (0 1 0) (0 0 1)) ) (list (list (cos ang) (- (sin ang)) 0) (list (sin ang) (cos ang) 0) '(0 0 1) ) ) 4x4 (append (mapcar '(lambda (v o) (append v (list o)) ) 3x3 '(0 0 0) ) (list '(0 0 0 1)) ) ) (foreach obj objlst (vla-TransformBy obj (vlax-tmatrix (trp 4x4))) (vla-getBoundingBox obj 'minpt 'maxpt) (vla-TransformBy obj (vlax-tmatrix 4x4)) (setq ptlst (cons (vlax-safearray->list minpt) (cons (vlax-safearray->list maxpt) ptlst) ) ) ) (vla-ZoomWindow (vlax-get-acad-object) (vlax-3d-point (mxv 3x3 (apply 'mapcar (cons 'min ptlst)))) (vlax-3d-point (mxv 3x3 (apply 'mapcar (cons 'max ptlst)))) ) ) ;; transpose une matrice Doug Wilson (defun trp (m) (apply 'mapcar (cons 'list m)) ) ;; Apply a transformation matrix to a vector by Vladimir Nesterovsky (defun mxv (m v) (mapcar '(lambda (r) (apply '+ (mapcar '* r v))) m) ) ;; Multiply two matrices by Vladimir Nesterovsky (defun mxm (m q) (mapcar '(lambda (r) (mxv (trp q) r)) m) ) ;;; SelByObj -Gilles Chanteau- 06/10/06 ;;; Crée un jeu de sélection avec tous les objets contenus ou capturés, ;;; dans la vue courante, par un objet (cercle, ellipse, polyligne fermée) ;;; Arguments : ;;; - ent : un objet (ename ou vla-object) ;;; - opt : un mode de sélection (Cp ou Wp) ;;; - fltr : un filtre de sélection (liste) ou nil (defun SelByObj (ent opt fltr / obj dist n lst prec dist p_lst ss) (vl-load-com) (if (= (type ent) 'ENAME) (setq obj (vlax-ename->vla-object ent)) (setq obj ent ent (vlax-vla-object->ename ent) ) ) (cond ((member (vla-get-ObjectName obj) '("AcDbCircle" "AcDbEllipse")) (setq dist (/ (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) 50 ) n 0 ) (repeat 50 (setq lst (cons (trans (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n)))) 0 1 ) lst ) ) ) ) ((and (= (vla-get-ObjectName obj) "AcDbPolyline") (= (vla-get-Closed obj) :vlax-true) ) (setq p_lst (vl-remove-if-not '(lambda (x) (or (= (car x) 10) (= (car x) 42) ) ) (entget ent) ) ) (while p_lst (setq lst (cons (trans (append (cdr (assoc 10 p_lst)) (list (cdr (assoc 38 (entget ent)))) ) ent 1 ) lst ) ) (if (/= 0 (cdadr p_lst)) (progn (setq prec (1+ (fix (* 25 (sqrt (abs (cdadr p_lst)))))) dist (/ (- (if (cdaddr p_lst) (vlax-curve-getDistAtPoint obj (trans (cdaddr p_lst) ent 0) ) (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) ) (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) ) prec ) n 0 ) (repeat (1- prec) (setq lst (cons (trans (vlax-curve-getPointAtDist obj (+ (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) (* dist (setq n (1+ n))) ) ) 0 1 ) lst ) ) ) ) ) (setq p_lst (cddr p_lst)) ) ) ) (cond (lst (setq ss (ssget (strcat "_" opt) lst fltr)) ss ) ) ) " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Patrick_35 Posté(e) le 8 novembre 2012 Posté(e) le 8 novembre 2012 Salut Je vais y aller aussi avec mon petit lispA la différence des autres, il permet le décompte avec la distinction ou pas des attributs.Par exemple, on a sur nos plans des blocs luminaires qui ont le même nom, mais qui sont distingués par un attribut pour dire que c'est le type 1, type 2, etc...C'est galère pour les différencier, d'où ce lisp. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
salvanorigatore Posté(e) le 8 novembre 2012 Posté(e) le 8 novembre 2012 Salut Je vais y aller aussi avec mon petit lispA la différence des autres, il permet le décompte avec la distinction ou pas des attributs.Par exemple, on a sur nos plans des blocs luminaires qui ont le même nom, mais qui sont distingués par un attribut pour dire que c'est le type 1, type 2, etc...C'est galère pour les différencier, d'où ce lisp. @+ Tu a raison Patrick_35 ton lisp est vraiment pratique et en plus je l'utilise régulièrement.Toutefois si tu me le permet je trouve vraiment dommage que, tout comme les autres, il ne propose pas d'enregistrer un fichier Excel avec les résultat, peut-etre tu pourrait rajouter cette option ? :wub: Ciao. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Patrick_35 Posté(e) le 8 novembre 2012 Posté(e) le 8 novembre 2012 L'option existe déjà.Tu choisis écrire dans un fichier et soit tu ouvres le fichier txt directement depuis excel ou tu changes l'extension txt en xls.Dans Excel, le trie est par colonne. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
salvanorigatore Posté(e) le 8 novembre 2012 Posté(e) le 8 novembre 2012 L'option existe déjà.Tu choisis écrire dans un fichier et soit tu ouvres le fichier txt directement depuis excel ou tu changes l'extension txt en xls.Dans Excel, le trie est par colonne. @+ oups...:unsure:je suis confus, toutes mes excuses maitre :wub: La prochaine fois je mettrais mes lunette avant ! Ciao. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Patrick_35 Posté(e) le 8 novembre 2012 Posté(e) le 8 novembre 2012 oups...:unsure:je suis confus, toutes mes excuses maitre :wub:De rien mon padawan, avec tous les lisps que l'on peut trouver, on est loin de connaitre toutes les options de chacuns. (je sens que mes chevilles commencent à gonfler) @+ 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