Aller au contenu

tube 3d


philippe62

Messages recommandés

;;version 20 09 2013

;;

;; PHILIPPE B

(defun c:TUBE (/ p1 p2 dia dn rm)

(command "_undo" "_be")

(setq p1 (getpoint "\nPoint de départ du tube :"))

(setq p2 (getpoint p1 "\nPoint d'arrivée du tube :"))

(initget "Autre 10 15 20 25 32 40 50 65 80 100 125 150 200 250 300")

(setq dn (getkword "\n dn [10/15/20/25/32/40/50/65/80/100/125/150/200/250/300]:"))

(cond

((= dn "10") (setq dia 17.2) (setq rm 25)) ((= dn "15") (setq dia 21.3) (setq rm 28)) ((= dn "20") (setq dn 26.9) (setq rm 28.5))

((= dn "25") (setq dia 33.7) (setq rm 38)) ((= dn "32") (setq dia 42.4) (setq rm 47.5)) ((= dn "40") (setq dia 48.3) (setq rm 57))

((= dn "50") (setq dia 60.3) (setq rm 76)) ((= dn "65") (setq dia 76.1) (setq rm 95)) ((= dn "80") (setq dia 88.9) (setq rm 114.5))

((= dn "100") (setq dia 114.3) (setq rm 152)) ((= dn "125") (setq dia 139.7) (setq rm 190)) ((= dn "150") (setq dia 168.3) (setq rm 228))

((= dn "200") (setq dia 219.1) (setq rm 304)) ((= dn "250") (setq dia 273) (setq rm 380 )) ((= dn "300") (setq dia 323.9) (setq rm 456))

 

((= dn "Autre") (setq dn (getdist "\nDiamètre en mm:")))

(t (princ))

)

(command "_CYLINDER"

p1

"_D"

dia

"_C"

p2)

(prin1)

)

 

si quelqu'un peu m'aider à transformer le solide en bloc "TUBE_DN" d'avance merci!!!

 

)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

A tester.

 

;;version 09 12 2013 
;; 
;; PHILIPPE B 
(defun c:TUBE (/ p1 p2 dia dn rm lgt ss1 ss2 tube p2_SCG nle lda)

(setq p1 (getpoint "\nPoint de départ du tube :"))
(setq p2 (getpoint p1 "\nPoint d'arrivée du tube :"))
(initget "Autre 10 15 20 25 32 40 50 65 80 100 125 150 200 250 300") 
(setq dn (getkword "\n dn [10/15/20/25/32/40/50/65/80/100/125/150/200/250/300]:"))
(cond 
((= dn "10") (setq dia 17.2) (setq rm 25)) ((= dn "15") (setq dia 21.3) (setq rm 28)) ((= dn "20") (setq dia 26.9) (setq rm 28.5)) 
((= dn "25") (setq dia 33.7) (setq rm 38)) ((= dn "32") (setq dia 42.4) (setq rm 47.5)) ((= dn "40") (setq dia 48.3) (setq rm 57))
((= dn "50") (setq dia 60.3) (setq rm 76)) ((= dn "65") (setq dia 76.1) (setq rm 95)) ((= dn "80") (setq dia 88.9) (setq rm 114.5))
((= dn "100") (setq dia 114.3) (setq rm 152)) ((= dn "125") (setq dia 139.7) (setq rm 190)) ((= dn "150") (setq dia 168.3) (setq rm 228))
((= dn "200") (setq dia 219.1) (setq rm 304)) ((= dn "250") (setq dia 273) (setq rm 380 )) ((= dn "300") (setq dia 323.9) (setq rm 456))

((= dn "Autre") (setq dn (getdist "\nDiamètre en mm:")))
(t (princ)) 
)

(setq lgt (distance p1 p2)) ;; longueur tube
(setq p2_scg (trans p2 1 0))
(command "_.ucs" "_non" p1  "_non" (trans p2_SCG 0 1 ) "")

(setq nomb (strcat "TUBE_DN" dn))
(if (not (tblsearch "block"  nomb)) ;; recherche bloc dans dessin 

    (progn  ;; le bloc n´existe pas 
      ;;;; creation solide 3 d 
      (setvar "cmdecho" 0) 
      (command "_line" "_non" '(0. 0. 0.) "_non" '(1. 0. 0.) "") 
      (setq ss1 (entlast))
      (command "_circle" '(0. 0. 0.) (* dia 0.5))
      (setq ss2 (entlast))
      (command "_sweep" ss2 "" ss1)
      (setq tube (entlast))

;; suppression de l'axe si:
     (if (or (= 0 (getvar "DELOBJ"))(= 1 (getvar "DELOBJ"))) (entdel SS1))

;; création attributs 
    (setq st (getvar "textstyle")) 
    (setvar "textstyle" "standard")   
    (setq af (getvar "aflags"))            
    (setq ht (* 0.07 dia )) ; hauteur texte 
     
    (setvar "aflags" 9)  ;;; prédéfini et invisible    
    (command "_-attdef" "" "Désignation" "Désignation" (strcat "TUBE DN" dn)  "_non" '(0. 0. 0.)  ht "0")    
    (setq att1 (entlast)) 
    (command "_-attdef" "" "LONG" "Longueur" ""  "_non" (polar '(0. 0. 0.)(* 1.5 pi)(+ 1.3 ht))  ht "0")    
    (setq att2 (entlast))
    (setvar "aflags" af) (setvar "textstyle" st)

;; création bloc 
   (command "_change" att1 att2 tube  "" "_p" "_la" "0" "_c" "DUBLOC" "")
   (command "_-block" nomb "_non" '(0. 0. 0.) att1 att2 tube  "")
  )
)

;;;; insertion bloc
   (command "._-insert" nomb "X" lgt "Y" 1 "Z" 1 "_non" '(0. 0. 0.) "0" ) 
   (setvar "cmdecho" 1)
    
;;;;;;;; modif attribut longueur du tube ;;;;;;;;;;;; 
     
       (setq nle (entlast))  
       (while
    (and
            (/= (cdr (assoc 2 (setq lda (entget (setq nle (entnext nle)))))) "LONG")
     (/= "SEQEND" (cdr (assoc 0 lda)))
    )
       )
       (setq lda (subst (cons 1 (rtos lgt 2 2)) (assoc 1 lda) lda))  ;liste données attribut
       (entmod lda)
       (entupd nle)           ;attribut LONG mise à jour
 
    


(prin1)
)






Modifié par usegomme
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois aprè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 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é