usegomme Posté(e) le 23 février 2009 Partager Posté(e) le 23 février 2009 Un petit lisp pour tracé des réductions inox Iso en 3d. Je n'ai pas rentré de norme car la longueur= (D - d ) x 3et j'ai essayé de réduire les petits écarts.La longueur s'affiche à la fin, ça permet de vérifier. Ce lisp n'est pas encore finalisé , mais il fonctionne et à partir d' autocad 2007. ; Réduction Inox Iso en 3D version 1 ; usegomme le 23/02/2009 (defun c:RedIso (/ pd pdir pf pfd h d1 d2 r r2 r3 a) (command "_undo" "_be") (setq pd (getpoint "\nPoint de départ de la reduction :")) (if pd (setq pdir (getpoint pd "\n direction de la réduction <>: "))) (cond ((and pd pdir) (command "_ucs" "_zaxis" "_none" pd "_none" pdir) (setq pd '(0. 0. 0.)) ) ) (if pd (setq d1 (getdist "\nDiamètre de départ de la reduction :"))) (if d1 (setq d2 (getdist "\nDiamètre final de la reduction :"))) (cond (d2 (setq h (* 3 (if (> d1 d2)(- d1 d2) (- d2 d1)))) (if (< 0.7 (- h (fix h)))(setq h (+ (fix h) 1))(setq h (fix h))) (setq pf (list (car pd)(cadr pd) h)) (command "_circle" "_none" pd (setq r (/ d1 2))) (setq b (entlast)) (command "_circle" "_none" pf (setq r2 (/ d2 2))) (setq b2 (entlast)) (initget "Aucun") (setq a (getangle pf "\nSi déport de quel coté?[]:")) (if (= a "Aucun")(setq a nil)) (if a (setq pfd (polar pf a (- r r2)))) (if pfd (command "_move" b2 "" "_none" pf "_none" pfd)) (command "_loft" b b2 "" "") (setq trc (entlast)) (setq epr 2) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EPAISSEUR (setq r (- r epr)) (command "_circle" "_none" pd r) (setq b (entlast)) (setq r3 (- r2 epr)) (if pfd (setq pf pfd)) (command "_circle" "_none" pf r3) (setq b2 (entlast)) ;;; pour conserver par défaut le dernier rayon valable ; (command "_circle" "_none" pf r2) ; (entdel (entlast)) ;;; (command "_loft" b b2 "" "") (command "_subtract" trc "" "_L" "") ) ) (if pdir (command "_ucs" "_p")) (command "_undo" "_e") (princ "Longueur ")(princ h) (princ) ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 24 février 2009 Partager Posté(e) le 24 février 2009 Une image ? :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILOU62 Posté(e) le 7 mars 2009 Partager Posté(e) le 7 mars 2009 Un petit lisp pour tracé des réductions inox Iso en 3d. Je n'ai pas rentré de norme car la longueur= (D - d ) x 3et j'ai essayé de réduire les petits écarts.La longueur s'affiche à la fin, ça permet de vérifier. Ce lisp n'est pas encore finalisé , mais il fonctionne et à partir d' autocad 2007. ; Réduction Inox Iso en 3D version 1 ; usegomme le 23/02/2009 (defun c:RedIso (/ pd pdir pf pfd h d1 d2 r r2 r3 a) (command "_undo" "_be") (setq pd (getpoint "\nPoint de départ de la reduction :")) (if pd (setq pdir (getpoint pd "\n direction de la réduction <>: "))) (cond ((and pd pdir) (command "_ucs" "_zaxis" "_none" pd "_none" pdir) (setq pd '(0. 0. 0.)) ) ) (if pd (setq d1 (getdist "\nDiamètre de départ de la reduction :"))) (if d1 (setq d2 (getdist "\nDiamètre final de la reduction :"))) (cond (d2 (setq h (* 3 (if (> d1 d2)(- d1 d2) (- d2 d1)))) (if (< 0.7 (- h (fix h)))(setq h (+ (fix h) 1))(setq h (fix h))) (setq pf (list (car pd)(cadr pd) h)) (command "_circle" "_none" pd (setq r (/ d1 2))) (setq b (entlast)) (command "_circle" "_none" pf (setq r2 (/ d2 2))) (setq b2 (entlast)) (initget "Aucun") (setq a (getangle pf "\nSi déport de quel coté?[]:")) (if (= a "Aucun")(setq a nil)) (if a (setq pfd (polar pf a (- r r2)))) (if pfd (command "_move" b2 "" "_none" pf "_none" pfd)) (command "_loft" b b2 "" "") (setq trc (entlast)) (setq epr 2) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EPAISSEUR (setq r (- r epr)) (command "_circle" "_none" pd r) (setq b (entlast)) (setq r3 (- r2 epr)) (if pfd (setq pf pfd)) (command "_circle" "_none" pf r3) (setq b2 (entlast)) ;;; pour conserver par défaut le dernier rayon valable ; (command "_circle" "_none" pf r2) ; (entdel (entlast)) ;;; (command "_loft" b b2 "" "") (command "_subtract" trc "" "_L" "") ) ) (if pdir (command "_ucs" "_p")) (command "_undo" "_e") (princ "Longueur ")(princ h) (princ) ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
usegomme Posté(e) le 23 mars 2009 Auteur Partager Posté(e) le 23 mars 2009 Mais qu'est-ce qu'il m'a fait le Philou ! J'ai complété le lisp avec menu diamètre en "DN" . C'est plus pratique. Je n'ai guère testé mais ça semble bien fonctionné. ; Réduction Inox Iso en 3D version 2.3 ; usegomme le 07/04/09 24/04/09 (defun c:RedIso (/ pd pdir pf pfd r1 r2 r3 a h d1 d2 sv_dm dm) (command "_undo" "_be") (setq pd (getpoint "\nPoint de départ de la reduction :")) (if pd (setq pdir (getpoint pd "\n direction de la réduction <>: "))) (cond ((and pd pdir) (command "_ucs" "_zaxis" "_none" pd "_none" pdir) (setq pd '(0. 0. 0.)) ) ) (cond (pd (setq sv_dm (getvar "DYNMODE")) (cond ((< sv_dm 0) (setq dm (* sv_dm -1)) (setvar "DYNMODE" dm)) (t (setq sv_dm nil dm nil)) ) (setq d1 nil d2 nil) (while (or (not d1)(not d2)) (initget "Autre 10 15 20 25 32 40 50 65 80 100 125 150 200 250 300") (setq dn (getkword "\n DN [Autre/10/15/20/25/32/40/50/65/80/100/125/150/200/250/300]:")) (cond ((= dn "10") (setq dn 17.2)) ((= dn "15") (setq dn 21.3)) ((= dn "20") (setq dn 26.9)) ((= dn "25") (setq dn 33.7)) ((= dn "32") (setq dn 42.4)) ((= dn "40") (setq dn 48.3)) ((= dn "50") (setq dn 60.3)) ((= dn "65") (setq dn 76.1)) ((= dn "80") (setq dn 88.9)) ((= dn "100") (setq dn 114.3)) ((= dn "125") (setq dn 139.7)) ((= dn "150") (setq dn 168.3)) ((= dn "200") (setq dn 219.1)) ((= dn "250") (setq dn 273)) ((= dn "300") (setq dn 323.9)) ((= dn "Autre") (setq dn (getdist "\nDiamètre de la reduction en mm:"))) (t (princ)) ) (if d1 (setq d2 dn) (setq d1 dn)) ) (if sv_dm (setvar "DYNMODE" sv_dm)) ) ) (cond (d2 (if (= d1 d2) (setq h d1) (setq h (* 3 (if (> d1 d2)(- d1 d2) (- d2 d1)))) ) (if (< 0.7 (- h (fix h)))(setq h (+ (fix h) 1))(setq h (fix h))) (setq pf (list (car pd)(cadr pd) h)) (command "_circle" "_none" pd (setq r1 (/ d1 2))) (setq b (entlast)) (command "_circle" "_none" pf (setq r2 (/ d2 2))) (setq b2 (entlast)) (initget "Aucun") (setq a (getpoint pf "\nSi excentrique TANGENT de quel coté?[]:")) (if (= a "Aucun")(setq a nil)) (if a (if (and (= 0 (car a))(= 0 (cadr a)))(setq a nil))) (if a (setq a (angle pf a) pfd (polar pf a (- r1 r2)))) (if pfd (command "_move" b2 "" "_none" pf "_none" pfd)) (command "_loft" b b2 "" "") (setq trc (entlast)) (setq epr 2) ;;;;;;;;;;;;;;;;;;;;;;;;;; EPAISSEUR PAR DEFAUT (setq r1 (- r1 epr)) (command "_circle" "_none" pd r1) (setq b (entlast)) (setq r3 (- r2 epr)) (if pfd (setq pf pfd)) (command "_circle" "_none" pf r3) (setq b2 (entlast)) ;;; pour conserver par défaut le dernier rayon valable (command "_circle" "_none" pf r2) (entdel (entlast)) ;;; (command "_loft" b b2 "" "") (command "_subtract" trc "" "_L" "") ) ) (gc) (if pdir (command "_ucs" "_p")) (command "_undo" "_e") (princ "Longueur ")(princ h) (princ) ) [Edité le 7/4/2009 par usegomme] [Edité le 7/5/2009 par usegomme] Lien vers le commentaire Partager sur d’autres sites More sharing options...
usegomme Posté(e) le 7 avril 2009 Auteur Partager Posté(e) le 7 avril 2009 Bonjour , ayant eut des critiques de mon collègue Jean-François , j'ai modifié le lisp , voir post au dessus. Lien vers le commentaire Partager sur d’autres sites More sharing options...
usegomme Posté(e) le 7 avril 2009 Auteur Partager Posté(e) le 7 avril 2009 Pour ceux qui auraient loupé le coche je rappelle qu'il y a aussi bride.lsp de Bonuscad car ce lisp est un peu perdu dans un post . Lien vers le commentaire Partager sur d’autres sites More sharing options...
usegomme Posté(e) le 7 mai 2009 Auteur Partager Posté(e) le 7 mai 2009 Version 2.3 au dessus, même modif que pour redacier. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Titi95 Posté(e) le 16 octobre 2014 Partager Posté(e) le 16 octobre 2014 Coucou, est il possible d'avoir les réductions "rediso" en bloc comme ce qui a été fait avec bride.lsp en bbride ?(très pratique pour le décompte automatique du matériel) un grand merci au passage pour ton partage Mes anciennes réalisations Autocad Lien vers le commentaire Partager sur d’autres sites More sharing options...
usegomme Posté(e) le 16 novembre 2014 Auteur Partager Posté(e) le 16 novembre 2014 (modifié) Salut Titi95 Voilà, tu peux le tester, n'hésite pas pour les améliorations et autres. Je n'ai pas creusé pour l'épaisseur et l'option "autre DN" n'est pas disponible, a voir si c'est utile. ; Réduction Inox Iso en 3D et en bloc ; usegomme ; 09/04/2015 création de bloc ; 29/04/2015 correction orientation ; 30/04/2015 creation "catalogue" reduction ; 20/05/2015 rajout attributs "type" & "DN" (defun c:RedIB (/ pd pdd pdir pf pfd r1 r1i r2 r2i a h d1 d2 sv_dm dm dn1 dn2 ta gdn reduc st tsize af ht it att1 att2) (command "_undo" "_be") (setq pd (getpoint "\nPoint de départ de la reduction :")) (if pd (setq pdir (getpoint pd "\n direction de la réduction <>: "))) (cond ((and pd pdir) (command "_ucs" "_zaxis" "_non" pd "_non" pdir) (setq pd '(0. 0. 0.)) ) ) (cond (pd (setq sv_dm (getvar "DYNMODE")) (cond ((< sv_dm 0) (setq dm (* sv_dm -1)) (setvar "DYNMODE" dm)) (t (setq sv_dm nil dm nil)) ) (setq d1 nil d2 nil) (while (not d1) (initget "Autre 8 10 15 20 25 32 40 50 65 80 100 125 150 200 250 300") (setq dn (getkword "\n DN [Autre/8/10/15/20/25/32/40/50/65/80/100/125/150/200/250/300]:")) (cond ((= dn "8") (setq d1 13.5)) ((= dn "10") (setq d1 17.2)) ((= dn "15") (setq d1 21.3)) ((= dn "20") (setq d1 26.9)) ((= dn "25") (setq d1 33.7)) ((= dn "32") (setq d1 42.4)) ((= dn "40") (setq d1 48.3)) ((= dn "50") (setq d1 60.3)) ((= dn "65") (setq d1 76.1)) ((= dn "80") (setq d1 88.9)) ((= dn "100") (setq d1 114.3)) ((= dn "125") (setq d1 139.7)) ((= dn "150") (setq d1 168.3)) ((= dn "200") (setq d1 219.1)) ((= dn "250") (setq d1 273)) ((= dn "300") (setq d1 323.9)) ((= dn "Autre") (setq d1 (getdist "\nDiamètre de la reduction en mm:"))) (t (princ)) ) ) (setq dn1 dn) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (while (not d2) (cond ((= dn "8") (initget "10 15 20 25") (setq dn (getkword "\n DN [10/15/20/25]:")) (cond ((= dn "10")(setq d2 17.2 h 11 ))((= dn "15")(setq d2 21.3 h 23 )) ((= dn "20")(setq d2 26.9 h 40 ))((= dn "25")(setq d2 33.7 h 60 )) ) ) ((= dn "10") (initget "8 15 20 25 32 40 50") (setq dn (getkword "\n DN [8/15/20/25/32/40/50]:")) (cond ((= dn "8")(setq d2 13.5 h 11 ))((= dn "15")(setq d2 21.3 h 12 )) ((= dn "20")(setq d2 26.9 h 29 ))((= dn "25")(setq d2 33.7 h 49 ))((= dn "32")(setq d2 42.4 h 75 )) ((= dn "40")(setq d2 48.3 h 93 ))((= dn "50") (setq d2 60.3 h 129)) ) ) ((= dn "15") (initget "8 10 20 25 32 40 50") (setq dn (getkword "\n DN [8/10/20/25/32/40/50]:")) (cond ((= dn "8")(setq d2 13.5 h 23 )) ((= dn "10")(setq d2 17.2 h 12 )) ((= dn "20")(setq d2 26.9 h 17 ))((= dn "25")(setq d2 33.7 h 37 ))((= dn "32")(setq d2 42.4 h 63 )) ((= dn "40")(setq d2 48.3 h 81 )) ((= dn "50")(setq d2 60.3 h 117 )) ) ) ((= dn "20") (initget "8 10 15 25 32 40 50 65 80") (setq dn (getkword "\n DN [8/10/15/25/32/40/50/65/80]:")) (cond ((= dn "8")(setq d2 13.5 h 40 ))((= dn "10")(setq d2 17.2 h 29 )) ((= dn "15")(setq d2 21.3 h 17 ))((= dn "25")(setq d2 33.7 h 20 )) ((= dn "32")(setq d2 42.4 h 46 ))((= dn "40")(setq d2 48.3 h 64 )) ((= dn "50")(setq d2 60.3 h 100 ))((= dn "65")(setq d2 76.1 h 149 ))((= dn "80")(setq d2 88.9 h 185 )) ) ) ((= dn "25") (initget "8 10 15 20 32 40 50 65 80") (setq dn (getkword "\n DN [8/10/15/20/32/40/50/65/80]:")) (cond ((= dn "8")(setq d2 13.5 h 60 ))((= dn "10")(setq d2 17.2 h 49 ))((= dn "15")(setq d2 21.3 h 37)) ((= dn "20")(setq d2 26.9 h 20 ))((= dn "32")(setq d2 42.4 h 26 ))((= dn "40")(setq d2 48.3 h 44 )) ((= dn "50")(setq d2 60.3 h 80 ))((= dn "65")(setq d2 76.1 h 127 ))((= dn "80")(setq d2 88.9 h 166 )) ) ) ((= dn "32") (initget "8 10 15 20 25 40 50 65") (setq dn (getkword "\n DN [8/10/15/20/25/40/50/65]:")) (cond ((= dn "8")(setq d2 13.5 h 87 ))((= dn "10")(setq d2 17.2 h 75 ))((= dn "15")(setq d2 21.3 h 63)) ((= dn "20")(setq d2 26.9 h 46 ))((= dn "25")(setq d2 33.7 h 26 ))((= dn "40")(setq d2 48.3 h 18 )) ((= dn "50")(setq d2 60.3 h 54 ))((= dn "65")(setq d2 76.1 h 101)) ) ) ((= dn "40") (initget "10 15 20 25 32 50 65 80") (setq dn (getkword "\n DN [10/15/20/25/32/50/65/80]:")) (cond ((= dn "10")(setq d2 17.2 h 93 ))((= dn "15")(setq d2 21.3 h 81)) ((= dn "20")(setq d2 26.9 h 64 ))((= dn "25")(setq d2 33.7 h 44 ))((= dn "32")(setq d2 42.4 h 18 )) ((= dn "50")(setq d2 60.3 h 36 ))((= dn "65")(setq d2 76.1 h 83 ))((= dn "80")(setq d2 88.9 h 122 )) ((= dn "100")(setq d2 114.3 h 198 )) ) ) ((= dn "50") (initget "10 15 20 25 32 40 65 80 100") (setq dn (getkword "\n DN [10/15/20/25/32/40/65/80/100]:")) (cond ((= dn "10")(setq d2 17.2 h 129))((= dn "15")(setq d2 21.3 h 117))((= dn "20")(setq d2 26.9 h 100)) ((= dn "25")(setq d2 33.7 h 80 ))((= dn "32")(setq d2 42.4 h 54 ))((= dn "40")(setq d2 48.3 h 36 )) ((= dn "65")(setq d2 76.1 h 63 ))((= dn "80")(setq d2 88.9 h 86 ))((= dn "100")(setq d2 114.3 h 162)) ((= dn "150")(setq d2 168.3 h 324)) ) ) ((= dn "65") (initget "20 25 32 40 50 80 100") (setq dn (getkword "\n DN [20/25/32/40/50/80/100]:")) (cond ((= dn "20")(setq d2 26.9 h 149))((= dn "25")(setq d2 33.7 h 127)) ((= dn "32")(setq d2 42.4 h 101))((= dn "40")(setq d2 48.3 h 83 ))((= dn "50")(setq d2 60.3 h 63 )) ((= dn "80")(setq d2 88.9 h 38 ))((= dn "100")(setq d2 114.3 h 115 )) ) ) ((= dn "80") (initget "20 25 32 40 50 65 100 125 150") (setq dn (getkword "\n DN [20/25/32/40/50/65/100/125/150]:")) (cond ((= dn "20")(setq d2 26.9 h 185))((= dn "25")(setq d2 33.7 h 166))((= dn "32")(setq d2 42.4 h 139)) ((= dn "40")(setq d2 48.3 h 122 ))((= dn "50")(setq d2 60.3 h 86 ))((= dn "65")(setq d2 76.1 h 38 )) ((= dn "100")(setq d2 114.3 h 76 ))((= dn "125")(setq d2 139.7 h 152 ))((= dn "150")(setq d2 168.3 h 238 )) ) ) ((= dn "100") (initget "20 25 32 40 50 65 80 125 150 200") (setq dn (getkword "\n DN [20/25/32/40/50/65/80/125/150/200]:")) (cond ((= dn "20")(setq d2 26.9 h 262))((= dn "25")(setq d2 33.7 h 240))((= dn "32")(setq d2 42.4 h 216)) ((= dn "40")(setq d2 48.3 h 198 )) ((= dn "50")(setq d2 60.3 h 162 ))((= dn "65")(setq d2 76.1 h 115 ))((= dn "80")(setq d2 88.9 h 76 )) ((= dn "125")(setq d2 139.7 h 152))((= dn "150")(setq d2 168.3 h 162 ))((= dn "200")(setq d2 219.1 h 315 )) ) ) ((= dn "125") (initget "50 65 80 100 150 200") (setq dn (getkword "\n DN [50/65/80/100/150/200]:")) (cond ((= dn "50")(setq d2 60.3 h 238 ))((= dn "65")(setq d2 76.1 h 191 )) ((= dn "80")(setq d2 88.9 h 152 ))((= dn "100")(setq d2 114.3 h 76 ))((= dn "150")(setq d2 168.3 h 86 )) ((= dn "200")(setq d2 219.1 h 238 )) ) ) ((= dn "150") (initget "50 65 80 100 125 200 250") (setq dn (getkword "\n DN [50/65/80/100/125/200/250]:")) (cond ((= dn "50")(setq d2 60.3 h 324 ))((= dn "65")(setq d2 76.1 h 276 )) ((= dn "80")(setq d2 88.9 h 238 ))((= dn "100")(setq d2 114.3 h 162 ))((= dn "125")(setq d2 139.7 h 86 )) ((= dn "200")(setq d2 219.1 h 152 ))((= dn "250")(setq d2 273 h 314 )) ) ) ((= dn "200") (initget "100 125 150 250 300") (setq dn (getkword "\n DN [100/125/150/250/300]:")) (cond ((= dn "100")(setq d2 114.3 h 315 ))((= dn "125")(setq d2 139.7 h 238 )) ((= dn "150")(setq d2 168.3 h 152 ))((= dn "250")(setq d2 273 h 161 )) ((= dn "300")(setq d2 323.9 h 312 )) ) ) ((= dn "250") (initget "150 200 300") (setq dn (getkword "\n DN [150/200/300]:")) (cond ((= dn "150")(setq d2 168.3 h 314 ))((= dn "200")(setq d2 219.1 h 161 )) ((= dn "300")(setq d2 323.9 h 152 )) ) ) ((= dn "300") (initget "200 250") (setq dn (getkword "\n DN [200/250]:")) (cond ((= dn "200")(setq d2 219.1 h 312 ))((= dn "250")(setq d2 273 h 152 )) ) ) ) ) (setq dn2 dn) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (if sv_dm (setvar "DYNMODE" sv_dm)) ) ) (cond (d2 (if (> d1 d2) (setq gdn dn1 dn dn2) (setq gdn dn2 dn dn1)) ;; pour nom bloc (if (= d1 d2) (setq h nil) (setq h (* 3 (abs (- d1 d2))))) (setq pf (list (car pd)(cadr pd) h)) (setq r1 (/ d1 2) r2 (/ d2 2)) ;;; cercles pour visualisation (command "_circle" "_non" pd r1) (setq b (entlast)) (command "_circle" "_non" pf r2) (setq b2 (entlast)) (if (< d1 d2) (command "_ucs" "_zaxis" "_non" pf "_non" pd)) (initget "Aucun") (if (> d1 d2) (setq ta (getpoint pf "\nSi excentrique TANGENT de quel coté?[<Aucun>]:")) (setq ta (getpoint '(0. 0. 0.) "\nSi excentrique TANGENT de quel coté?[<Aucun>]:")) ) (if (= ta "Aucun")(setq ta nil)) (if ta (if (and (= 0 (car ta))(= 0 (cadr ta)))(setq ta nil))) (if ta (setq a (angle pf ta))(setq a 0.0)) (if (< d1 d2) (command "_ucs" "_p")) ;;; supprime cercles pour visualisation (entdel B) (entdel b2) (if ta (setq nomb (strcat "REDUCT" "_" "EXC" "_" "ISO" "_DN" gdn "x" dn )) (setq nomb (strcat "REDUCT" "_" "CONC" "_" "ISO" "_DN" gdn "x" dn )) ) (if (tblsearch "block" nomb) ;; recherche bloc dans dessin (progn ;;;; insertion bloc (if (< d1 d2) (command "_ucs" "_zaxis" "_non" pf "_non" pd)) (command "_-insert" nomb "_non" '(0. 0. 0.) "" "" (* a (/ 180 pi))) (if (and (< d1 d2) ta)(command "_move" (entlast) "" "_non" '(0. 0. 0.) "_non" (polar '(0. 0. 0.) a (- r1 r2)))) (if (< d1 d2) (command "_ucs" "_p")) ) (progn ;; le bloc n´existe pas ;;;; creation solide 3 d ;; si excentré tangent sur angle 0 (cond ((and ta (< r1 r2)) (setq pdd (polar pd (* 2 pi) (- r1 r2))) (command "_circle" "_non" pdd r1) (setq b (entlast)) (command "_circle" "_non" pf r2) (setq b2 (entlast)) ) ((and ta (> r1 r2)) (setq pfd (polar pf 0 (- r1 r2))) (command "_circle" "_non" pd r1) (setq b (entlast)) (command "_circle" "_non" pfd r2) (setq b2 (entlast)) ) (t (command "_circle" "_non" pd r1) (setq b (entlast)) (command "_circle" "_non" pf r2) (setq b2 (entlast)) ) ) (command "_loft" b b2 "" "") (setq trc (entlast)) (setq epr 2) ;;;;;;;;;;;;;;;;;;;;;;;;;; EPAISSEUR PAR DEFAUT (setq r1i (- r1 epr)) (if (and ta (< r1 r2)) (command "_circle" "_non" pdd r1i) (command "_circle" "_non" pd r1i)) (setq b (entlast)) (setq r2i (- r2 epr)) (if (and ta (> r1 r2)) (command "_circle" "_non" pfd r2i) (command "_circle" "_non" pf r2i)) (setq b2 (entlast)) (command "_loft" b b2 "" "") (command "_subtract" trc "" "_L" "") (setq reduc (entlast)) ;;; change le calque du solide pour création bloc dans calque "0" (setq lent (entget reduc)) (setq lent (subst (cons 8 "0") (assoc 8 lent) lent)) (entmod lent) ;; création attributs (setq st (getvar "textstyle")) (setvar "textstyle" "standard") (setq tsize (getvar "textsize")) (setq af (getvar "aflags")) (setq ht (* 0.07 d1 )) ; hauteur texte (setq it (* 1.3 ht)) ; intervale ligne texte (setvar "aflags" 9) ;;; prédéfini et invisible (command "_-attdef" "" "TYPE" "TYPE" (strcat "REDUCT_" (if ta "EXC" "CONC") "_ISO") "_non" '(0. 0. 0.) ht "0") (setq att1 (entlast)) (command "_-attdef" "" "DN" "DN" (strcat gdn " x " dn) "_non" (polar '(0. 0. 0.) (* 1.5 pi) (+ (* 1 it) (* 0.2 ht))) ht "0") (setq att2 (entlast)) (setvar "aflags" af) (setvar "textsize" tsize ) (setvar "textstyle" st) ;; change calque attributs (command "_change" att1 att2 "" "_p" "_la" "0" "_c" "DUBLOC" "") ;; création bloc (if (< r1 r2) (command "_ucs" "_zaxis" "_non" pf "_non" pd)) (command "_-block" nomb "_non" '(0. 0. 0.) att1 att2 reduc "") (if (< r1 r2) (command "_ucs" "_p")) ;;;; insertion bloc (if (< d1 d2) (command "_ucs" "_zaxis" "_non" pf "_non" pd)) (command "_-insert" nomb "_non" '(0. 0. 0.) "" "" (* a (/ 180 pi))) (if (and (< d1 d2) ta)(command "_move" (entlast) "" "_non" '(0. 0. 0.) "_non" (polar '(0. 0. 0.) a (- r1 r2)))) (if (< d1 d2) (command "_ucs" "_p")) ) ) ) ) (gc) (if pdir (command "_ucs" "_p")) (command "_undo" "_e") (princ "Longueur ")(princ h) (princ) ) Modifié le 8 juin 2015 par usegomme Lien vers le commentaire Partager sur d’autres sites More sharing options...
Titi95 Posté(e) le 17 novembre 2014 Partager Posté(e) le 17 novembre 2014 Salut Usergomme ! Justement ce matin je penssais à toi en plus, enfin de ton lisp, je fantasme pas sur les hommes Grand merci pour ce lisp qui vient parfaitement completer tes autres ! Pour l'épaisseur, ce n'est pas important pour le moment, je ne fais pas souvent de skid ou l'on me demande poids et centre de gravité Mes anciennes réalisations Autocad Lien vers le commentaire Partager sur d’autres sites More sharing options...
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