horatio Posté(e) le 28 avril 2008 Partager Posté(e) le 28 avril 2008 Salut Cherche desesperement une fonction lisp pour addionner toutes les polylines et avoir la longueur totalgrand merci à vous Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité ingoenius Posté(e) le 28 avril 2008 Partager Posté(e) le 28 avril 2008 J'avais fait cela regarde s'il te convien elle mesure la longueur soit par calque soit par selection objects ;------------------ SOMMA LUNGHEZZE LINEARI SELEZIONATE O DA LAYER ------------------------------ (defun C:misura () (setq scelta (strcase (getstring "\nLayer o Selezione? \nL o invio\n"))) (if (= scelta "L") (progn (setq LAY (car (entsel "\nSeleziona un'entita' per il layer"))) (setq LAYD (entget LAY)) ; estrae le informazioni della selezione (setq NLAY (cdr (assoc 8 LAYD))) ;estrae il nome del layer (setq ss (ssget "x" (list(cons 8 NLAY))));seleziona tutti gli oggetti sul layer scelto (setq tl 0.0) (setq n (1- (sslength ss))) (while (>= n 0) (setq ent (entget (setq itm (ssname ss n))) obj (cdr (assoc 0 ent)) l (cond ((= obj "LINE") (distance (cdr (assoc 10 ent))(cdr (assoc 11 ent)))) ((= obj "ARC") (* (cdr (assoc 40 ent)) (if (minusp (setq l (- (cdr (assoc 51 ent)) (cdr (assoc 50 ent))))) (+ pi pi l) l))) ((or (= obj "CIRCLE")(= obj "SPLINE")(= obj "POLYLINE") (= obj "LWPOLYLINE")(= obj "ELLIPSE")) (command "_.area" "_o" itm) (getvar "perimeter")) (T 0)) tl (+ tl l) n (1- n))) (alert (strcat "Longueur Totale " (rtos tl) " metres "));messaggio a schermo (princ) );fine scelta layer (if (/= SS nil) (progn (setq ss (ssget)) (setq tl 0.0) (setq n (1- (sslength ss))) (while (>= n 0) (setq ent (entget (setq itm (ssname ss n))) obj (cdr (assoc 0 ent)) l (cond ((= obj "LINE") (distance (cdr (assoc 10 ent))(cdr (assoc 11 ent)))) ((= obj "ARC") (* (cdr (assoc 40 ent)) (if (minusp (setq l (- (cdr (assoc 51 ent)) (cdr (assoc 50 ent))))) (+ pi pi l) l))) ((or (= obj "CIRCLE")(= obj "SPLINE")(= obj "POLYLINE") (= obj "LWPOLYLINE")(= obj "ELLIPSE")) (command "_.area" "_o" itm) (getvar "perimeter")) (T 0)) tl (+ tl l) n (1- n))) (alert (strcat "Longueur Totale " (rtos tl) " metres "));messaggio a schermo (princ) ))) );fine programma [Edité le 28/4/2008 par ingoenius] [Edité le 28/4/2008 par ingoenius] Lien vers le commentaire Partager sur d’autres sites More sharing options...
autospeed Posté(e) le 18 juillet 2008 Partager Posté(e) le 18 juillet 2008 tu peux utiliser la version de demo d'autospeed , elle est entierement fonctionnelle pour les métrés de polylignes. tu as juste a transferer ton dessin dans le dessin autospeed.dwg et a lancer la commande mpc ( métré des polylignes par calques) Phil www.autospeed.biz/url] Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres Lien vers le commentaire Partager sur d’autres sites More sharing options...
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