ribbit Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 Re, Bon, je suis chaud là, 3 nouveaux sujets dans la matinée !Une question qui me turlupine depuis un moment. Je ne pense que ça doit pas être trop dur mais bon : Comment mesurer plusieurs choses (genre trois polyligne) et que autocad m'affiche la somme de ce que j'ai mesuré à la fin ? En fait, pour l'instant, je note et je somme...ou j'utilise la commande multiple ....bof ! Merci,Ribbit. Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 Et une autre au passage pour la forme, Comment forcer autocad à mesurer en 2D...(autrement que par des cercles bien sur) ? Ribbit. Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
nobless Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 he rebonjour, Si tu connais l'Autolisp il te sera faile de recuperer les longueurs des objets selectionner et de les additionnerSi tu ne connais pas met toi s'yC'est pas facile au debut mais quand on a compris la syntaxe et la construction sa vat tout seul. Ta question est un bon exercice pour debuter N'est pas peur lance toi bon courage
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 je sais je sais, mais c'est imbuvable (pour l'instant)..... Bientôt, je saurais faire des pavés comme dans l'exemple ;-) Ribbit. Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
Tramber Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 Il y a des fonctions de calcul intégérées à Autocad (je n'ai que le LT sous la main donc je ne veux dire aucune bétise). Sous LT, la sous option Addition de la commande AIRE (qui renvoie la longueur de la polyligne aussi, pas des lignes), ne fonctionne maleureusement pas. Aisni, tu peux additionner les aires mais pas les longueurs, dommage, non ? AIRE ou LISTE vont t'aider qd même, tu feras l'addition toi-même.Attention, PERIMETER ne renvoie que depuis AIRE et non LISTE, je crois. Au fait, une polyligne est toujours 2DComment forcer autocad à mesurer en 2D...alors là, FILTRES DE POINTS (que tout bon autocadien doit maitriser). Distance .z 0,0 pause .z 0,0(non vérifié) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 Bonjour à tous Voici un lisp qui donne la longueur sur une ligne, polyligne, arc ou encore sur une spline Il ne reste plus qu'à le modifier pour ses propres besoins, le principe est là.Ce mettre au lisp est le pas le plus dur à franchir, mais une fois que c'est parti, plus rien ne nous arrête sauf l'imagination peut-être (defun c:long(/ deb fin sel) (if (setq sel (entsel)) (progn (vl-load-com) (setq sel (entget (car sel))) (setq sel (vlax-ename->vla-object (cdr (assoc -1 sel)))) (setq deb (vlax-curve-getStartParam sel)) (setq fin (vlax-curve-getEndParam sel)) (princ (strcat "\nLa longueur est de : " (rtos (vlax-curve-getDistAtParam sel fin)))) ) ) (princ) ) (princ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 Je voulais pas vous embêter à faire du lisp. c'était surtout si une commande mystérieuse existait ou une option qui m'aurait échappée... en général, je me débrouille. En tout cas, merci, je garde le lisp pour mon apprentissage futur. Avec un peu de persévérance, je vais piger ce script et faire ce que je voulais. Je reste quand même convaincu que le lisp c'est du charabia.... et puis j'aime bien le VB.... Mais bon je vais me motiver un de ces soirs à bûcher mon lisp....J'ai déjà essayé mais c'est pire que du yaourt :-) Merci,Ribbit. Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 alors là, FILTRES DE POINTS (que tout bon autocadien doit maitriser). ah oui, c'est vrai, ça m'étais sorti de la tête ! Je vais y trouvé oune belle bonne soluzion... Ribbit. :P Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
Patrick_35 Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 Salut Ribbit,Ca ne m'embête pas plus que ça, d'autant que je l'avais dans mes tablettesPour le lisp, courage, mais je te comprends, je suis comme toi, j'ai envie de me lancer dans le vba, mais pour l'instant, ce n'est qu'une envie, ce qui me rebute, c'est les orientations objets. J'aime bien tout maîtriser @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 Voilà : Syntaxe du bouton (oui, je sais, encore un bouton, mais c'est du bricolage facile) :^C^Cdi;.z 0,0 \.z 0,0 \ Voilà,Ribbit. Ps : pour le VB, j'ai envie de te dire c'est facile, mais bon, je suppose qu'on se regarde de chaque côté du fleuve sans oser traverser ;-) Pour ma part, j'ai l'impression de pas savoir ce que je manipule avec le lisp, tellement j'ai l'habitude de traiter avec des objets... Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
Tramber Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 Super Ribbit, je suis fier de toi ;) Essaies-voir :'di ....bla bla, (avec l'apostrophe) Ca donne une commande transparente, en principe. Le ^C^C n'est pas obligatoire, c'est un annuleur de commandes en cour. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 OKI ca marche. Y'a bon macro ! :P Ribbit. Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
Patrick_35 Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 J'ai l'impression que c'est exactement ça, il ne reste plus qu'à construire le pont ;) Au fait, bravo pour le bouton @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 Je vous propose 2 alternatives en lispla 1ere cumule des polylignes suivant leur type de ligne. (defun mkfilt (typ / bdd lstflt) (setq bdd '(8 6 0)) (if (assoc 210 typ) (if (not (equal (assoc 210 typ) '(210 0.0 0.0 1.0))) (progn (initget "Oui Non") (if (eq (getkword (strcat "\nRécupérer les entités " (cdr (assoc 0 typ)) " non construites dans le SCG [Oui/Non]: " ) ) "Oui" ) (setq bdd (cons -4 (append (list (cons -4 "*") '(210 0.0 0.0 1.0)) bdd) ) ) (setq bdd (cons -4 (append (list (cons -4 "=") '(210 0.0 0.0 1.0)) bdd) ) ) ) ) ) ) (setq bddtyp bdd) (repeat (length bdd) (cond ((assoc (car bdd) typ) (setq lstflt (cons (assoc (car bdd) typ) lstflt)) ) ((= (car bdd) -4) (setq lstflt (cons (cadr bdd) (cons (caddr bdd) lstflt))) (setq bdd (cddr bdd)) ) ) (setq bdd (cdr bdd)) ) (print lstflt) (initget "Toutes Sélectionnées") (cond ((eq (getkword "\nMode de récupération des polylignes [Toutes/Sélectionnées] :? ") "Sélectionnées") (ssget lstflt) ) (T (ssget "X" lstflt) ) ) ) (defun c:METREPL ( / sav_dim sav_lup typent typ_l js cmpt nbr ent) (setvar "CMDECHO" 0) (setq sav_dim (getvar "DIMZIN")) (setq sav_lup (getvar "LUPREC")) (setvar "DIMZIN" 0) (if (not precision) (progn (initget 4) (setq precision (getint (strcat "\nEntrer la précision désiré <" (itoa (getvar "LUPREC")) ">: " ) ) ) ) ) (if (not precision) (setq precision (getvar "LUPREC"))) (setvar "LUPREC" precision) (if (not unite) (progn (initget "KM M CM MM") (setq unite (getkword "\nEntre l'unité utilisé [KM/M/CM/MM] : ")) ) ) (if (not unite) (setq unite "M")) (while (null (setq typent (entsel "\nChoix du type d'entité : ")))) (setq typent (entget (car typent)) js (ssadd) typ_l (if (assoc 6 typent) (cdr (assoc 6 typent)) "ByLayer")) (cond ((= (cdr (assoc 0 typent)) "LWPOLYLINE") (setq js (mkfilt typent)) ) ((= (cdr (assoc 0 typent)) "POLYLINE") (setq js (mkfilt typent)) ) (T (prompt "\nLa commande ne traite que les POLYLIGNES simples ou optimisées.") (setq js nil)) ) (cond (js (setq cmpt 0 nbr 0) (print (sslength js)) (prompt (strcat " Entité(s) " (cdr (assoc 0 typent)) " trouvé(s).\n")) (repeat (sslength js) (setq ent (ssname js nbr)) (command "_.area" "_object" ent) (setq cmpt (+ (getvar "perimeter") cmpt)) (setq nbr (1+ nbr)) (if (< nbr 32767) (setq nbr (1+ nbr)) (setq nbr (+ 1.0 nbr)) ) ) (print cmpt) (princ (strcat unite " de Polyligne avec type de ligne " typ_l)) ) (t (prompt "\nSélection vide ou non valide..!")) ) (setq *error* olderr) (setvar "DIMZIN" sav_dim) (setvar "LUPREC" sav_lup) (princ) ) La 2eme permet d'obtenir une distance curviligne d'un morceau de ligne arc polyligne et spline (defun c:lg_curv ( / sv_osm ent typ_ent pt_brk nw_ent abs_cur ordon_y dxf_ent dxf_10 dxf_11 dxf_50 dxf_51) (setvar "cmdecho" 0) (setq sv_osm (getvar "osmode") nw_ent nil) (setq ent (entsel "\nChoix de l'objet: ")) (while ent (setq typ_ent (cdr (assoc 0 (entget (car ent))))) (cond ((or (eq typ_ent "LWPOLYLINE") (eq typ_ent "SPLINE") (and (eq typ_ent "POLYLINE") (<= (rem (cdr (assoc 70 (entget (car ent)))) 128) 13)) (eq typ_ent "ARC") (eq typ_ent "LINE")) (redraw (car ent) 3) (setvar "osmode" 2048) (while (setq pt_brk (getpoint "\nChoix du point pour définir l'abscise curviligne ")) (setvar "osmode" 0) (cond (pt_brk (command "_.undo" "_mark") (if (or (eq typ_ent "ARC") (eq typ_ent "LINE")) (progn (redraw (car ent) 4) (command "_.lengthen" ent "_dynamic" ent pt_brk "") (setq dxf_ent (entget (car ent)) dxf_10 (cdr (assoc 10 dxf_ent)) ordon_y (caddr pt_brk) nw_ent ent ) (redraw (car nw_ent) 3) (if (eq typ_ent "ARC") (progn (setq dxf_40 (cdr (assoc 40 dxf_ent)) dxf_50 (cdr (assoc 50 dxf_ent)) dxf_51 (cdr (assoc 51 dxf_ent)) ) (if (< dxf_51 dxf_50) (setq dxf_51 (+ (* 2.0 pi) dxf_51))) (setq abs_cur (* pi (* dxf_40 2.0) (/ (rem (- dxf_51 dxf_50) pi) (* pi 2.0)))) ) (progn (setq dxf_11 (cdr (assoc 11 dxf_ent)) abs_cur (distance (list (car dxf_10) (cadr dxf_10)) (list (car dxf_11) (cadr dxf_11))) ) ) ) (princ (strcat "\nAbscise curviligne du point = " (rtos abs_cur 2 3) " Z du point = " (rtos ordon_y 2 3))) (grread) ) (progn (command "_.break" ent "_first" pt_brk pt_brk) (redraw (car ent) 4) (while (not (setq nw_ent (entsel "\nChoix de la partie de l'objet à mesurer ")))) (setq typ_ent (cdr (assoc 0 (entget (car nw_ent))))) (cond ((or (eq typ_ent "LWPOLYLINE") (eq typ_ent "SPLINE") (eq typ_ent "POLYLINE")) (redraw (car nw_ent) 3) (command "_.area" "_entity" nw_ent) (setq abs_cur (getvar "perimeter") ordon_y (caddr pt_brk)) (princ (strcat "\nAbscise curviligne du point = " (rtos abs_cur 2 3) " Z du point = " (rtos ordon_y 2 3))) (grread) ) (T (redraw (car nw_ent) 3) (princ "\n** Sélection invalide! **") ) ) ) ) (command "_.undo" "_back") ) ) (setvar "osmode" 2048) (if nw_ent (redraw (car nw_ent) 4)) (redraw (car ent) 3) ) ) (T (princ "\nL'objet n'est pas un arc, une ligne, une polyligne ou une spline. ") ) ) (if ent (redraw (car ent) 4)) (if nw_ent (redraw (car nw_ent) 4)) (setq ent (entsel "\nChoix de l'objet: ") nw_ent nil) ) (setvar "osmode" sv_osm) (setvar "cmdecho" 1) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 Facile, on m'a soufflé....victoire à CADXP !!! Promis, je lispe un truc bientôt, même un truc bidon (promesse personnelle) Ribbit. PS : bonuscad, comment ca marche en fait ? Pardonne mon inculture, Maitre lisp, mais c'est quoi une abscisse curviligne (lg_curv) ? Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
bonuscad Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 Cher ribbit, ce ne sont point des carottes pour un lapin ;) Comment ça marche?Tu fais un copier-coller du listing vers le bloc-note.Tu sauvegarde sous un nom (généralement le même nom que spécifié à la suite de "defun C:") avec une extension LSP.Le chargement s'effectue* soit par appload (menu outil "chargement application...") * soit par un glisser déposer depuis l'explorateur* soit la vieille méthode (load c:\......\....\application.lsp") Par abscisse curviligne j'entends le mot courbe. La distance curviligne est donc la distance développée par une courbe, différente de la distance entre 2 points que peut retourner la commande DISTANCE. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 Hello encore, Croc croc..... Comment ça marche?Tu fais un copier-coller du listing vers le bloc-note.Tu sauvegarde sous un nom (généralement le même nom que spécifié à la suite de "defun C:") avec une extension LSP.Le chargement s'effectue* soit par appload (menu outil "chargement application...") * soit par un glisser déposer depuis l'explorateur* soit la vieille méthode (load c:\......\....\application.lsp") Ca je sais bien mais comment on l'exploite ? Pourquoi demander un point ? Je dois etre trop fatigué :-( Désolé, j'espère que je ne suis pas trop exigeant.... Par abscisse curviligne j'entends le mot courbe. La distance curviligne est donc la distance développée par une courbe, différente de la distance entre 2 points que peut retourner la commande DISTANCE. en gros, une distance périmétrique ? Je suis pas sûr de comprendre trop l'utilité de ce script en fait.... Ribbit Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
ribbit Posté(e) le 15 juin 2004 Auteur Posté(e) le 15 juin 2004 Ca y est j'ai pigé...c'est la distance entre l'origine de l'arc et la projection sur l'arc d'un point (celui que l'on clique). non ? Mais ca fait pas avancer mon schmilblick...C'est intéressant tout de même (et une belle platée de lisp). Je suis sûr que ça peut servir...Tu as du courage en tout cas ! Bonne journée,Ribbit. Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
MNT Posté(e) le 15 juin 2004 Posté(e) le 15 juin 2004 Salut ribbitencore du lisp cumul longueur : (defun C:TL (/ 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 "Total length of selected objects is " (rtos tl))) (princ)) cumul surfaces (defun c:stot ( / gr tot cont) (setvar "cmdecho" 0) (prompt "\nChoisir les polylignes ....") (setq gr (ssget)) (setq tot 0 cont 0) (repeat (sslength gr) (command "_area" "_o" (ssname gr cont)) (setq tot (+ tot (getvar "area"))) (setq cont (+ 1 cont)) ) (princ "\nSurface totale: ") (princ tot) (princ)) @+ Le Hamac est une science exacte qui ne tolère pas l'amateurisme.
ribbit Posté(e) le 16 juin 2004 Auteur Posté(e) le 16 juin 2004 Hello, You are the best ! Je vous remercie de tout ça en tout cas, mais je voudrais pas que l'on crois que je vous demande tout ça pour vous faire développer à la demande. c'est principalement pour connaître mieux autocad et pour ceux qui cherche des trucs à développer pour le plaisir. En tout cas, ça me servira par la suite pour faire moi-même des scripts en lisp. Hier soir, je suis resté jusqu'à point d'heure pour piger le fonctionnement bizzarroïde du lisp...ça vient ça vient... Ribbit. Ribbit."Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."Version en cours : Autocad Map 2013
Krynn Posté(e) le 20 octobre 2004 Posté(e) le 20 octobre 2004 Salut ribbitencore du lisp Ca c'est bien. meme si j'en ai pas besoin maintant, je le garde sous la main
Oli553 Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 Je vous propose 2 alternatives en lispla 1ere cumule des polylignes suivant leur type de ligne. Euh, c bizzard, ca me met : Commande: mkfilt; erreur: nombre d'arguments insuffisants Pourquoi? Je suis sous 2005 et 2006(démo) L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
Oli553 Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 en fait que l 2006 en démo, la 2005 est finie.Apparemment, i faut corriger la 1ere ligne:(defun C:MESURE (/ typ bdd lstflt) mais aprés la selection, il me met:Commande: mesure nilMode de récupération des polylignes [Toutes/Sélectionnées] :? s Choix des objets: Spécifiez le coin opposé: 5 trouvé(s) Choix des objets:[surligneur] Selection set: 9d [/surligneur] :casstet: [Edité le 31/8/2005 par Oli553] L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
Oli553 Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 bon benh, euh, je me demande si y' pas un petit probleme avec la 2006. Comme si ils avaient remplacé des définitions de commande :casstet: La selection "Toutes" ne marche pas non plus Help me (cf Leloo in le 5e Elements) ( Bon d'acord, je vais me coucher :P :)) [Edité le 31/8/2005 par Oli553] L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
bonuscad Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 Salut Oli553 Je vais essayer de regarder cela sous une 2005 (par contre pour une 2006, je pourrais pas car aucune licence dans mon BE) Je l'ai écrite sous une 2002, j'ai peut être utilisé involontairement un nom de variable qui serait réservée sous une 2005? Enfin je regarde ça au plus vite et te tiens au courant Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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