Aller au contenu

comment modifier cette routine?


Messages recommandés

Posté(e)

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 y

Etant donner que je suis une brele en lisp futae de temps

je 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

Posté(e)

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

Posté(e)

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;100

par exemple pour des profil en travers avec une echelle 100;50 , 100;100

Posté(e)

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

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é