arno973 Posté(e) le 26 septembre 2013 Posté(e) le 26 septembre 2013 Bonjour, J'utilise souvent le lisp "cumul measure" ( qui vient de quelqu'un du forum dont je n'ai pas retrouvé le nom sur site, et comme le lisp n'est pas signé :( ). (vl-load-com) (defun c:cumul_measure ( / js n ename d_cumul count k_mod) (or (setq js (ssget "_I")) (setq js (ssget "_P")) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] <Existant>: ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget))) ) (cond (js (setq d_cumul 0.0 count 0) (initget "Longueur Aire _Length Area") (setq k_mod (getkword "\nMesurer [Longueur/Aire] <Longueur> : ")) (if (not k_mod) (setq k_mod "Length")) (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n))))) (if (eq k_mod "Length") (if (member (vlax-get ename 'ObjectName) '("AcDbEllipse" "AcDbSpline" "AcDbHelix")) (setq d_cumul (+ (vlax-curve-getDistAtParam ename (vlax-curve-getEndParam ename)) d_cumul) count (1+ count)) (foreach typ_measure '("Length" "ArcLength" "Circumference" "Perimeter") (if (vlax-property-available-p ename (read typ_measure)) (setq d_cumul (+ (vlax-get ename (read typ_measure)) d_cumul) count (1+ count)) ) ) ) (if (vlax-property-available-p ename "Area") (setq d_cumul (+ (vlax-get ename 'Area) d_cumul) count (1+ count)) ) ) ) (princ (strcat "\nCumul des " (if (eq k_mod "Area") "Aire" "Longueur") " de " (itoa count) " objet(s) sur " (itoa (sslength js)) " sélectionné(s): " (rtos d_cumul))) ) ) (prin1) ) J'utilise aussi souvent un lisp qui permet de tout mettre en couleur "ducalque" dans un dessin, puis en une couleur choisie. J'ai essayé de combiner les deux mais pfiou, ça marche pas, puis ça devient trop compliqué pour moi :) En fait je cherchais à faire un truc particulier, à savoir : une fois une entité sélectionnée par cumul measure, et fonction validée ( donc j'ai la longueur des éléments sélectionnés ) les entités sélectionnées passent en une couleur donnée, genre rouge. Je fais souvent des sélections un peu bizarre, et des fois je ne sais plus si j'ai sélectionné une entité précédemment ou pas, alors je refais pour vérifier. Si elle passe dans une couleur forcée, je saurais forcément si j'ai déjà compté ou pas :) Si quelqu'un se sent l'ame charitable :) Sinon tant pis, sans on arrive aussi :) Arnaud
(gile) Posté(e) le 26 septembre 2013 Posté(e) le 26 septembre 2013 Salut, Pour l'auteur du LISP, je parierais bonuscad (il y a des styles qui se reconnaissent et il a donné tant de LISP sur ce site et ailleurs que les probabilités jouent en ma faveur). Pour la modif demandée, je te propose ça : (defun c:cumul_measure ( / js n ename d_cumul count k_mod color) (or (setq js (ssget "_I")) (setq js (ssget "_P")) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] <Existant>: ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget))) ) (cond (js (setq d_cumul 0.0 count 0) (initget "Longueur Aire _Length Area") (setq k_mod (getkword "\nMesurer [Longueur/Aire] <Longueur> : ")) (if (not k_mod) (setq k_mod "Length")) (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n)))) color nil) (if (eq k_mod "Length") (if (member (vlax-get ename 'ObjectName) '("AcDbEllipse" "AcDbSpline" "AcDbHelix")) (setq d_cumul (+ (vlax-curve-getDistAtParam ename (vlax-curve-getEndParam ename)) d_cumul) count (1+ count) color T) (foreach typ_measure '("Length" "ArcLength" "Circumference" "Perimeter") (if (vlax-property-available-p ename (read typ_measure)) (setq d_cumul (+ (vlax-get ename (read typ_measure)) d_cumul) count (1+ count) color T) ) ) ) (if (vlax-property-available-p ename "Area") (setq d_cumul (+ (vlax-get ename 'Area) d_cumul) count (1+ count) color T) ) ) (if color (vla-put-Color ename 1) ) ) (princ (strcat "\nCumul des " (if (eq k_mod "Area") "Aire" "Longueur") " de " (itoa count) " objet(s) sur " (itoa (sslength js)) " sélectionné(s): " (rtos d_cumul))) ) ) (prin1) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
arno973 Posté(e) le 26 septembre 2013 Auteur Posté(e) le 26 septembre 2013 Yes, merci (gile) c'est parfait ! Pour changer de couleur j'ai juste à changer le chiffre dans la ligne : (vla-put-Color ename 1). Ce qui m'épate c'est que la modification était en fait minime >< En tout cas merci à toi ! Arnaud
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