Aller au contenu

LISP CHOIX gros problème


Messages recommandés

Invité pleche.damien
Posté(e)

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

Posté(e)

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]

Posté(e)


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

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+

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é