Aller au contenu

Réduction Iso Inox roulé soudé pour 3 D


usegomme

Messages recommandés

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 3

et 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

  • 2 semaines après...
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 3

et 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

  • 3 semaines après...

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

  • 2 semaines après...
  • 5 semaines après...
  • 5 ans après...
  • 1 mois après...

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é par usegomme
Lien vers le commentaire
Partager sur d’autres sites

Salut Usergomme !

 

Justement ce matin je penssais à toi en plus, enfin de ton lisp, je fantasme pas sur les hommes tongue.gif

 

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é

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité