Aller au contenu

Messages recommandés

Posté(e)

je debute en lisp

2 questions

1er

je cherche a memoriser un texte (nom d'une piece) dans une variable

pour l'utiliser a plusieurs endroit dans le plan

mais par setq ca ne marche pas

2e

j'ai par saisi utilisateur

des valeurs dans

lglg

a1

a2

je voudrais mettre dans lgpr le calcul de lglg-(a1+a2)

J'ai ecris ca

(setq lgpr (- lglg(+ lga1 lga2)))

mais ca marche pas

si quelqu'un peut m'expliquer comment on fait un calcul de variable

 

 

 

Posté(e)

Salut

 

Difficile de répondre en ne voyant que ce que tu montres (d'autant plus qu'il y a quelque confusion dans les noms de variables (a1, a2 ou lga1, lga2 ?).

 

1) La portée d'une variable (durée de son accessibilité) dépend de la manière dont elle est déclarée. Une variable locale (déclarée dans la liste (arguments / variables) du defun) n'est utilisable que pendant l'exécution de la routine.

Si la variable n'est pas déclarée, elle est dite globale et restera accessible après la fin de l'exécution de la routine jusqu'à la fermeture du dessin.

En raison du risque évident de conflit entre variables de même nom, on n'utilise les variables globales qu'avec précaution (choix du symbole) et dans certaines circonstances particulières.

 

Exemple, on affecte à la variable locale var une chaîne de caractère et on l'utilise pour afficher le texte dans une boite d'alerte, créer un objet texte et afficher le texte sur la ligne de commande. Après l'exécution de la routine la variable est redevenue nil.

 

(defun test (/ var)
 (setq var "ceci est du texte")
 (alert var)
 (command "_.text" pause "" "" var)
 (print var)
 (princ)
)

 

Commande: (test)

_.text

Style de texte courant: "Standard" Hauteur de texte: 2.50

Spécifiez le point de départ du texte ou [Justifier/Style]:

Spécifiez la hauteur :

Spécifiez l'angle de rotation du texte :

Entrez le texte: ceci est du texte

Commande:

"ceci est du texte"

 

Commande: !var

nil

 

2) Si ce sont bien des nombres (entiers ou réels) qui sont affectés aux variables lglg, a1 et a2, l'expression :

(setq lgpr (- lglg (+ a1 a2))) devrait affecter à lgpr le résultat de : lglg - (a1 + a2)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

salut

merci pour la reponse

je reagis un peu tard , je ne trouvais plus mon post

effectivement j'ai oublié de mette lg devant a1 et a2

le calcul est passé

merci

une autre question

je continue a essayer

quand la commande etirer est lancé , il ne me fait bien la fenetre de selection

point de base ok

par contre pour le 2e point , j'aimerais que ce soit la valeur qui est dans malaet pour l'essai (60)

mais ca marche pas

qu'est ce qui deconne?

le message d'erreur d'autocad

"Spécifiez le point de base ou [Déplacement]: 0,0

Spécifiez le deuxième point ou :

60.00000000000000

Point incorrect.

; erreur: Fonction annulée

"

(defun c:massif()
(setq malg(getreal "\nlongueur massif : "))
(setq mala(getreal "\nlargeur massif : "))
 	(setq mapt(getpoint "\npoint de depart : "))
	(setq malget(/ (- malg 80) 2))
 	(setq malaet(/ (- mala 80) 2))
 	(command "scu" mapt "")
 	(command "inserer" "m80x80" "0,0" "1" "1" "0")
 	(command "decompos" "0,0")
	(command "etirer" "ca" "50,14" "-50,52" "" "0,0" malaet)
 	(command "etirer" "ca" "50,-45" "-80,16" "" "0,0" malaet)
 	(princ)
 	) 

Posté(e)

Pour l'instant, malaet est un réel, pas un point :cool:

 

 (/ (- malg 80) 2.0)

vaut mieux que

 (/ (- malg 80) 2)

 

Ne jamais diviser par un entier même si malg est un réel, tel que tu le demandes à l'utilisateur !

Mais imagine qu'un jour tu mettes GETINT au lieu de GETREAL ! :P

 

(/ 5 2) donne 2, ce qui est facheux. :casstet:

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Y

Y

Pour avoir un point tu fais (list X Y) ou (list malaet Y) ou que sais-je... (je n'ai pas lu ton code à fond).

 

Tout bête.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é