salvanorigatore Posté(e) le 27 mars 2007 Posté(e) le 27 mars 2007 Bonjour à tous,je voudrais pouvoir quantifier les blocs, grâce à un lisp comme « cnt-blk » de (gile) par exemple ou la fonction AutoCAD « eattext », et que les résultat s’inscrivent dans un tableau déjà exis-tant dans mon dessin qui est en fait une légende avec un colonne supplémentaire pour les quantités.Donc il faudrait que les résultats s’inscrivent sur la ligne correspondante au bloc dans la co-lonne quantités.De plus il faudrait que la colonne quantité puisse éventuellement se mettre à jour si on ajoute, on modifie ou on supprime un bloc dans le dessin.Voilà j’ai tout expliqué je rajoute une petite image pour expliquer mes propos.IMAGE Merci d’avance à toutes les bonnes volontés (meme une solution partielle est la bienvenue...). :yltype: " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Tramber Posté(e) le 27 mars 2007 Posté(e) le 27 mars 2007 La petite image dans les tableaux ....ah c'est joli. Par ici, un beau travail collectif. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 27 mars 2007 Posté(e) le 27 mars 2007 Une adaptation du lien donné par Tramber Possibilité de lister les blocs contenus dans d'un objet (cercle/ellipse/polyligne) ou les blocs sélectionné ou tous les blocs de la collection du dessin. La mise à jour automatique du tableau en cas d'ajout ou de suppression de blocs suppose une utilisation des réacteurs qui dépasse mes très maigres connaissances de ce sujet. (defun c:tabloc (/ kw libloc liidbloc ss col liref ptins tableVL cont) (vl-load-com) (initget "Collection Objet Sélection") (setq kw (getkword "\nChoisir une option [Collection/Objet/Sélection] : ")) (cond ((= kw "Objet") (if (setq obj (car (entsel "\nSélectionnez l'objet délimitant la sélection: ") ) ) (if (member (cdr (assoc 0 (entget obj))) '("CIRCLE" "ELLIPSE" "LWPOLYLINE") ) (setq ss (SelByObj obj "WP" '((0 . "INSERT")))) (princ "\nEntité non valide.") ) (princ "\nAucune entité sélectionnée.") ) ) ((= kw "Collection") (setq ss (ssget "_X" '((0 . "INSERT"))) col T ) ) (T (setq ss (ssget '((0 . "INSERT"))))) ) (if ss (setq liref (mapcar '(lambda (x) (setq x (vlax-ename->vla-object x)) (if (vlax-property-available-p x 'EffectiveName) (vla-get-EffectiveName x) (vla-get-Name x) ) ) (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) ) ) (setq liref '()) ) (if col (vlax-for i (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object)) ) (if (and (/= (substr (vla-get-name i) 1 1) "*") (= :vlax-false (vla-get-IsXref i)) ) (setq libloc (append libloc (list (vla-get-name i))) liidbloc (append liidbloc (list (vla-get-ObjectID i))) ) ) ) (setq libloc (remove_doubles liref) liidbloc (mapcar '(lambda (x) (vla-get-ObjectID (vla-item (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object) ) ) x ) ) ) libloc ) ) ) (initget 1) (setq ptins (trans (getpoint "\nPoint d'insertion: ") 1 0)) (setq tableVL (vla-addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-3d-point ptins) (+ (length libloc) 2) 3 20 100 ) ) (vla-put-TitleSuppressed tableVL :vlax-false) (vla-setText tableVL 0 0 "LEGENDE/QUANTITATIF") (mapcar '(lambda (x) (vla-setText tableVL 1 (car x) (cdr x))) '((0 . "SYMBOLE") (1 . "DESIGNATION") (2 . "QUANTITE")) ) (setq cont 0) (repeat (vla-get-Rows tableVL) (vla-SetBlockTableRecordId tableVL (1+ (setq cont (1+ cont))) 0 (nth (1- cont) liidbloc) :vlax-true ) (vla-settext tableVL (1+ cont) 1 (nth (1- cont) libloc) ) (vla-settext tableVL (1+ cont) 2 (length (vl-remove-if-not '(lambda (n) (= n (nth (1- cont) libloc))) liref ) ) ) (vla-setcellalignment tableVL (1+ cont) 1 5) (vla-setcellalignment tableVL (1+ cont) 2 5) ) (princ) ) ;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste (defun remove_doubles (lst) (if lst (cons (car lst) (remove_doubles (vl-remove (car lst) lst))) ) ) ;;; 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 l'objet sélectionné ;;; (cercle, ellipse, polyligne fermée). ;;; Arguments : ;;; - un nom d'entité (ename) ;;; - un mode de sélection (Cp ou Wp) ;;; - un filtre de sélection ou nil (defun SelByObj (ent opt fltr / obj dist n lst prec dist p_lst) (vl-load-com) (setq obj (vlax-ename->vla-object ent)) (cond ((member (cdr (assoc 0 (entget ent))) '("CIRCLE" "ELLIPSE")) (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 ) ) ) ) (T (setq p_lst (vl-remove-if-not '(lambda (x) (or (= (car x) 10) (= (car x) 42) ) ) (entget ent) ) ) (while p_lst (setq lst (append lst (list (trans (append (cdr (assoc 10 p_lst)) (list (cdr (assoc 38 (entget ent)))) ) ent 1 ) ) ) ) (if (/= 0 (cdadr p_lst)) (progn (setq prec (1+ (fix (* 50 (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 (append lst (list (trans (vlax-curve-getPointAtDist obj (+ (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) (* dist (setq n (1+ n))) ) ) 0 1 ) ) ) ) ) ) ) (setq p_lst (cddr p_lst)) ) ) ) (ssget (strcat "_" opt) lst fltr) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
jalna Posté(e) le 27 mars 2007 Posté(e) le 27 mars 2007 M-A-G-N-I-F-I-Q-U-E http://img152.imageshack.us/img152/5231/c227dj9.gifMerci!!!! "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
Joffoon Posté(e) le 27 mars 2007 Posté(e) le 27 mars 2007 Superbe Lisp, Bravo !!!!!! et merci.. Le ridicule ne tue pas, il te rend plus fort!
salvanorigatore Posté(e) le 27 mars 2007 Auteur Posté(e) le 27 mars 2007 Merci beaucoup Tramber et (gile) c’est du beau bouleau !Comme le dit si bien jalna c’est M-A-G-N-I-F-I-Q-U-E ! :D :D :D Mais voilà si je peux me permettre, en fait ce que je voudrais obtenir c’est seulement la colonne quantité dans une légende déjà existante dans mon dessin.En fait j’ai déjà crée mon tableau dans le dessin avec :- la colonne des symboles (avec les symboles à l’échelle qui m’intéresse)- la colonne des désignations (avec les renseignements remplis de façon manuelle puisque différents suivant le chantier)- la colonne des références (les références catalogues donnés par les marques) [surligneur] - et la fameuse colonne des quantités que je voudrais se voir remplir (et se mettre à jour...) automatiquement.[/surligneur]Les noms réels des blocs ne m’intéressent pas (au contraire ils polluent plutôt le tableau).Il faudrait juste extraire du fichier le nombre d’occurrences de chaque bloc contenu dans la légende et l’intégrer dans la colonne QUANTITÉS de cette légende.Est-ce que c’est seulement possible ? :( Merci d’avance. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Patrick_35 Posté(e) le 27 mars 2007 Posté(e) le 27 mars 2007 Hello Pour salvanorigatoreEssaie le lisp LG dans ma rubrique des lisps Pour (gile)Je pense que tu es compétent pour les réacteurs. Tu as largement les bases pour travailler dessus @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
autospeed Posté(e) le 28 mars 2007 Posté(e) le 28 mars 2007 Essaye le logiciel Autospeed , la version demo permet de compter les blocs par calques , il suffit de coller ton dessin dans le fichier autospeed.dwg et de lancer la commande mbc ( métré des blocs par calques ) L'exportation se fait dans un tableau excel.Phil http://www.autospeed.biz Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
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