LUDWIG Posté(e) le 11 avril 2006 Posté(e) le 11 avril 2006 Bonjour, Je fais un lisp qui charge les applications (dvb, fas, lsp, arx) présent dans un répertoire et ses sous répertoires.Or quand le chargement d'une application échoue, mon lisp s'arrête sans charger le reste des applications. Cet échec est due à une mauvaise syntaxe de l'application, mais mon but n'est pas de la modifier. Comment tester la bonne exécution d'un "load" ? J'ai essayé avec vl-catch-all-apply mais soit je n'ai pas mis la bonne syntaxe, soit il n'arrive pas à capter l'erreur. (setq err (vl-catch-all-apply (load n))) ou (setq err (vl-catch-all-apply '(lambda ()(load n)))) ne changent rien, j'ai toujours l'erreur Autocad 2021 - Revit 2022 - Windows 10
sergeluc Posté(e) le 11 avril 2006 Posté(e) le 11 avril 2006 Bonjour,Je charge mes fichiers par la syntaxe suivante :(if (setq inite (findfile (strcat path-lisp "initialise.lsp"))) (load inite));; fichier d'initialisation des variables Dans le fichier .mnl d'acad qui est chargé automatiquement au démarrage j'ai déclaré un fichier lisp qui contient tout les lisp a charger comme celui ci-dessus.avec cette syntaxe la recherche se fait dans tous les chemins connus par autocad.Il est possible de rajouter un chemin dans ce fichier mnl du style : (setq path-lisp "c:/tuc/machin/lisp/") .C'est le cas pour ce que j'ai écrit.Il ya plusieurs façon de chargement automatique a l'ouverture d'autocad .Le fichier AutoCAD.lsp est aussi lancé automatiquement au démarrage et d'autres.Il y a aussila fonction s::startup ou s::init qui doit se trouvé dans ce fichier mnl ou un autre ,fonction qui est recherchée par AutoCAD au démarrage.
Patrick_35 Posté(e) le 11 avril 2006 Posté(e) le 11 avril 2006 Salut (vl-catch-all-apply 'load '("Mon_Lisp")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 11 avril 2006 Posté(e) le 11 avril 2006 Salut, J'utilise parfois l'expression : (if (not (vl-catch-all-error-p (vl-catch-all-apply ... Qui, en cas d'erreur, retourne nil au lieu de l'erreur et permet de poursuivre le dérouleme,nt de la routine. Mais si ce message fait suite à celui-ci, je ne suis pas sûr que cela fonctionne quand on essaye de charger un .dvb déjà chargé (est-ce bien une erreur ?) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
LUDWIG Posté(e) le 13 avril 2006 Auteur Posté(e) le 13 avril 2006 Ben voilà, encore une fois c'était un problème de syntaxe !(vl-catch-all-apply 'load '("Mon_Lisp") fonctionne ! Merci beaucoup Autocad 2021 - Revit 2022 - Windows 10
LUDWIG Posté(e) le 13 avril 2006 Auteur Posté(e) le 13 avril 2006 Sauf que je n'arrive pas à passer une variable pour le chemin du lisp : (vl-catch-all-apply 'load '("c:\\toto.lso"))fonctionne mais (setq n "c:\\toto.lsp") (vl-catch-all-apply 'load '(n))ne fonctionne pas !!! EDIT : j'en ai fait un nouveau sujet [Edité le 13/4/2006 par LUDWIG] Autocad 2021 - Revit 2022 - Windows 10
LUDWIG Posté(e) le 14 avril 2006 Auteur Posté(e) le 14 avril 2006 Voici donc enfin ma routine... Autocad 2021 - Revit 2022 - Windows 10
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