Aller au contenu

Modification lisp pour réduction tuy


tito

Messages recommandés

Bonjour,

 

Je suis nouveau dans le monde du lisp et j'en ai trouvé un bien pratique.

 

C'est le lisp de Usegomme et j'aurai aimé le modifier pour que le rendu des pièces soient coniques. Si une âme charitable pouvait me modifier le lisp ci-dessous ou du moins m'expliquer, je le remercie d'avance!

 

Aussi, je profite d'une dernière chose. N'ayant pas trouvé la réponse en cherchant sur le forum mais y aurait-il un lisp pour les pièces en T? Si non, est-il possible d'en faire un avec un lisp?

 

Merci d'avoir pris le temps de me lire! Excellente journée...

 

; Réduction ACIER en 3D version 2.2
; usegomme  le 01/04/2009 - 24/04/09

(defun trcc3d (cb1 rb1 cb2 rb2 eptrc / b b2 trc rb1i rb2i)  
 (setq rb1i (- rb1 eptrc) rb2i (- rb2 eptrc))
 (command "_circle" "_none" cb1 rb1i)
 (setq b (entlast))
 (command "_circle" "_none" cb2 rb2i)
 (setq b2 (entlast))
 (command "_loft" b b2 "" "")
 (setq trc (entlast))
 (command "_circle" "_none" cb1  rb1)
 (setq b (entlast))
 (command "_circle" "_none" cb2  rb2)
 (setq b2 (entlast))
 (command "_loft" b b2 "" "")
 (command "_subtract" "_L" "" trc "" )
)
(defun c:RedAcier (/ pd pdir pf pfd r1 r2 r3 a  h d1 d2 e pm rm part1 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 (not d1)
       (initget "20 25 32 40 50 65 80 100 125 150")
       (setq dn (getkword "\n DN [20/25/32/40/50/65/80/100/125/150]:"))
       (cond 
         ((= 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))                
         (t (princ))
       )
     )
     
     (while (not d2)
       (cond 
         ((= dn "20")
           (initget "25 32 40")
           (setq dn (getkword "\n DN [25/32/40]:"))
           (cond
             ((= dn "25")(setq d2 33.7 h 51 e 2.3))((= dn "32")(setq d2 42.4 h 51 e 2.3))((= dn "40")(setq d2 48.3 h 64 e 2.6))
           )
         )
         ((= dn "25")
           (initget "20 32 40 50")
           (setq dn (getkword "\n DN [20/32/40/50]:"))
           (cond
             ((= dn "20")(setq d2 26.9 h 51 e 2.6))((= dn "32")(setq d2 42.4 h 51 e 2.6))((= dn "40")(setq d2 48.3 h 64 e 2.6))
             ((= dn "50")(setq d2 60.3 h 76 e 2.9))
           )
         )
         ((= dn "32")
           (initget "20 25 40 50 65")
           (setq dn (getkword "\n DN [20/25/40/50/65]:"))
           (cond
             ((= dn "20")(setq d2 26.9 h 51 e 2.6))((= dn "25")(setq d2 33.7 h 51 e 2.6))((= dn "40")(setq d2 48.3 h 64 e 2.6))
             ((= dn "50")(setq d2 60.3 h 76 e 2.9))((= dn "65")(setq d2 76.1 h 89 e 2.9))
           )
         )
         ((= dn "40")
           (initget "20 25 32 50 65 80")
           (setq dn (getkword "\n DN [20/25/32/50/65/80]:"))
           (cond
             ((= dn "20")(setq d2 26.9 h 64 e 2.6))((= dn "25")(setq d2 33.7 h 64 e 2.6))((= dn "32")(setq d2 42.4 h 64 e 2.6))
             ((= dn "50")(setq d2 60.3 h 76 e 2.9))((= dn "65")(setq d2 76.1 h 89 e 2.9))((= dn "80")(setq d2 88.9 h 89 e 3.2))
           )
         )
         ((= dn "50")
           (initget "25 32 40 65 80 100")
           (setq dn (getkword "\n DN [25/32/40/65/80/100]:"))
           (cond
             ((= dn "25")(setq d2 33.7 h 76 e 2.9))((= dn "32")(setq d2 42.4 h 76 e 2.9))((= dn "40")(setq d2 48.3 h 76 e 2.9))
             ((= dn "65")(setq d2 76.1 h 89 e 2.9))((= dn "80")(setq d2 88.9 h 89 e 3.2))((= dn "100")(setq d2 114.3 h 102 e 3.6))
           )
         )
         ((= dn "65")
           (initget "32 40 50 80 100")
           (setq dn (getkword "\n DN [32/40/50/80/100]:"))
           (cond
             ((= dn "32")(setq d2 42.4 h 89 e 2.9))((= dn "40")(setq d2 48.3 h 89 e 2.9))((= dn "50")(setq d2 60.3 h 89 e 2.9))
             ((= dn "80")(setq d2 88.9 h 89 e 3.2))((= dn "100")(setq d2 114.3 h 102 e 3.6))
           )
         )
         ((= dn "80")
           (initget "40 50 65 100 125 150")
           (setq dn (getkword "\n DN [40/50/65/100/125/150]:"))
           (cond
             ((= dn "40")(setq d2 48.3 h 89 e 3.2))((= dn "50")(setq d2 60.3 h 89 e 3.2))((= dn "65")(setq d2 76.1 h 89 e 3.2))
             ((= dn "100")(setq d2 114.3 h 102 e 3.6))((= dn "125")(setq d2 139.7 h 127 e 4))((= dn "150")(setq d2 168.3 h 140 e 4.5))
           )
         )
         ((= dn "100")
           (initget "50 65 80 125 150")
           (setq dn (getkword "\n DN [50/65/80/125/150]:"))
           (cond
             ((= dn "50")(setq d2 60.3 h 102 e 3.6))((= dn "65")(setq d2 76.1 h 102 e 3.6))((= dn "80")(setq d2 88.9 h 102 e 3.6))
             ((= dn "125")(setq d2 139.7 h 127 e 4))((= dn "150")(setq d2 168.3 h 140 e 4.5))
           )
         )
         ((= dn "125")
           (initget "80 100 150")
           (setq dn (getkword "\n DN [80/100/150]:"))
           (cond
             ((= dn "80")(setq d2 88.9 h 127 e 4))((= dn "100")(setq d2 114.3 h 127 e 4))((= dn "150")(setq d2 168.3 h 140 e 4.5))
           )
         )
         ((= dn "150")
           (initget "80 100 125")
           (setq dn (getkword "\n DN [80/100/125]:"))
           (cond
             ((= dn "80")(setq d2 88.9 h 140 e 4.5))((= dn "100")(setq d2 114.3 h 140 e 4.5))((= dn "125")(setq d2 139.7 h 140 e 4.5))
           )
         )
       )
     )
      (if sv_dm (setvar "DYNMODE" sv_dm))
   )
 )
 (cond
   (d2 
     (setq hc (/ (* (sin (* pi (/ 75 180.0))) (abs (/ (- d1 d2)2))) (cos (* pi (/ 75 180.0)))))
     (setq hd (- h hc))   
     (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é?[<Aucun>]:"))
     (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) pf (polar pf a (- r1 r2))))
     (entdel B)(entdel b2)
     (if (> r1 r2)
       (setq pm (list (car pd)(cadr pd) hd) rm r1)
       (setq pm (list (car pf)(cadr pf) hc) rm r2)
     )
     (trcc3d pd r1 pm rm e)
     (setq part1 (entlast))
     (trcc3d pm rm pf r2 e)
     
     (command "_.union" part1 (entlast) "")
   )
 ) (gc)
 (if pdir  (command "_ucs" "_p"))
 (command "_undo" "_e")
 (princ "Longueur ")(princ h)
 (princ)
)



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é