Aller au contenu

Calcul de plusieur polylignes


Messages recommandés

Posté(e)

J'ai un réseau global constitué de plusieurs réseaux différents EP, EU, UN. Je dois calculer les mètres linéaire par réseau mais j'ai plusieur polylignes. Dans UN j'ai 391 polylignes alors hors-mis Les commandes AIRE ou LISTE avez-vous d'autre d'idées parce que je ne m'en sortirais pas de toutes les calculer.

Merci pour vos réponses. :)

MATHILDE.

Posté(e)

hello

un petit lisp vite fait,

isole ton calque concerné, car j'ai pas mis de contrôles...

(setq jeu (ssget)

lon (sslength jeu)

n 0

LT 0)

(repeat lon

(setq ent (ssname jeu n))

(command "_area" "ob" ent)

(setq L1 (getvar "perimeter")

LT (+ L1 Lt)

n ( + 1 n)

)

 

)

(alert (strcat (itoa n)" Polylignes, Longueur Totale : " (rtos LT 2 2)))

 

amicalement

Posté(e)

Bonjour,

 

un lisp pour cumuler les distances :

 

;|

 

TLEN.LSP - Total LENgth of selected objects

© 1998 Tee Square Graphics

 

|;

 

(defun C:TL (/ ss tl n ent itm obj l)

(setq ss (ssget)

tl 0

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 "Total length of selected objects is " (rtos tl)))

(princ)

)

 

 

Si tu as Covadis

Covadis 2D

__Listings/Métrés

______Métré de réseaux

et Covadis va calculer le total des poly par calques et épaisseurs

 

@+

Le Hamac est une science exacte qui ne tolère pas l'amateurisme.

Posté(e)

Mathilde,

 

Ou encore cette routine. Une fois chargée, tu tapes COMPUTEAREA.

 

(defun c:computeArea (

/ area endPt i n object objectType perimeter ss totalArea totalPerimeter vla-object

)

;; (setq ss (ssget (list (cons 0 "lwpolyline))))

(setq ss (ssget))

(setq i 0 n (if ss (sslength ss) 0))

(setq area nil totalArea 0 totalPerimeter 0)

(while (< i n)

(setq object (ssname ss i))

(setq vla-object (vlax-ename->vla-object object))

(if (and (vlax-property-available-p vla-object 'area) (not (vlax-erased-p vla-object)))

(progn

(setq area (vlax-curve-getArea vla-object))

(setq endPt (vlax-curve-getEndParam vla-object))

(setq perimeter (vlax-curve-getDistAtParam vla-object endPt))

(setq objectType (vla-get-ObjectName vla-object))

(princ (strcat "\nAire de l'objet " objectType " ayant le handle <" (vla-get-handle vla-object) ">: " (rtos area 2 4)))

(setq totalArea (+ totalArea area))

(setq totalPerimeter (+ totalPerimeter perimeter))

))

(vlax-release-object vla-object)

(setq i (1+ i))

)

(if (> totalArea 0) (princ (strcat "\nAire totale: " (rtos totalArea 2 4))))

(if (> totalPerimeter 0) (princ (strcat "\nPérimètre total: " (rtos totalPerimeter 2 4))))

(princ)

)

 

Serge

 

Posté(e)

j'adore cette fonction MNT

 

(alert (strcat "Total length of selected objects is " (rtos tl)))

 

mais j'ai adapter cette phrase en

 

 

(print (strcat "Longueur totale " (rtos tl)))

 

comme ca c'est en francais, je peux faire un copier-coller et je ne suis pas oubliger d'aller cliquer une fois inutilement :D

 

[Edité le 07.04.2004 par Krynn]

Posté(e)

Tramber,

 

J'imagine que ça dépend de ce qu'on cherche. La fonction TL affiche le résultat de la commande AREA et est donc forcément plus lente, mais on parle de millisecondes. La seconde fonction traite les polylignes tel que c'était demandé. On peut l'adapter très facilement.

 

Serge

Posté(e)

Mathilde,

 

Ca fait plusieurs messages que tu postes qui me font penser qu'on travaille sur le même genre de projets (EU, U, EP, mouse, etc). Peut-etre pourrrait on se mettre en contact ? Je ne sais pas si on peut contacter les gens directement ici ?

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité