salvanorigatore Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 Bonjour à tous,actuellement pour quantifier mes blocs je me sert de l’outil « Extraction d’attributs » (eattext) ce qui me donne aussi la possibilité de différencier des blocs à l’apparence identique mais destiné à un usage différent, au moyen d’un ou plusieurs attributs de ces blocs.Ce que je voudrais pouvoir faire c’est : délimiter la zone de comptage par une polyligne fer-mée (seule possibilité qui n’est pas offerte par l’outil « Extraction d’attributs »). Est-ce que quelqu’un connaît la solution à mon problème ?Je suis ouvert à tout même si cela implique de changer d’outils de comptage… Merci d’avance à toutes les bonnes volontés. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Patrick_35 Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 SalutAvec le lisp CT sur cette page par exemple. @+ 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 14 mars 2007 Auteur Posté(e) le 14 mars 2007 Salut Patrick_35,Je sais je suis impardonnable et pourtant je te jure j’ai cherché avant de poser la question mais je suis impardonnable quand même…bon passons. :red: Merci pour ta réponse rapide mais j’ai quand même 2 petites questions :- Quelle est la différence entre ton lisp CTT.LSP et ton lisp LSTBLT.LSP (je les ai chargés tous les deux dans AutoCAD)- A quel moment CTT.LSP (ou LSTBLT.LSP ?) me propose de faire une sélection par polyli-gne ?Merci d’avance de ton aide. [Edité le 14/3/2007 par salvanorigatore] " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Patrick_35 Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 LSTBL fait un décompte sur tout le dessin alors que CT permet une sélection et ne fait le décompte que dans cette sélection (comme pour bcount des express)Tu ne choisis pas une polyligne, mais tu peux lors de la sélection, utiliser le paramètre sp ou cp. Je sais je suis impardonnable Non, la recherche n'est pas toujours évidente @+ 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 14 mars 2007 Auteur Posté(e) le 14 mars 2007 Ok Patrick_35,C’est impeccable. ;) Laisse-moi seulement te faire quelques petites demandes (qui ne demande rien n'a rien, disait mon grand père, ou quelqu'un d’autre ...) : - Serait il possible de choisir un polygone ou une polyligne déjà existants dans le dessin plutôt que d’en créer une ?- Pour l’export sur Excel y-t-il mieux que « copier-coller » ?- Y-t-il moyen de faire la différence entre les blocs grâce aux attributs comme dans l’outils « Extraction d’attributs » (eattext) ? (en fait « Extraction d’attributs » (eattext) serait parfait s’il donnait la possibilité de délimiter la zone de comptage, dommage… ):mad: Voilà c’est tout (et c’est déjà pas mal) !Salut. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
(gile) Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 Salut, Un petit LISP fait avec la routine SelByObj (fonctionne avec les polylignes fermées les cercles et ellipses). (defun c:test (/ obj ss n bl nom lst) (if (setq obj (car (entsel "\nSélectionnz l'objet délimitant la sélection: ") ) ) (if (member (cdr (assoc 0 (entget obj))) '("CIRCLE" "ELLIPSE" "LWPOLYLINE") ) (if (setq ss (SelByObj obj "WP" '((0 . "INSERT")))) (progn (setq n (sslength ss)) (princ (strcat "\n\t" (itoa n) " blocs dans la sélection :")) (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) ) ) ) (mapcar '(lambda (x) (princ (strcat "\n- \"" (car x) "\" : " (itoa (cdr x)))) ) lst ) (textscr) ) (princ "\nAucun Bloc dans la sélection.") ) (princ "\nEntité non valide.") ) (princ "\naucune entité sélectionnée.") ) (princ) ) ;;; 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
salvanorigatore Posté(e) le 21 mars 2007 Auteur Posté(e) le 21 mars 2007 Bonjour à vous,Non, je n’avais pas oublié…Tout d’abord un grand bravo et merci à (gile) : ton lisp fonctionne très bien, c’est bien sympa de ta part.Maintenant je m’adresse à Patrick_35 : pourquoi tu ne mettrais pas ce lisp parmi les tiens (Lisps de Patrick_35) ?Si tu décide de le mettre à mon avis l’idéal serait de fondre les 2 lisps, le tien et celui de (gile) avec la possibilité de choisir soit de sélectionner une polyligne existante soit de tracer un polygone (peut un créant une petite boite de dialogue comme tu sais si bien les faire…)Et si possible prévoir un moyen d’exporter sur Excel (autre que « copier-coller »).Enfin voilà c’était juste une suggestion mais je pense que ce serait utile à pal mal de gens…En tout cas merci pour ce que tu à déjà fait.Bonne fin de journée à tous. [Edité le 21/3/2007 par salvanorigatore] " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Patrick_35 Posté(e) le 21 mars 2007 Posté(e) le 21 mars 2007 SalutEt pourquoi pas la rubrique les Lisps de (gile) :D Li'idée est intéressante, mais je n'ai actuellement pas le temps pour l'instant.Si quelqu'un veux bien prendre le flambeau (Bred, Gile ou bien sur quelqu'un d'autres ?) @+ 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 22 mars 2007 Auteur Posté(e) le 22 mars 2007 Bonjour,je ne suis pas contre … :Dtoc, toc, (gile) est-tu là ? Est-ce que tu peux faire quelque chose ? :o Si oui merci d’avance, sinon merci quand même.Toutefois si d’autres peuvent et veulent s’impliquer aussi surtout n’hésitez pas !Merci à toutes les bonnes volontés. :yltype: Bonne journée à tous. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
(gile) Posté(e) le 23 mars 2007 Posté(e) le 23 mars 2007 J'ai modifié Le LISP ci-dessus pour permettre, soit une sélection "normale" (fenêtre ou polygone en tapant "sp" ou "cp"), soit une sélection à l'aide d'un objet (taper "Entrée" "Espace" ou faire clic droit pour accéder à la sélection par objet). Il est proposé d'enregitrer les résultats dans un fichier Excel. Nota : la routine "SelbyObj" doit être chargée. (defun c:cnt-blk (/ obj ss n bl nom lst str file) (vl-load-com) (prompt "\nSélectionnez les blocs ou : ") (if (not (setq ss (ssget '((0 . "INSERT"))))) (if (setq obj (car (entsel "\nSélectionnz 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.") ) ) (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] : " ) "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) ) [Edité le 25/3/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
salvanorigatore Posté(e) le 27 mars 2007 Auteur Posté(e) le 27 mars 2007 Bonjour,Merci beaucoup (gile) c’est exactement ce que je voulais obtenir. :D C’est très sympa de ta part de m’avoir donné un coup de main (merci quand même aussi à Pa-trick_35).Maintenant je voudrais aller plus loin mais je crois que pour ça il est préférable que je crée un nouveau sujet, donc je t’invite (et les autres aussi) à lire mon nouveau sujet et si possible à y apporter ta contribution.Merci encore et merci d’avance. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
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