philippe62 Posté(e) le 17 octobre 2013 Posté(e) le 17 octobre 2013 bonjour j'aurai besoin d'aide pour créer le bloc avec ces attributs et ensuite l'insérermerciETRIER.LSP ;;version 15 09 2013 ;; ;; PHILIPPE B (defun c:ETRIER (/ pdir l1 l2 p1 R dn d1 d2 sv_dm dm poi prix af ht it ETRIER)(command "_undo" "_be") (setq p1 (getpoint "\nPoint de départ de l'etrier :"))(if p1 (setq pdir (getpoint p1 "\n direction de l'étrier <>: "))) (cond ((and p1 pdir) (command "_ucs" "_zaxis" "_none" p1 "_none" pdir) (setq p1 '(0. 0. 0.)) ) ) (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 dn 17.2) (setq l2 27.4) (setq d1 6) (setq poi 0.020) (setq prix 0.82)) ((= dn "15") (setq dn 21.3) (setq l2 29.35) (setq d1 6)) ((= dn "20") (setq dn 26.9) (setq l2 36.55) (setq d1 8)) ((= dn "25") (setq dn 33.7) (setq l2 38.15) (setq d1 8)) ((= dn "32") (setq dn 42.4) (setq l2 46.8) (setq d1 8)) ((= dn "40") (setq dn 48.3) (setq l2 45.85) (setq d1 8)) ((= dn "50") (setq dn 60.3) (setq l2 49.85) (setq d1 8)) ((= dn "65") (setq dn 76.1) (setq l2 61.95) (setq d1 8)) ((= dn "80") (setq dn 88.9) (setq l2 70.55) (setq d1 10)) ((= dn "100") (setq dn 114.3) (setq l2 98.85) (setq d1 10)) ((= dn "125") (setq dn 139.7) (setq l2 104.15) (setq d1 10)) ((= dn "150") (setq dn 168.3) (setq l2 118.85) (setq d1 12)) ((= dn "200") (setq dn 219.1)) ((= dn "250") (setq dn 273)) ((= dn "300") (setq dn 323.9)) ((= dn "Autre") (setq dn (getdist "\nDiamètre en mm:")))(t (princ)) )(setq l1 (+ dn d1))(command "_pline"(list (- (nth 0 p1) (/ l1 2)) (- (nth 1 p1) l2) (nth 2 p1))(list (- (nth 0 p1) (/ l1 2)) (nth 1 p1) (nth 2 p1))"_A""_CE"p1"_A"-180"_LI"(list (+ (nth 0 p1) (/ l1 2)) (- (nth 1 p1) l2) (nth 2 p1))"")(setq ss1 (entlast))(setq R (/ d1 2))(command "_circle" p1 R)(setq ss2 (entlast))(command "_sweep" ss2 "" "_L" ss1) ) j'aimerai pouvoir transformer le solide en un bloc ETRIER avec l'attribut DN correspondant merci pour votre aide 1
usegomme Posté(e) le 20 octobre 2013 Posté(e) le 20 octobre 2013 (modifié) Bonjour, Je t'ai fait la modification, mais testé rapidement. Fait quand même attention à ce que tu recopies, j'ai fait vite et je n'ai pas tout bien nettoyé. ;;version 09 12 2013 ;; ;; PHILIPPE B (defun c:ETRIER (/ pdir l1 l2 p1 R dn d1 d2 sv_dm dm poi prix af ht ETRIER diam_n st) (setq p1 (getpoint "\nPoint de départ de l'etrier :")) (if p1 (setq pdir (getpoint p1 "\n direction de l'étrier <>: "))) (cond ((and p1 pdir) (command "_ucs" "_zaxis" "_none" p1 "_none" pdir) (setq p1 '(0. 0. 0.)) ) ) (initget "Autre 10 15 20 25 32 40 50 65 80 100 125 150 200 250 300") (setq diam_n (setq dn (getkword "\n dn [10/15/20/25/32/40/50/65/80/100/125/150/200/250/300]:"))) (cond ((= dn "10") (setq dn 17.2) (setq l2 27.4) (setq d1 6) (setq poi 0.020) (setq prix 0.82)) ((= dn "15") (setq dn 21.3) (setq l2 29.35) (setq d1 6)) ((= dn "20") (setq dn 26.9) (setq l2 36.55) (setq d1 8)) ((= dn "25") (setq dn 33.7) (setq l2 38.15) (setq d1 8)) ((= dn "32") (setq dn 42.4) (setq l2 46.8) (setq d1 8)) ((= dn "40") (setq dn 48.3) (setq l2 45.85) (setq d1 8)) ((= dn "50") (setq dn 60.3) (setq l2 49.85) (setq d1 8)) ((= dn "65") (setq dn 76.1) (setq l2 61.95) (setq d1 8)) ((= dn "80") (setq dn 88.9) (setq l2 70.55) (setq d1 10)) ((= dn "100") (setq dn 114.3) (setq l2 98.85) (setq d1 10)) ((= dn "125") (setq dn 139.7) (setq l2 104.15) (setq d1 10)) ((= dn "150") (setq dn 168.3) (setq l2 118.85) (setq d1 12)) ((= dn "200") (setq dn 219.1)) ((= dn "250") (setq dn 273)) ((= dn "300") (setq dn 323.9)) ((= dn "Autre") (setq dn (getdist "\nDiamètre en mm:"))) (t (princ)) ) (setq nomb (strcat "ETRIER_DN" diam_n)) (if (tblsearch "block" nomb) ;; recherche bloc dans dessin ;;;; insertion bloc (command "_-insert" nomb "_non" '(0. 0. 0.) "" "" "0" ) (progn ;; le bloc n´existe pas ;;;; creation solide 3 d (setvar "cmdecho" 0) (setq l1 (+ dn d1)) (command "_pline" (list (- (nth 0 p1) (/ l1 2)) (- (nth 1 p1) l2) (nth 2 p1)) (list (- (nth 0 p1) (/ l1 2)) (nth 1 p1) (nth 2 p1)) "_A" "_CE" p1 "_A" -180 "_LI" (list (+ (nth 0 p1) (/ l1 2)) (- (nth 1 p1) l2) (nth 2 p1)) "") (setq ss1 (entlast)) (setq R (/ d1 2)) (command "_circle" p1 R) (setq ss2 (entlast)) (command "_sweep" ss2 "" ss1) (setq etrier (entlast)) ;; création attributs (setq st (getvar "textstyle")) (setvar "textstyle" "standard") (setq af (getvar "aflags")) (setq ht (* 0.07 dn )) ; hauteur texte (setvar "aflags" 9) ;;; prédéfini et invisible (command "_-attdef" "" "Désignation" "Désignation" (strcat "ETRIER DN" diam_n) "_non" '(0. 0. 0.) ht "0") (setq att1 (entlast)) (setvar "aflags" af) (setvar "textstyle" st) ;; création bloc (command "_change" att1 etrier "" "_p" "_la" "0" "_c" "DUBLOC" "") (command "_-block" nomb "_non" '(0. 0. 0.) att1 etrier "") ;;;; insertion bloc (command "_-insert" nomb "_non" '(0. 0. 0.) "" "" "0" ) (setvar "cmdecho" 1) ) ) (prin1) ) Modifié le 9 décembre 2013 par usegomme
philippe62 Posté(e) le 21 octobre 2013 Auteur Posté(e) le 21 octobre 2013 Bonjour usegomme Grand merci!Je vais suivre ton conseil ! Le lisp est un superbe outil et avec des experts comme vous , c est tout simplement magique.Longue vie a cadxp
usegomme Posté(e) le 9 décembre 2013 Posté(e) le 9 décembre 2013 Bonjour J'ai fait une petite modif pour que le bloc soit correctement créé sur le caque 0 et de la couleur DUBLOC. C'est une remarque que m'a fait Philsogood à propos de mon lisp pour la tuyauterie 3D. ;; création bloc (command "_change" att1 etrier "" "_p" "_la" "0" "_c" "DUBLOC" "")
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