CadFrank Posté(e) le 26 octobre 2012 Posté(e) le 26 octobre 2012 Bonjour a tous, Me voila encore coincer avec un petit problem. Je ne sait pas pourquoi cela se passe. Mais aussitot que mon code arrive au fillet il arret de fonctionné et m'indique Lines belonging to polylines must be consecutive or separated by one segment Et voici mon code : ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ CE PROGRAM EST CONÇU POUR DESSINER ¦¦¦; ;¦¦¦ UNE BOITE AUTOUR D'UN MTEXT ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ AUTEUR : CadFrank, Copyright ® 2012 ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les calques ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun NouveauCalque(/ lay) (foreach lay '("-LU POUTRE") (if (not (tblsearch "LAYER" lay)) (progn (command "_layer" "_n" "-LU POUTRE" "_C" "96" "-LU POUTRE" "" "") ) );if );foreach ); fin NouveauCalque ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les ¦¦¦; ;¦¦¦ parametres initial ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Parametreinitial () (setq retour (list (cons "osmode" (getvar 'osmode)) (cons "clayer" (getvar 'clayer)) (cons "filletrad" (getvar 'filletrad)) ) ) (setvar 'OSMODE 0) retour ; la dernière expression est retournée par la fonction ); fin parametreinitial ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program remet les ¦¦¦; ;¦¦¦ parametres initial ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Parametrefin (retour) (foreach p retour (setvar (car p) (cdr p)) ) );fin parametrefin ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini une Polyligne ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun _Poly (po1 po2 po3 po4 po5 po6 po7 po8 po9 po10 po11 po12 po13 w) (entmakex (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 14) '(70 . 1) '(8 . "-LU POUTRE") (cons 10 po1) (cons 10 po2) (cons 10 po3) (cons 10 po4) (cons 10 po5) (cons 10 po6) (cons 10 po7) (cons 10 po8) (cons 10 po9) (cons 10 po10) (cons 10 po11) (cons 10 po12) (cons 10 po13) (cons 43 w) ) ) ) (defun c:pt (/ rep nom O L H EA ES k k1 R1 R2 os ent1 Frad init pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12) (if (= H nil)(setq H 533)) (if (= L nil)(setq L 209)) (if (= EA nil)(setq EA 10.2)) (if (= ES nil)(setq ES 15.6)) (if (= k nil)(setq k 34)) (if (= k1 nil)(setq k1 22)) (if (= nom nil)(setq nom "W530 x 92")) (initget 1 "O N") (setq rep(getkword"\n voulez vous changer les paramètres [O/N] : ")) (if(= rep "O") (progn (setq nom (getstring T "\nDonnez le nom du profilé : ")) (setq H (getreal "\nDonnez la hauteur du profilé [d] : ")) (setq L (getreal "\nDonnez la largeur du profilé [b] : ")) (setq EA (getreal "\nDonnez l'épaisseur de l'âme [w] : ")) (setq ES (getreal "\nDonnez l'épaisseur de la semelle [t] : ")) (setq k (getreal "\nDonnez la distance du [k] : ")) (setq k1 (getreal "\nDonnez la distance du [k1] : ")) );progn );if end (setq O (getpoint "\nPointez le point d'origine : ")) (setq pt1 (polar O pi (/ L 2))) (setq pt2 (polar pt1 (/ pi 2)ES)) (setq pt3 (polar pt2 0 (/(- L EA) 2))) (setq pt4 (list (car pt3)(+ (cadr O) (- H ES)))) (setq pt5 (list (car pt1)(cadr pt4))) (setq pt6 (list (car pt1) (+ (cadr pt5) ES))) (setq pt7 (polar pt6 0 L)) (setq pt8 (list(car pt7) (cadr pt5))) (setq pt9 (list(+ (car pt4) EA) (cadr pt8))) (setq pt10 (list (car pt9) (cadr pt3))) (setq pt11 (list (car pt8) (cadr pt10))) (setq pt12 (list (car pt11) (cadr pt1))) (setq R1 (* ES 0.4)) (setq R2 (/ (+ (- k ES) (- k1 (/ EA 2))) 2)) (NouveauCalque) (setq init (Parametreinitial)) (_Poly O pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 0) (setq Frad (getvar 'filletrad)) (command "_.fillet" pt1 pt2 "") (setvar 'filletrad R1) (command "_.fillet" pt2 pt3 "") (setvar 'filletrad R2) (command "_.fillet" pt3 pt4 "" "_.fillet" pt4 pt5 "") (setvar 'filletrad R1) (command "_.fillet" pt5 pt6 "") (setvar 'filletrad Frad) (command "_.fillet" pt6 pt7 "") (command "_.fillet" pt7 pt8 "") (setvar 'filletrad R1) (command "_.fillet" pt8 pt9 "") (setvar 'filletrad R2) (command "_.fillet" pt9 pt10 "") (command "_.fillet" pt10 pt11 "") (setvar 'filletrad R1) (command "_.fillet" pt11 pt12 "") (setq ent1(entlast)) (command "block" nom O ent1 O "") (command "insert" nom O "" "1" "" 0 "") (parametrefin init) (princ) );defun c: Quelqu'un pourrait-il m'expliquer se que je fais de pas correct Merci !
alala Posté(e) le 30 octobre 2012 Posté(e) le 30 octobre 2012 la selection sur le point de création de la polyligne doit prendre le segment précédent à chaque fois.Tente de remplacer : (command "_.fillet" pt1 pt2 "") Par un truc du genre : (command "_.fillet" (list (/ (+ (car pt1) (car pt2))2) (/ (+ (cadr pt1) (cadr pt2))2)) (list (/ (+ (car pt2) (car pt3))2) (/ (+ (cadr pt2) (cadr pt3))2)) "") et ainsi de suite dans le code. Tu peu aussi tenter tracer des lignes dont tu récupérera le nom avec un entlast.Il ne te restera plus qu'a faire des raccord entre les entités par leur nom. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
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