Aller au contenu

Tracé d'une courbe avec VLisp


SLV

Messages recommandés

Bonjour les experts,

 

Svp j'ai besoin d'un code VLisp permettant de tracer dans Autocad une courbe quelconque à partir de son équation.

 

La petite idée que j'ai c'est qu'il faudra utiliser la commande defun. Seulement, je ne parvient pas l'utiliser pour définir les arguments d'une fonction.

 

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Bonjour les experts,

 

Svp j'ai besoin d'un code VLisp permettant de tracer dans Autocad une courbe quelconque à partir de son équation.

 

La petite idée que j'ai c'est qu'il faudra utiliser la commande defun. Seulement, je ne parvient pas l'utiliser pour définir les arguments d'une fonction.

 

Merci d'avance

 

 

Bonjour,

 

Un lien sur mes essaies en la matière --> http://cadxp.com/topic/34899-courbe-representative-d%e2%80%99une-fonction/page__view__findpost__p__189234

Je m'étais essayé à écrire quelque chose de généraliste à titre d'exercice pour approfondir ma connaissance du langage, en espérant que tu puisses y trouver de l'inspiration..

 

Salutations Bruno

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Un lien sur mes essaies en la matière --> http://cadxp.com/topic/34899-courbe-representative-d%e2%80%99une-fonction/page__view__findpost__p__189234

Je m'étais essayé à écrire quelque chose de généraliste à titre d'exercice pour approfondir ma connaissance du langage, en espérant que tu puisses y trouver de l'inspiration..

 

Salutations Bruno

 

Ok merci j'y jette un coup d'oeil

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Oui Didier, The Swamp est un bon site, par contre dans ce lien il est question de résolution d'équation ce qui n'est pas tout à fait la demande de SLV qui parle de traçage...

 

Svp j'ai besoin d'un code VLisp permettant de tracer dans Autocad une courbe quelconque à partir de son équation.

 

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Rebonjour les gars, voici à peu près l'algo du programme que je cherche.

 

Début

 

Définition de la fonction "y=ax²+b" \\ on doit pouvoir l'appeler à partir de la ligne de commande

Création des variables:

 

"Spécifiez le coefficient a: "

"Spécifiez le coefficient b: "))

"Spécifiez la borne inférieure de l'intervalle x1: "))

"Spécifiez la borne supérieure de l'intervalle x2: "))

"Spécifiez le pas p: "))

 

a (a doit être un réel)

b (b doit être un réel)

x1(x1 doit être un réel)

x2(x2 doit être un réel)

p (p doit être un réel)

 

Tracé de la fonction

Fin

Lien vers le commentaire
Partager sur d’autres sites

Rebonjour les gars, voici à peu près l'algo du programme que je cherche.

 

Début

 

Définition de la fonction "y=ax²+b" \\ on doit pouvoir l'appeler à partir de la ligne de commande

Création des variables:

 

"Spécifiez le coefficient a: "

"Spécifiez le coefficient b: "))

"Spécifiez la borne inférieure de l'intervalle x1: "))

"Spécifiez la borne supérieure de l'intervalle x2: "))

"Spécifiez le pas p: "))

 

a (a doit être un réel)

b (b doit être un réel)

x1(x1 doit être un réel)

x2(x2 doit être un réel)

p (p doit être un réel)

 

Tracé de la fonction

Fin

 

 

 

Bonjour,

 

Pour le principe une adaptation rapide avec les routines données en lien...

 

(defun c:courbe	(/ coefa coefb x1 x2 p)

 (setq	coefa (getreal "\nSpécifiez le coefficient a: ")
coefb (getreal "\nSpécifiez le coefficient b: ")
x1    (getreal "\nSpécifiez la borne inférieure de l'intervalle x1: ")
x2    (getreal "\nSpécifiez la borne supérieure de l'intervalle x2: " )
p     (getreal "\nSpécifiez le pas p: ")
 )

 (command "_pline")

 (foreach pt (setq lpt	(bv:coord x1
			  x2
			  (lambda (x) (+ x p))
			  (lambda (x) (+ (* coefa x x) coefb))
		)
      )

   (command "_none" pt)
 )
 (command "")
 (princ)
)

 

Ne pas oublier de charger précédemment la fonction bv:coord

 

;; VDH-Bruno
;; Génère la liste de points d'une courbe représentative f(x) 
;; définie sur un intervalle [a ; b]
;; Arguments:
;;   a -> Limite inférieur de l'intervalle (un nombre)
;;   b -> Limite supérieur de l'intervalle (un nombre)
;;   e -> Ecart ou pas entre abscisses définie par une fonction
;;   f -> Fonction du type y=f(x)
;; Valeur de retour:
;;   Une liste de coordonnées 2D ->  ((x1 y1)(x2 y2)(x3 y3)...)
;; Exemples:
;;   (bv:coord 2 5 '1+ 'sqrt)
;;       retourne ((2 1.41421) (3 1.73205) (4 2.0) (5 2.23607))

(defun bv:coord (a b e f)
 (if (>= a B)
   (cons (list b ((eval f) B)) nil)
   (cons (list a ((eval f) a)) (bv:coord ((eval e) a) b e f))))

 

A ta charge de sécuriser les saisies (cf: initget pour les saisie null), x1<x2 avec p>0

 

 

Edit: code corrigé suivant cette discussion --> http://cadxp.com/topic/44977-trace-dune-courbe-avec-vlisp/page__view__findpost__p__259559

A+

Modifié par VDH-Bruno

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Merci grandement VHD.

 

Ce que tu as m'a envoyé m'est déja assez utile.

 

Excuse moi de t’embêter encore mais stp j'ai encore 03 soucis (en fait comme tu le constate je suis encore assez nul dans ce langage, mais bon j'apprends) :

 

- est-il possible d'imbriquer la fonction "bv:coord" dans la fonction "courbe"?

 

- Comment fonctionne exactement la fonction "bv:coord"?

 

- A quoi sert la sécurisation des saisies et comment le faire?

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é