Aller au contenu

longueur totale (polyligne)


Messages recommandés

Posté(e)

Bonjour,

 

j'aimerai connaitre la longueur de canalisation d'un réseau entier dessiné en polyligne, avec la commande "_list" (liste) j'ai la longueur d'une polyligne.

 

Comment faire pour avoir la somme de toutes les polylignes du réseau ?

 

merci

Posté(e)

Salut,

la somme de toutes les polylignes du réseau

dans la commande "_area", tu as les options "Addition", puis "Objet".

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

... ou un petit lisp :

(defun c:lg-pol	 (/ LG SEL X)
 (setq	lg  0)
 (while (not sel)
   (setq sel (ssget '((0 . "LWPOLYLINE"))))
   )
 (repeat (setq x (sslength sel))
   (setq lg (+	lg
	(vla-get-Length
	  (vlax-ename->vla-object (ssname sel (setq x (1- x)))))))
   )
 (alert (strcat "Longueur :" (rtos lg) " ."))
 (princ)
 )

 

[Edité le 9/1/2008 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

le lisp ne marche pas, autocad me mets le message suivant:

 

; erreur: no function definition: VLAX-ENAME->VLA-OBJECT

 

Et pour la commande "_aire" c'est pas adapté à mon cas, je peux sélectionné qu'un objet apres l'autre et comme j'en ai 350 demain j'y suis encore <acronym class=dict title=...

Posté(e)
; erreur: no function definition: VLAX-ENAME->VLA-OBJECT

Tu es vraiment sous 2008 ??? :casstet:

sinon rajoute en début de lisp

(vl-load-com)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

  • 1 mois après...
Posté(e)

voilà un lisp que j'ai chopé sur le forum:

(defun c:metre (/ ss tot nb n long obj lst lay l_lay)

(vl-load-com)

(if (setq ss (ssget "_X" '((0 . "LWPOLYLINE"))))

(progn

(setq nb (sslength ss)

n 0

tot 0.0)

(princ

(strcat "\n\nLe dessin contient : " (itoa nb) " polylignes")

)

(repeat nb

(setq obj (vlax-ename->vla-object (ssname ss n))

long (vlax-curve-getDistAtParam

obj

(vlax-curve-getEndParam obj)

)

tot (+ tot long)

lay (vla-get-Layer obj)

)

(princ (strcat "\nP"

(itoa (setq n (1+ n)))

" = "

(rtos long)

"\tCalque : "

lay

)

)

(if (setq l_lay (assoc lay lst))

(setq lst (subst (cons lay (+ long (cdr l_lay))) l_lay lst))

(setq lst (cons (cons lay long) lst))

)

)

(mapcar '(lambda (x)

(princ (strcat "\nLongueur totale sur le calque "

(car x)

" : "

(rtos (cdr x))

)

)

)

lst

)

(princ (strcat "\nLongueur totale dans le dessin = " (rtos tot)))

(textscr)

)

(princ "\nLe dessin ne contient pas de polylignes.")

)

(princ)

)

 

 

tu n'as plus qu'a le convertir en .lsp et le charger

tu peux remplacer "metre" de la 1ere ligne par une autre commande que tu rentreras dans

la barre de texte autocad.

il calculera le nombre de polyligne par calque.

 

Defaut: il ne prendra pas en compte les differents diametres.

 

 

Posté(e)

en fait te casse pas la tete tu trouveras surement ton bohneur sur

Accueil du Forum > LISP et Visual LISP > Routines LISP

 

Chapeau a patrick et ses collegues qui ont creer tout ces lisp

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é