Aller au contenu

mesure longueur


Messages recommandés

Posté(e)

Bonjour à tous,

 

Je cherche le moyen de mesurer plusieurs traits sur autocad, pas forcément le même calque, le même type de ligne etc... et pas forcément accrochés entre eux. Pour l'instant je le fais en sélectionnant mes traits, et en faisant "liste" ensuite, mais c'est long! Existe t-il un moyen de le faire + rapidement, une simple manip qui me donnerait uniquement la longueur des traits sélectionnés sans se soucier des propriétés?

 

Merci d'avance pour votre aide

Posté(e)

re

 

non, j'y ai pensé aussi, mais j'aimerais justement pouvoir sélectionner les traits à l'écran sans devoir passer par un filtre. Les longueurs que je veux mesurer peuvent être sur plusieurs calques et pas forcément avoir le même style de trait.

 

mais merci quand même!

Posté(e)

Bonjour à tous et à toutes.

 

Il y a celui-ci qui est nickel.

Il fait le cumul des lignes/polylignes selectionnées.

Désolé, mais je ne sais plus qui l'a écrit. :P

 

(defun c:longT(/ di ent n pt1 pt2 sel)

 (vl-load-com)

 (if (ssget '((0 . "LINE,POLYLINE,LWPOLYLINE,ARC,CIRCLE,ELLIPSE,SPLINE,MLINE")))

   (progn

     (setq di 0)

     (vlax-for ent (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))))

   (cond

     ((member (vla-get-objectname ent) '("AcDbLine" "AcDb3dPolyline" "AcDbPolyline"))

       (setq di (+ di (vla-get-length ent)))

     )

     ((eq (vla-get-objectname ent) "AcDbArc")

       (setq di (+ di (vla-get-arclength ent)))

     )

     ((eq (vla-get-objectname ent) "AcDbCircle")

       (setq di (+ di (vla-get-circumference ent)))

     )

     ((member (vla-get-objectname ent) '("AcDbSpline" "AcDbEllipse"))

       (setq di (+ di (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent))))

     )

     ((eq (vla-get-objectname ent) "AcDbMline")

       (setq n 0 pt2 nil)

       (while (nth n (setq lst (vlax-get ent 'Coordinates)))

         (setq pt1 (list (nth n lst)(nth (1+ n) lst)(nth (+ n 2) lst)))

         (and pt2

       (setq di (+ di (distance pt1 pt2)))

         )

         (setq pt2 pt1

           n (+ n 3)

         )

       )

     )

   )

     )

     (if (eq (vla-get-count sel) 1)

       (alert (strcat "La longueur de l'objet est de : " (rtos di)))

       (alert (strcat "La longueur totale des " (itoa (vla-get-count sel)) " objets est de : " (rtos di)))

     )

     (vla-delete sel)

   )

 )

 (princ)

)


Posté(e)

re,

 

Merci pour votre aide, je vais tester ça demain! Je n'ai pas trouvé dans les menus le moyen de lancer une commande lisp, je regarderai dans les autres sujets du forum s'il y a un moyen de le faire avec LT.

 

Merci encore

Posté(e)

Bonjour,

 

Je n'ai pas compris si tu souhaites obtenir :

1- le cumul des longueurs de tous les objets sélectionnés

2- le détail des longueurs de chaque objet.

 

Si c'est le 2, je te suggère la commande MODIFLONG (Modification > Modifier la longueur).

Chaque clic sur un objet t'indiquera sa longueur dans la ligne de commande.

 

Si c'est le 1, sur LT je ne vois pas quelle macro permettrait de faire ça... :casstet:

Posté(e)

Bonsoir,

 

Lili2006 et Gille1 vous me COPIEREZ-COLLEREZ 100 fois, il y a pas de LISP dans LT !!!!

 

Mais il y a le DIESEL pour LT...

 

Voila un exemple de MACRO avec du TEXTE

 

[surligneur]*^C^C_lengthen;\;texteval;1;-texte;auc;@;;;Longueur=$m=$(rtos,$(getvar,perimeter),2,2);deplacer;d;;auc;@;auc;\ [/surligneur]

 

Attention en faisant un COPIER-COLLER de la macro, il ne doit pas y avoir de saut ligne

 

On peut imaginer de remplacer le texte par un bloc avec ATTRIBUT et profiter d'une extraction d'attributs et faire les cumulés dans EXCEL !

 

Je fais ça tous les jours... ;) pas vrai Lili2006 ?

 

Christian

 

 

[Edité le 20/9/2010 par rebcao]

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Hoho, bien vu la variable perimeter...

Je ne savais pas qu'elle permettait de récupérer la dernière longueur mesurée par modiflong ! :o

Même l'aide ne le sait pas d'ailleurs... :exclam:

Enregistre la dernière valeur de périmètre calculée par la commande AIRE ou LISTE.

 

Enregistre également les valeurs de périmètre calculées par la commande LISTEBD.

Posté(e)

Bonjour à tous,

 

Pour répondre à Bryce, je souhaite avoir la longueur totale des traits sélectionnés, l'idéal serait d'avoir une valeur dans la case "longueur" à la place de *VARIE* dans la palette "propriétés".

 

Un grand merci à Christian pour la macro, j'ai même réussi à l'associer à un bouton! Par contre, y aurait-il par hasard un moyen d'avoir une longueur totale ? Par exemple, je sélectionne les traits, j'utilise la macro et j'obtiens la valeur.

 

Merci encore à tous pour votre aide

 

Posté(e)

Bonjour,

 

NON pas aussi simplement par un clic magique.

 

Mais comme je l'expliquait en remplaçant le texte par un BLOC + ATTRIBUT tu peux faire l'extraction des "LONGUEURS" et via EXCEL faire les TOTAUX - SOUS-TOTAUX par calques, etc.

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

re,

 

Récupérer les valeurs dans excel serait interessant, mais alors, comment faire pour remplacer le texte? Je dois modifier la macro que tu m'as fournie?

 

Eric

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

:mad:

 

donc on pourrait faire un cumul de cotes facilement en passant par un macro?

 

En fait moi ca serait cliquer sur plusieurs lignes et obtenir un cumul des longueurs est ce possible et dans ce cas quel serait la macro. Comment s'écrirait elle?

Vous connaissez un endroit qui décrit l'utilisation des macros ? genre aide autocad ou site internet quelconque pour que ce soit précis ?

Posté(e)

La macro fonctionne très bien sur une 2011, je ne pense pas que ton problème vienne de là.

Tu as testé sur un même dessin dans les deux versions ?

 

Il peut y avoir des raisons pour que la macro ne fonctionne pas dans certains dessins : par exemple si le style de texte courant a une hauteur fixée dans le style, il faut modifier la macro (retirer un ; ).

 

 

 

 

[Edité le 18/1/2011 par bryce]

Posté(e)

Salut bryce,

Alors effectivement si je récupère un même dessin là ça marche.

ce qui m'inquiète c'est qu'il s'agit d'un gabarit, et j'aurais bien aimé que ça fonctionne avec ce gabarit.

Dans un premier temps on est bien d'accord que si l'on veut un total des longueurs il faut transformer les lignes en polyligne, on ne fait pas de sélection globale de plusieurs lignes !?

 

Il peut y avoir des raisons pour que la macro ne fonctionne pas dans certains dessins : par exemple si le style de texte courant a une hauteur fixée dans le style, il faut modifier la macro (retirer un ; ).

Alors non pas de hauteur fixée dans le style

Voilà le déroulé des opérations dans la zone de commande, l'erreur est à la 13ème ou 14ème ligne

===================

Commande: _lengthen

Sélectionnez un objet ou [DIfférence/Pourcentage/TOtal/DYnamique]:

Longueur actuelle: 603.0596

Sélectionnez un objet ou [DIfférence/Pourcentage/TOtal/DYnamique]:

Commande: texteval

Entrez une nouvelle valeur pour TEXTEVAL <1>: 1

Commande: -texte

Style de texte courant: "Annotatif" Hauteur de texte: 2.5000 Annotatif: Oui

Spécifiez le point de départ du texte ou [Justifier/Style]: auc

@

Spécifiez l'angle de rotation du texte <0>:

Entrez le texte:

Commande: Longueur=603.06

Commande inconnue "06". Appuyez sur F1 pour obtenir de l'aide.

Commande: deplacer

Choix des objets: d

1 trouvé(s)

Choix des objets:

Spécifiez le point de base ou [Déplacement] : auc

@

Spécifiez le deuxième point ou :

auc

====================

Moi et les macros... dur dur

@+

Studio Gfilm - Agence de communication par l'image

 

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"

Posté(e)

Ton problème vient bien de la hauteur de texte...

 

Dans le déroulé de la macro dans ton dessin, on voit que le style courant est "Annotatif", qu'il demande le point de départ du texte, puis directement l'angle de rotation, et le texte...

 

Normalement, il demande le point de départ, ensuite la hauteur, la rotation et le texte.

S'il ne te demande pas la hauteur, c'est a priori que dans le style de texte il y a une hauteur différente de 0 (mais il y a peut-être une autre explication).

 

Dans ce cas, il suffit de modifier la macro en retirant un ; au bon endroit (avant le texte Longueur=) :

 

*^C^C_lengthen;\;-texte;auc;@;;Longueur=$m=$(rtos,$(getvar,perimeter),2,2);deplacer;d;;auc;@;auc;\

 

J'ai retiré la commande texteval qui ne sert à rien s'il n'y a pas de LISP dans le texte.

Posté(e)

Grrr... :casstet:

La macro dans le message ci-dessus a été adaptée pour fonctionner avec un style de texte dont la hauteur est fixée !

 

Si tu as remis à 0 la hauteur dans ton ton style de texte, il faut utiliser la macro de rebcao, ou bien celle-ci (la même que celle de rebcao, mais sans texteval) :

 

*^C^C_lengthen;\;-texte;auc;@;;;Longueur=$m=$(rtos,$(getvar,perimeter),2,2);deplacer;d;;auc;@;auc;\

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é