Pirigounet Posté(e) le 20 juillet 2012 Posté(e) le 20 juillet 2012 Bonjour, J'utilise le code suivant (defun C:Sommepoly (/ 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 "La longueur totale est " (rtos tl))) (princ) ) qui me donne très bien la somme des polylignes sélectionnées.Cependant, je voudrais pouvoir également connaitre a minima la longueur de la plus longue, et au mieux, ressortir la longueur de chaque dans un tableau exportable sous excel. Je suis complètement débutant en Lisp, et pas programmeur pour un sou.Merci de votre aide.
lecrabe Posté(e) le 20 juillet 2012 Posté(e) le 20 juillet 2012 Hello Tu n'as besoin de aucune Routine Lisp/VLisp car l'Outil d'Extraction des donnees d'AutoCAD te fera le boulot "nickel chrome" ! Commande : _dataextraction ET tu demanderas a ne traiter QUE les Polylignes par rapport a ta selection ! et tu exporteras sans la doute la propriete de Longueur et peut etre aussi le Nom du Calque ... et le tout arrivera en CSV ou en XLS ou en MDB+ generation eventuelle d'un joli tableau AutoCAD (Quantitatif) lecrabe Autodesk Expert Elite Team
bryce Posté(e) le 20 juillet 2012 Posté(e) le 20 juillet 2012 Bonjour, Tu peux aussi tester ScanDXF, qui fait exactement ce que tu souhaites. :) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Pirigounet Posté(e) le 20 juillet 2012 Auteur Posté(e) le 20 juillet 2012 Woaw! merci lecrabe.réactivité et pertinence. bravo ! Qu'est-ce que j'aurais gagné comme temps à m'y prendre de cette manière... Merci encore
lecrabe Posté(e) le 20 juillet 2012 Posté(e) le 20 juillet 2012 Hello Chaque fois que tu utilises l'Extraction de Donnees, tu m'envoies UN Euro (dans le Forez) !Chaque fois que tu utilises SCANDXF, tu envoies UN Euro a Brice (en Alsace) ! Eh OUI ca coute cher cadxp.com !! SVP ne pas oublier que avec l'Extraction de donnees, tu peux etre dans un DWG vierge et aller chercher les N DWGs de ton projet !!! lecrabe Autodesk Expert Elite Team
Pirigounet Posté(e) le 20 juillet 2012 Auteur Posté(e) le 20 juillet 2012 Super ton utilitaire Bryce.De plus l'export excel est de suite en format nombre. (ce qui n'est pas le cas avec l'export excel à partir de la commande _dataextraction) Merci
Tramber Posté(e) le 20 juillet 2012 Posté(e) le 20 juillet 2012 Super ton utilitaire Bryce.De plus l'export excel est de suite en format nombre. (ce qui n'est pas le cas avec l'export excel à partir de la commande _dataextraction) Hmmm ! C'est sans doute d'avoir fait plus simple. Mauvais point pour Adesk de ne pas avoir pensé à ce petit détail mais c'est la classe pour Bryce ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
lecrabe Posté(e) le 20 juillet 2012 Posté(e) le 20 juillet 2012 Hello Eh OUI, ces "Truffes" d'Autodesk exportent TOUTES les donnees dans Excel au format TEXTE ! D'ou l'utilite de la fonction CNUM d'Excel que je montre lors des formations ...Si vous avez une recette plus rapide, je suis preneur ! D'autre part, je confirme que ScanDXF est SUPER ! D'ailleurs tous les EastMen sont des "Super-Bons" !! lecrabe Autodesk Expert Elite Team
Tramber Posté(e) le 20 juillet 2012 Posté(e) le 20 juillet 2012 CNUMEn somme, puisque nous sommes dans le forum lisp, c'est un peu notre ATOF à nous ! On peut aussi, pour revenir au sujet, pendant la boucle du lisp, stocker le min et le max de la valeur l.(defun C:Sommepoly (/ ss tl n ent itm obj l minim maxim) (setq ss (ssget) tl 0 minim 1e99 maxim 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) minim(min minim l) maxim(max maxim l) n (1- n))) (alert (strcat "La longueur totale est " (rtos tl)"\nLe mini vaut "(rtos minim)"\net le maxi "(rtos maxim))) (princ) ) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
stugeol Posté(e) le 25 juillet 2012 Posté(e) le 25 juillet 2012 bonjour,en ce qui me concerne, quand j'utilise l'extraction de données, j'exporte au format csv.Sous excel j'importe un fichier texte, je selectionne mon fichier csv, avec comme séparateur de colonne "," et séparateur décimal "." et le tour est joué.Cordialement Petit à petit on devient moins petit
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