DIROW Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 Bonjour, Quelqu'un connait t-il une commande (covadis ou autocad) permettant de donner d'un coup la longueur cumulée de toutes les polylignes constituants un calque ?Pour moi il s'agit d'un calque représentant le linéaire de bordures A2 sur un projet. Tout ca pour éviter d'additionner chaque longueur... Merci
lesourd2 Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 Salut, Si cela peut t'aider. ;;;================================================================= ;;; ;;; MES.LSP V1.00 ;;; ;;; Mesurer en continu et avec cumul ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================================= (defun c:mes(/ di pt1 pt2) (setq pt1 (getpoint "\nPremier Point : ") di 0.0) (while pt1 (if (setq pt2 (getpoint pt1 "\nPoint suivant : ")) (progn (setq di (+ di (distance pt1 pt2))) (princ (strcat "\nDistance mesurée: " (rtos (distance pt1 pt2)) " -- Distance cumulée : " (rtos di))) ) ) (setq pt1 pt2) ) (princ) ) (setq nom_lisp "MES") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ) (Merci Patrick). @+
didier Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 coucou puisque tu parles de Covadis : utilise la fonction de listing de polylignespar calque par exemple et tu auras ce que tu souhaites. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DIROW Posté(e) le 17 novembre 2010 Auteur Posté(e) le 17 novembre 2010 Merci à tous les deux, je vais me contenter de la commande covadis, je l'ai trouvé dans :covadis2d/listings/listings de polylignes Il y a également la commande Autocad "extractdonnées", mais elle est plus longue que celle de covadis, et il faut faire l'addition globale dans un tableur....
thierry.garré Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 Bonjour William, Il y a aussi la commande : Covadis vrd/metres simplifies et quantitatifs/quantitatif lineaire, Qui va pas mal pour cet usage Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
bryce Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 Bonjour,Il y a également la commande Autocad "extractdonnées", mais elle est plus longue que celle de covadis, et il faut faire l'addition globale dans un tableur... On peut demander à EXTRACTDONNEES de faire la somme des longueurs automatiquement. ;) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
bonuscad Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 Ou encore ceci, plus générique (vl-load-com) (defun c:cumul_measure ( / js n ename d_cumul count k_mod) (or (setq js (ssget "_I")) (setq js (ssget "_P")) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] : ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget))) ) (cond (js (setq d_cumul 0.0 count 0) (initget "Longueur Aire _Length Area") (setq k_mod (getkword "\nMesurer [Longueur/Aire] : ")) (if (not k_mod) (setq k_mod "Length")) (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n))))) (if (eq k_mod "Length") (if (member (vlax-get ename 'ObjectName) '("AcDbEllipse" "AcDbSpline" "AcDbHelix")) (setq d_cumul (+ (vlax-curve-getDistAtParam ename (vlax-curve-getEndParam ename)) d_cumul) count (1+ count)) (foreach typ_measure '("Length" "ArcLength" "Circumference" "Perimeter") (if (vlax-property-available-p ename (read typ_measure)) (setq d_cumul (+ (vlax-get ename (read typ_measure)) d_cumul) count (1+ count)) ) ) ) (if (vlax-property-available-p ename "Area") (setq d_cumul (+ (vlax-get ename 'Area) d_cumul) count (1+ count)) ) ) ) (princ (strcat "\nCumul des " (if (eq k_mod "Area") "Aire" "Longueur") " de " (itoa count) " objet(s) sur " (itoa (sslength js)) " sélectionné(s): " (rtos d_cumul))) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
x_all Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 pompé de (gile) et un poil retouché.... lgl ça somme les lignes ou polyligne sélectionnées et regroupé par calque je préfère isoler les calques et faire les sélection à la main car il y a souvant des bouts de lignes qui traine dans un détail ou simplement la légende ou encore pour sortir des phases... bref balancer un métré de tout un calques brut et sans controle de visu je trouve ça un peu trop sujet à boulette... ;; totalise les longueurs par calque dans une séléction ((defun c:lgl (/ ss tot nb n long obj lst lay l_lay) (vl-load-com) (if (setq ss (ssget (list '(-4 . "")))) (progn (setq nb (sslength ss) n 0 tot 0.0) (princ (strcat "\n\nLa sélection contient : " (itoa nb) " lignes ou 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) ) (setq n (1+ n)) (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) )) quelques trucs sur autocad
(gile) Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 Salut, Ou encore Long_line sur cette page. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
ACAD666 Posté(e) le 17 novembre 2010 Posté(e) le 17 novembre 2010 J'ai un truc super mais un peu bourrin qui donne un listing csv par calque des quantités, surfaces cumulées, longueurs cumulées des objets d'un dessin.Je l'ai posté je ne sais où, je ne sais quand sur cadxp, et je m'étais fait enguirlander (gentiment)parce que j'avais balancé le code brut (sans le papier derrière) et que le code n'était pas rédigé dans les règles de l'art (sur la forme, parce que sinon ça marche super bien).Tant pis, je rebalance le truc tel que: ; DEFINITION FONCTIONS (defun mtrlines () (setq lbeg (cdr (assoc '10 ent))) (setq lend (cdr (assoc '11 ent))) (setq llen (distance lbeg lend)) (setq long (+ long llen)) (ssdel sn ss1)) (defun mtrlarcs () (setq cen (cdr (assoc '10 ent))) (setq rad (cdr (assoc '40 ent))) (setq dia (* rad 2.0)) (setq circ (* (* rad pi) 2.0)) (setq sang (cdr (assoc '50 ent))) (setq eang (cdr (assoc '51 ent))) (if (< eang sang) (setq eang (+ eang (* pi 2.0))) ) (setq tang (- eang sang)) (setq tang2 (* (/ tang pi) 180.0)) (setq circ2 (/ tang2 360.0)) (setq alen (* circ2 circ)) (setq long (+ long alen)) (princ) (ssdel sn ss1)) (defun mtrplines () (command "_area" "e" sn) (setq long (+ long (getvar "perimeter"))) (setq surf (+ surf (getvar "area"))) (ssdel sn ss1)) (defun mtrsplines () (command "_area" "e" sn) (setq long (+ long (getvar "perimeter"))) (setq surf (+ surf (getvar "area"))) (ssdel sn ss1)) (defun mtrcircles () (command "_area" "e" sn) (setq long (+ long (getvar "perimeter"))) (setq surf (+ surf (getvar "area"))) (ssdel sn ss1)) (defun mtrellipses () (command "_area" "e" sn) (setq long (+ long (getvar "perimeter"))) (setq surf (+ surf (getvar "area"))) (ssdel sn ss1)) COMMANDE (DEFUN C:metre (/ long ss1 sn sn2 et) (setq cmdecho (getvar "cmdecho")) (setq file "D:\\metre.csv")(print file)(setvar "cmdecho" 0) (setq ow (open file "w")) (write-line (strcat "CALQUE"";""SURFACE"";""LONGUEUR"";""NOMBRE") ow) (setq layinfo (tblnext "layer" T)) (while(setq layinfo (tblnext "layer")) (setq layname (cdr (assoc '2 layinfo))) (if (setq ss1 (ssget "X" (list (cons 8 layname)))) (progn (setq nobj (sslength ss1)) (setq long 0) (setq surf 0) (while (> (sslength ss1) 0) (setq sn (ssname ss1 0)) (setq ent (entget sn)) (setq et (cdr (assoc '0 ent))) (cond ((= et "LINE") (mtrlines)) ((= et "ARC") (mtrlarcs)) ((= et "LWPOLYLINE") (mtrplines)) ((= et "POLYLINE") (mtrplines)) ((= et "SPLINE") (mtrsplines)) ((= et "CIRCLE") (mtrcircles)) ((= et "ELLIPSE") (mtrellipses)) ((or (/= et "LINE") (/= et "ARC") (/= et "LWPOLYLINE") (/= et "POLYLINE") (/= et "SPLINE") (/= et "CIRCLE") (/= et "ELLIPSE") ) (ssdel sn ss1) ) ) ) (write-line (strcat layname";"(rtos surf 2 2)";"(rtos long 2 2)";"(rtos nobj 2 2)) ow) ) ) ) (close ow) (setvar "cmdecho" cmdecho) (princ)) YO! Et AutoCAD se tourna vers le dessinateur à bout de nerfs, et lui dit:"ERREUR FATALE: Unhandled Access Violation Reading 0x5e43dff0 Exception at 5e43dff0h"Ce à quoi le dessinateur répondit:"Ca tombe bien je vais en profiter pour écouter un peu de rock qui décrasse les esgourdes"http://www.facebook.com/pages/Ex-Voto/206836112741129?sk=wall
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