pointpower Posté(e) le 19 novembre 2006 Posté(e) le 19 novembre 2006 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.
lecrabe Posté(e) le 19 novembre 2006 Posté(e) le 19 novembre 2006 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 0n (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
pointpower Posté(e) le 19 novembre 2006 Auteur Posté(e) le 19 novembre 2006 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 0n (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.
pointpower Posté(e) le 19 novembre 2006 Auteur Posté(e) le 19 novembre 2006 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
(gile) Posté(e) le 19 novembre 2006 Posté(e) le 19 novembre 2006 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
pascal38 Posté(e) le 13 février 2007 Posté(e) le 13 février 2007 bonjour, petit souci avec la premiere lisp:je l'ai essayé, elle a marché la premiere fois. aprés quand je tape TL AUTOCAD me propose le type de ligne.... what's the problem
(gile) Posté(e) le 13 février 2007 Posté(e) le 13 février 2007 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
pascal38 Posté(e) le 15 février 2007 Posté(e) le 15 février 2007 ok merci, je vais tester la traduction de longueur en mandarin, doit pas y avoir de commandes associées <acronym class=dict title=
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