dilack Posté(e) le 19 février 2006 Posté(e) le 19 février 2006 salut à tous en ce dimanche pluvieux en gironde :mad: Voila je voudrais modifier cete routine "pente" réaliser par bonuscad pour pouvoir travailler dans ds profils en travers avex des echelles différente en x et yEtant donner que je suis une brele en lisp futae de tempsje me tourne vers des experts (defun errlsp (ch)(cond((eq ch "Function cancelled") nil)((eq ch "quit / exit abort") nil)((eq ch "console break") nil)(T (princ ch)))(setvar "cmdecho" v1)(setvar "orthomode" v2)(setvar "osmode" v3)(setvar "blipmode" v4)(setvar "snapang" v5)(setq *error* olderr)(princ))(defun C: PENTE ( / v1 v2 v3 v4 v5 d_pc flag p_o p_f dlt_x d olderr)(setq v1 (getvar "cmdecho")v2 (getvar "orthomode")v3 (getvar "osmode")v4 (getvar "blipmode")v5 (getvar "snapang"))(setvar "cmdecho" 0)(setvar "orthomode" 0)(setvar "blipmode" 0)(setq olderr *error* *error* errlsp)(initget 1)(setq d_pc (getreal "\nEntrer la valeur de la pente (rampe) en % ?: "))(initget 8)(setq p_o (getpoint "\nPoint de départ : "))(if (eq p_o ()) (setq p_o (getvar "lastpoint")))(initget "Dans Avec _In With")(if (eq (getkword "\nPente [Dans/Avec] le plan XY : ") "With")(setq flag T)(progn(setvar "snapang" (atan (/ d_pc 100.0)))(setvar "orthomode" 1)(setq flag nil)))(initget 41)(setq p_f (getpoint p_o "\nPoint final : "))(setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384)))(if flag(progn(setq dlt_x (sqrt (+ (* (- (car p_o) (car p_f)) (- (car p_o) (car p_f))) (* (- (cadr p_o) (cadr p_f)) (- (cadr p_o) (cadr p_f))))))(setq d (* dlt_x (/ (sin (atan (/ d_pc 100.0))) (cos (atan (/ d_pc 100.0))))))(setq p_f (list (car p_f) (cadr p_f) (+ (caddr p_o) d)))(command "_.line" p_o p_f "") )(progn(setq dlt_x (- (car p_f) (car p_o)))(setq d (/ dlt_x (cos (atan (/ d_pc 100.0)))))(command "_.line" p_o (polar p_o (atan (/ d_pc 100.0)) d) "")))(setvar "cmdecho" v1)(setvar "orthomode" v2)(setvar "osmode" v3)(setvar "blipmode" v4)(setvar "snapang" v5)(setq *error* olderr)(prin1)) Merci d'avance pour vos réponse
bonuscad Posté(e) le 20 février 2006 Posté(e) le 20 février 2006 Essayes de rajouter ceci après la ligne : (setq d_pc (getreal "\nEntrer la valeur de la pente (rampe) en % ?: ")) (initget 8) (setq echll (getpoint "\nEchelle du profil en long X,Y <1000,100>: ")) (if (eq echll ()) (setq echll '(1000 100))) (setq d_pc (* d_pc (/ (car echll) (cadr echll)))) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dilack Posté(e) le 20 février 2006 Auteur Posté(e) le 20 février 2006 merci pour ta réponse bonuscad.ta modif marche.mais est-il possisble de faire en sorte d'avoir le choix entre plusieurs echelle diferrentes de 1000;100par exemple pour des profil en travers avec une echelle 100;50 , 100;100
bonuscad Posté(e) le 20 février 2006 Posté(e) le 20 février 2006 Tu mets ce que tu veux, la valeur par défaut est 1000,100 en cas d'entrée utilisateur nulle. Je me suis servi de (getpoint) pour l'indroctution de l'échelle. Il faut éviter de cliquer un point à l'écran mais de fournir la valeur au clavier comme ci c'était un point (x,y) Donc 100,50 (virgule et pas point-virgule) 250,100 sont des entrées valides ! NB: tu peux fixer une autre valeur par défaut, ou même la rendre fixe si c'est toujours la même (cela fera une saisie en moins) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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