Invité pleche.damien Posté(e) le 6 août 2011 Posté(e) le 6 août 2011 Bonjour, je veux créer un lisp ou j'ai la possiblilité de choisir mon bloc (ici j'ai le choix entre un IPE ou STANDARD),mais mon lisp ne me demande pas ma variable longPH pourtant je pense avoir bien écrit cette ligne (setq longPH (getdist "\n hauteur h du fût")) quand je lance ma routine mon lisp passe directement à la variable "longPB" CI JOINT MON LISP que vous pouvez tester il sufit de créer les deux blocs... (defun c:ipe2 () (setq pt01 (getpoint "\n point d'insertion fondation pt01")) (setq pt02 (getpoint "\n point d'insertion fondation pt02")) (setq pt03 (getpoint "\n point d'insertion fondation pt03")) (setq pt08 (getpoint "\n point d'insertion fondation pt08")) (setq angl (getangle "\n donner l'orientation de la fondation")) (initget 1 "IPE STANDARD") ;commande boucle, (setq choix (strcase(getkword "\nchoix IPE : [iPE, STANDARD]"))) ; menu déroulant (cond (( = choix "IPE") (command "inserer" "platine_élévation" ptac12 1 1 0)(command "inserer" "platine_dessus" ptac14 1 1 0)) (( = choix "STANDARD") ( [surligneur] (setq longPH (getdist "\n hauteur h du fût")) (setq longPB (getdist "\n largeur b du fût"))[/surligneur] (setq longipe (distance pt03 pt08)) (setq ptac12 (polar pt08 (/ 0)(/ longipe 2))) (setq pt04 (polar ptac12 (/ 0) (/ longPB 2))) (setq pt07 (polar ptac12 (/ pi) (/ longPB 2))) (setq pt05 (polar pt04 (+ angl (/ pi 2)) longPH)) (setq pt06 (polar pt05 (+ angl (/ pi)) longPb)) (setq pt07 (polar pt06 (- angl (/ pi 2)) longPH)) (command "polylign" pt04 pt05 "") ; trace la polyligne pt04 pt05 (command "polylign" pt05 pt06 "") ; trace la polyligne pt05 pt06 (command "dimlinear" pt05 pt06 (polar pt05 (+ (angle pt06 pt05) (/ PI 2)) 20)) (command "polylign" pt06 pt07 "") ; trace la polyligne pt06 pt07 (command "dimlinear" pt06 pt07 (polar pt06 (+ (angle pt07 pt06) (/ PI 2)) 20)) ) ) ) ) ALORS la je ne voi pas ou se trouve l' ERREUR je sais simplement que quand je tape CTRL + F9 il me surligne l'ensemble de ma routine...??? et dans la consol il me mette l'érreur suivante : ERREUR: type d'argument incorrect : numberp: nil MERCI POUR VOTRE AIDE
usegomme Posté(e) le 6 août 2011 Posté(e) le 6 août 2011 Salut Damien Je n'ai pas testé ton lisp, mais j'ai vu 4 divisions qui ne sont pas correctes, tu as oublier des arguments. (/ 0) (/ pi) Tu veux probalement juste indiquer l'angle 0 ou pi, dans ce cas il suffit de supprimer les deux parenthèses et le signe diviser.(setq ptac12 (polar pt08 (/ 0)(/ longipe 2)))devient(setq ptac12 (polar pt08 0 (/ longipe 2))) Bon courage. [Edité le 6/8/2011 par usegomme]
Carboleum Posté(e) le 7 août 2011 Posté(e) le 7 août 2011 (defun c:ipe2 () (setq pt01 (getpoint "\n point d'insertion fondation pt01")) (setq pt02 (getpoint "\n point d'insertion fondation pt02")) (setq pt03 (getpoint "\n point d'insertion fondation pt03")) (setq pt08 (getpoint "\n point d'insertion fondation pt08")) (setq angl (getangle "\n donner l'orientation de la fondation")) (initget 1 "IPE STANDARD") ;commande boucle, (setq choix (strcase(getkword "\nchoix IPE : [iPE, STANDARD]"))) ; menu déroulant (cond (( = choix "IPE") (command "inserer" "platine_élévation" ptac12 1 1 0)(command "inserer" "platine_dessus" ptac14 1 1 0)) (( = choix "STANDARD") ( ici, tu as un parenthèse ouvrante en trop [Edité le 7/8/2011 par Carboleum] Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
Invité pleche.damien Posté(e) le 7 août 2011 Posté(e) le 7 août 2011 MERCI pour votre aide (pas facil quand on a la tête dans le guidon), j'ai utilisé la méthode radical, j'ai tout recommencé... Mon programme refonctionne. A+
Carboleum Posté(e) le 7 août 2011 Posté(e) le 7 août 2011 j'ai utilisé la méthode radical, j'ai tout recommencé... Bien souvent, c'est la meilleure méthode, et ca donne généralement un code beaucoup propre.Beau réflexe! Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
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