Aller au contenu

Créer une pente, identifier une pente


bonuscad

Messages recommandés

Je vous présente déjà tout mes voeux pour 2005.

 

Récemment il y avait eu une discussion sur les pentes en pourcentage.

J'ai donc amélioré des routines que j'avais déjà réalisé pour que celle-ci puissent fonctionner DANS le plan XY et AVEC le plan XY.

 

En voici le résultat:

(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)
)

Et la deuxième:

(defun C:ID-PENTE ( / blp pt_o pt_f e_last dxf_o dev dev_z)
(setvar "cmdecho" 0)
(setq blp (getvar "blipmode"))
(setvar "blipmode" 0)
(initget 8)
(setq pt_o (getpoint "\nSpécifiez le point de départ: "))
(if (null pt_o) (setq pt_o (getvar "lastpoint")))
(cond
	(pt_o
		(initget 41)
		(setq pt_f (getpoint pt_o "\nChoix du point final: "))
		(cond
			(pt_f
				(command "_.ray" pt_o pt_f "")
				(setq
					e_last (entlast)
					dxf_o (trans (cdr (assoc 11 (entget e_last))) 0 1 T)
				)
				(if (zerop (car dxf_o))
					(setq dev "infini")
					(setq dev (rtos (* (/ (cadr dxf_o) (car dxf_o)) 100.0) 2 4))
				)
				(if (= (caddr dxf_o) 1.0)
					(setq dev_z "infini")
					(if (zerop (caddr dxf_o))
						(setq dev_z (rtos 0.0 2 4))
						(setq dev_z (rtos (* (sqrt (/ 1.0 (- (/ 1.0 (* (caddr dxf_o) (caddr dxf_o))) 1.0))) 100.0) 2 4))
					)
				)
				(entdel e_last)
				(prompt (strcat "\nPente dans le plan XY = " dev " % - Pente avec le plan XY = " dev_z " %"))
				(alert (strcat "Pente dans le plan XY = " dev " % - Pente avec le plan XY = " dev_z " %"))
			)
		)
	)
)
(setvar "blipmode" blp)
(setvar "cmdecho" 1)
(prin1)
)

 

Bruno V.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

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é