Aller au contenu

longueur objet avec autocad


pointpower

Messages recommandés

Bonjour,

 

Je voudrais savoir si il est possible lorsque l'on a beaucoup d'objets de type ligne d'avoir la longueur de l'ensemble de ces objets, ces objets sont sur le même calque, j'arrive à tous les sélectionner en même temps mais je peux pas avoir la longueur totale ( on a une longueur par objet) il y a beaucoup trop d'objets pour que je le fasse un par un ou que j'envisage une polyligne.

 

 

Merci si vous avez une solution même de type macro.

 

À bientôt.

 

Lien vers le commentaire
Partager sur d’autres sites

 

Bonsoir

 

Un peu de recherche dans les forums avec les bons mots clé SVP !

 

Regardes ici:

http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=2683#pid6828

 

Voici une des routines évoquées dans ce fil de discussion:

Réponse No 18 de MNT ...

 

(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)

)

 

Cela devrait te convenir, elle cumule les lignes, arcs, polylignes

pour te donner la longueur totale !

 

Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Re

 

 

j'ai essayé la macro mais ya un souci

 

Sub calculongueur()

(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)

)

 

End Sub

 

 

J'ai un message qui me dit qu'il y a une erreur de compilation.

 

Voilà comment j'ai procéder, Menu outils, macro VBA, macro, créer la macro, j'ai copié collé ton script, j'ai nommé la macro calculongueur. et je l'ai lancé en ayant pris soin avant de sélectionner les objets lignes qui m'intéressaient.

 

En tout cas merci je suis sur la bonne voie.

 

Lien vers le commentaire
Partager sur d’autres sites

visiblement je me suis planté c du lisp et moi j'ai compris cela comme du VBA.

 

C'est pas grave par contre, lequel de tous ces scripts et le bon ? il y en a au moins 4 différents.

 

J'en ai essayé un il se charge correctement mais ensuite rien ne se passe. je dois taper une commande pour l'exécuter? je dois changer un truc dans le prog?

 

J,ai pas tout saisi, dsl la programmation et moi....

 

Stp aide moi à y voir plus clair.

 

À la limite je préfère le VBA c'est un peu plus clair pour moi.

 

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Pour un LISP, après avoir enregistré le code sous le nom que tu veux avec l'extension .lsp, tu le charges dans le dessin (APPLOAD) puis tu tapes à la ligne de commande ce qui est écrit juste après le c: dans (defun c:... )

 

par exemple TL pour le LISP ci dessus (defun C:TL ...)

 

Ou long_line pour celui-ci, qui semble correspondre à ce que tu cherches : total des longueurs de ligne et polylignes sur le calque sélectionné ou spécifié (possibilité d'enregistrer les résultats dans un fichier.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

aprés quand je tape TL AUTOCAD me propose le type de ligne....

 

Normal, TL est l'alias de la commande TYPELIGNE.

 

Le nom d'une commande définie en LISP est ce qui se trouve après le c: dans (defun c:TL ...).

L'auteur de ce LISP, à vue de nez un anglo-saxon, a choisi ce nom parcequ'il est court et que sur une version anglaise TL ne correspond peut-être à aucun alisa prédéfini.

 

Il suffit donc de remplacer TL dans (defun c:TL ...) par ce que tu veux (après avoir vérifié que ça ne correspondait à aucun alias, nom de commande existant ou symbole protégé)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

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é