coxsurf56 Posté(e) le 11 mars 2010 Partager Posté(e) le 11 mars 2010 je debute en lisp2 questions1erje cherche a memoriser un texte (nom d'une piece) dans une variablepour l'utiliser a plusieurs endroit dans le planmais par setq ca ne marche pas2ej'ai par saisi utilisateurdes valeurs dans lglga1a2je voudrais mettre dans lgpr le calcul de lglg-(a1+a2)J'ai ecris ca (setq lgpr (- lglg(+ lga1 lga2)))mais ca marche passi quelqu'un peut m'expliquer comment on fait un calcul de variable Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 12 mars 2010 Partager Posté(e) le 12 mars 2010 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)_.textStyle de texte courant: "Standard" Hauteur de texte: 2.50Spé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 texteCommande:"ceci est du texte" Commande: !varnil 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
coxsurf56 Posté(e) le 15 mars 2010 Auteur Partager Posté(e) le 15 mars 2010 salutmerci pour la reponseje reagis un peu tard , je ne trouvais plus mon posteffectivement j'ai oublié de mette lg devant a1 et a2le calcul est passémerciune autre questionje continue a essayerquand la commande etirer est lancé , il ne me fait bien la fenetre de selection point de base okpar contre pour le 2e point , j'aimerais que ce soit la valeur qui est dans malaet pour l'essai (60)mais ca marche pasqu'est ce qui deconne?le message d'erreur d'autocad"Spécifiez le point de base ou [Déplacement]: 0,0Spécifiez le deuxième point ou : 60.00000000000000Point 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) ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 15 mars 2010 Partager Posté(e) le 15 mars 2010 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 ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
coxsurf56 Posté(e) le 15 mars 2010 Auteur Partager Posté(e) le 15 mars 2010 j'ai modifé mais j'ai une erreur maintenantpour le 2e pointcomment je peux faire que ma valeur reel devienne une partie des coordonnées du 2e point? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 15 mars 2010 Partager Posté(e) le 15 mars 2010 YYPour 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 ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
coxsurf56 Posté(e) le 15 mars 2010 Auteur Partager Posté(e) le 15 mars 2010 ok mercica marche Lien vers le commentaire Partager sur d’autres sites More sharing options...
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