eric45 Posté(e) le 20 septembre 2010 Posté(e) le 20 septembre 2010 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
lili2006 Posté(e) le 20 septembre 2010 Posté(e) le 20 septembre 2010 Bonjour à toutes et tous, Tu n'as pas trouver de filtre qui te convient depuis la commande "_qselect" ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
eric45 Posté(e) le 20 septembre 2010 Auteur Posté(e) le 20 septembre 2010 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!
lili2006 Posté(e) le 20 septembre 2010 Posté(e) le 20 septembre 2010 Re, Je crois qu'il existe des lisps qui font ce que tu demandes,... TotalPerim en est un exemple,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Gilles1 Posté(e) le 20 septembre 2010 Posté(e) le 20 septembre 2010 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) )
eric45 Posté(e) le 20 septembre 2010 Auteur Posté(e) le 20 septembre 2010 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
lili2006 Posté(e) le 20 septembre 2010 Posté(e) le 20 septembre 2010 Re, Oups ! Grossière erreur de ma part, désolé,je n'avais pas vu le forum, :cool: Pas de lisp en LT,... Peut-être en macro,...Si Christian (rebcao)passe par là,.... :D Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bryce Posté(e) le 20 septembre 2010 Posté(e) le 20 septembre 2010 Bonjour, Je n'ai pas compris si tu souhaites obtenir :1- le cumul des longueurs de tous les objets sélectionnés2- 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: Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
rebcao Posté(e) le 20 septembre 2010 Posté(e) le 20 septembre 2010 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 @)
bryce Posté(e) le 20 septembre 2010 Posté(e) le 20 septembre 2010 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. Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
eric45 Posté(e) le 21 septembre 2010 Auteur Posté(e) le 21 septembre 2010 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
rebcao Posté(e) le 21 septembre 2010 Posté(e) le 21 septembre 2010 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 @)
eric45 Posté(e) le 21 septembre 2010 Auteur Posté(e) le 21 septembre 2010 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
rebcao Posté(e) le 21 septembre 2010 Posté(e) le 21 septembre 2010 Fui... ;) 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 @)
lili2006 Posté(e) le 21 septembre 2010 Posté(e) le 21 septembre 2010 Bonsoir à toutes et tous, Lili2006 et Gille1 vous me COPIEREZ-COLLEREZ 100 fois, il y a pas de LISP dans LT !!!! ;) Je fais ça tous les jours... pas vrai Lili2006 ? Une seconde nature en quelque sorte,... :P Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
riril49 Posté(e) le 11 janvier 2011 Posté(e) le 11 janvier 2011 :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 ?
FormaBois Posté(e) le 18 janvier 2011 Posté(e) le 18 janvier 2011 Salut à tous,c'est bizarre, la macro marche très bien sur une 2010, mais ne fonctionne pas sur une 2011.Avez-vous aussi ce pb ? 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"
bryce Posté(e) le 18 janvier 2011 Posté(e) le 18 janvier 2011 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] Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
FormaBois Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 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 styleVoilà le déroulé des opérations dans la zone de commande, l'erreur est à la 13ème ou 14ème ligne===================Commande: _lengthenSélectionnez un objet ou [DIfférence/Pourcentage/TOtal/DYnamique]:Longueur actuelle: 603.0596Sélectionnez un objet ou [DIfférence/Pourcentage/TOtal/DYnamique]:Commande: textevalEntrez une nouvelle valeur pour TEXTEVAL <1>: 1Commande: -texteStyle de texte courant: "Annotatif" Hauteur de texte: 2.5000 Annotatif: OuiSpé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.06Commande inconnue "06". Appuyez sur F1 pour obtenir de l'aide.Commande: deplacerChoix des objets: d1 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"
bryce Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 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. Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
FormaBois Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 Effectivement tu avais raison, je n'avais pas vérifié.Maintenant ça marche ;) J'ai retiré la commande texteval qui ne sert à rien s'il n'y a pas de LISP dans le texte. La macro que tu donnes ne fonctionne pas chez moi 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"
bryce Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 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;\ Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
FormaBois Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 Désolé, j'avais lu un peu rapidement :P 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"
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