Clément.a Posté(e) le 23 janvier 2013 Posté(e) le 23 janvier 2013 Bonjour à tous, J'ai un problème assez bizzard avec plusieur routine.Voila j'ai creer une nouvelle barre d'outils ou chaque bouton appel une routine LISP et la boite de dialogue DCL qui va avec. Jusque là rien de plus normal. Or quand j'utilise un bouton (le bouton 1), la boite de dialogue s'ouvre, mais quand je clique sur OK un message d'erreur intervient!! Ce message d'erreur c'est moi qui l'ai créer mais dans une autre routine affecté un autre bouton (le bouton 2) avec une autre boite de dialogue! Ce message d'erreur (pour la routine du bouton 2) consiste à nous avertir qu'on à pas coché un critère dans la boite de dialogue.Or avec la routine du bouton 1 ce critère n'existe pas; conclusion : il doit y avoir une interférance entre le la routine du bouton 1 et la routine du bouton 2! Comment faire ?? J'ai bien une idée du pourquoi, j'ai appelé des variables avec le même nom et des "defun" interne au routine aussi!J'aiemrai avoir vos avis avant de tout changer pour pas faire qqch pour rien et aussi parce que il y en à beaucoup (j'ai une dixaine de bouton). Merci de vos réponse!
Patrick_35 Posté(e) le 23 janvier 2013 Posté(e) le 23 janvier 2013 Salut Je pense que tu dois avoir des sous-routines, des variables déclarées en global et non en local Pour avoir des routines/variables en local, il faut respecter ce principe (defun c:ma_routine_principale(/ var10 var11 une_sous_routine1 une_sous_routine2 une_sous_routine3) (defun une_sous_routine1(var1 / var2 var3) .. ) (defun une_sous_routine2(/ var1 var2) .. ) (defun une_sous_routine2(/ encore_une) (defun encore_une() ) ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
alala Posté(e) le 23 janvier 2013 Posté(e) le 23 janvier 2013 Tu définit des fonctions avec des noms.Si tu définit plusieur fois la même fonction la nouvelle definition écrase la précédente.Donc ici au chargement de tes Lisp tu aura comme fonction exécutable la derniére qui se charge (ou que tu charge). Pense à faire des fonctions avec des noms différents, et à bien déclarer tes variables pour qu'elle ne puissent pas être réutilisés dans une autre fonction. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
Patrick_35 Posté(e) le 23 janvier 2013 Posté(e) le 23 janvier 2013 Tu définit des fonctions avec des noms.Si tu définit plusieur fois la même fonction la nouvelle definition écrase la précédente.Donc ici au chargement de tes Lisp tu aura comme fonction exécutable la derniére qui se charge (ou que tu charge). Pense à faire des fonctions avec des noms différents, et à bien déclarer tes variables pour qu'elle ne puissent pas être réutilisés dans une autre fonction.Salut C'est une solution, mais si tu utilises une "bibliothèque" de routines, tu as plusieurs solutions1) Soit charger au démarrage d'Autocad ta biblio et chaque lisp peut les utiliser.2) Faire des lisps indépendant, donc sans charger de biblio mais avec des routines extraites d'une biblio et qui sont identiques.3) Faire des lisps indépendants, toujours sans charger de biblio mais avec des routines extraites d'une biblio qui peuvent varier dans le lisp pour une raison ou une autre. Alors là, si la déclaration n'est pas en local, il y a risque de conflitIl peut être utile de conserver les mêmes noms, pour des raisons de compréhension de ses lisps, même si les routines diffèrent. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Clément.a Posté(e) le 23 janvier 2013 Auteur Posté(e) le 23 janvier 2013 Merci beaucoup pour vos réponse! C'était ça toute mes sous-routines étaient déclarées en global et non en local et certaine avec des nom identique suivant les routines donc forcément ça à vite amené un problème et des phénomènes bizzard. Merci patrick_35 je ne savais pas comment on faisait pour travailler en local maintenant ça va rendre les choses plus facile pour mes prochaines routines!!J'ai pris l'option de les renommer c'était plus simple pour corrigés et reprende mes Lisp mais dorénavant je commencerai juste du premier coup! Merci encore j'en apprend tout les jours grace à vous!
farfar974123 Posté(e) le 24 janvier 2013 Posté(e) le 24 janvier 2013 Merci encore j'en apprend tout les jours garce à vous! :(rires forts): C'est tellement beau!! A+ les autocadiens Imposer sa volonté aux autres, c'est force. Se l'imposer à soi-même, c'est force supérieure.Lao-Tseu
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