Aller au contenu

Messages recommandés

Posté(e)

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!

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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!

Posté(e)

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 solutions

1) 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 conflit

Il 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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!

Posté(e)
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

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é