nicolas2 Posté(e) le 23 mars 2009 Posté(e) le 23 mars 2009 Bonjour à tous.J'ai une petite routine pour représenter une ligne de soudure. (defun c:soudure() (setq pt1 (getpoint "\n pt de départ : ")) On lance la commande en demandant le point de départ. (setq l (getreal "\nlongueur du segment droit: ")) (setq l1 (/ l 4)) le segment à 45° est égale au 1/4 du segment droit (setq pt2 (polar pt1 (* pi 1.75) l1)) trace à 45° (setq pt3 (polar pt2 (* pi 2) l)) trace à 90° (setq pt4 (polar pt3 (* pi 1.75) l1)) trace à 45° (command "_line" pt1 pt2 "") trace la ligne de la variable pt1 à pt2 (command "_line" pt2 pt3 "") trace la ligne de la variable pt2 à pt3 (command "_line" pt3 pt4 "") trace la ligne de la variable pt3 à pt4 (princ) fin ) Pour l'instant je copie/colle mon segment pour le dupliquer et je le coupe pour qu'il prenne la dimension voulue.Je ne maîtrise pas assez pour l'automatiser en vue de l'utiliser comme ceci.http://img256.imageshack.us/img256/6188/lignedesoudure.jpgL'espace entre segments est égale au 1/5 de la longueur demandée.Dans le cas 1,2 ou 3 (différence de Lg.) , les 2 extrémités sont ajustées (peu importante la distance entre le point de départ et le point d'arrivée, sur le même plan les soudures sont à la même échelle). Merci pour votre aide
(gile) Posté(e) le 23 mars 2009 Posté(e) le 23 mars 2009 Salut, Si j'ai bien compris, c'est un petit exercice sur les intervalles. Après avoir acquis de l'utilisateur la longueur du segment droit (l0) et les points de départ et de fin (p1 et p2), on fait quelques calculs :- distance totale p1 p2 (dist)- angle p1 p2 (ang)- longueur des segments à 45° (l45)- longueur d'un espace (esp)- le nombre entier de fois qu'on peut mettre une logueur de segment + un espace dans la distance totale (nb)- la longueur des segments droits aux extrémités (extr) soit : ((dist - nb( l0 + esp)) + l0) / 2 On dessine ensuite la première extrémité d'une longueur égale à extr avec son segment à 45°.Puis on redéfini p1 à chaque opération en le déplaçant sur la ligne (d'un segment ou d'un espace).On dessine nb - 1 fois un segment intermédiaire, puis le dernier segment. (defun c:soudure (/ l0 p1 p2 dist ang l45 esp nb extr) (initget 7) (setq l0 (getdist "\nlongueur du segment droit: ")) (initget 1) (setq p1 (getpoint "\nPoint de départ: ")) (initget 1) (setq p2 (getpoint p1 "\nSecond point: ")) (setq dist (distance p1 p2) ang (angle p1 p2) l45 (/ l0 4.0) esp (/ l0 5.0) nb (fix (/ dist (+ l0 esp))) extr (/ (+ (- dist (* nb (+ l0 esp))) l0) 2.0) ) (command "_.pline" "_non" p1 "_non" (setq p1 (polar p1 ang extr)) "_non" (polar p1 (+ ang (* pi 0.25)) l45) "" ) (setq p1 (polar p1 ang esp)) (repeat (1- nb) (command "_.pline" "_non" (polar p1 (+ ang (* 1.25 pi)) l45) "_non" p1 "_non" (setq p1 (polar p1 ang l0)) "_non" (polar p1 (+ ang (* pi 0.25)) l45) "" ) (setq p1 (polar p1 ang esp)) ) (command "_.pline" "_non" (polar p1 (+ ang (* 1.25 pi)) l45) "_non" p1 "_non" p2 "" ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
nicolas2 Posté(e) le 23 mars 2009 Auteur Posté(e) le 23 mars 2009 Bravo et Merci Gile, le résultat est là, il faut maintenant que je prenne le temps de décortiquer ta routine pour la comprendre entièrement. :D Encore Merci et à bientôt.
nicolas2 Posté(e) le 26 mai 2009 Auteur Posté(e) le 26 mai 2009 Bonjour à tous. Peut-on, une fois la ligne tracée, modifier la "longueur du segment droit" ?Pour l'instant, si le résultat ne convient pas, j'efface et retrace. La droite n'étant pas un bloc complet, mais des segments mis les uns après les autres, cela devient moins simple. Merci pour votre aide.
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