Aviglémy Posté(e) le 6 novembre 2018 Posté(e) le 6 novembre 2018 Bonjour,le message concerne un code donné par Partik_35. Le post d'origine LIEN j'utilise ce code pour un calcul avec Circé des coordonnées de Lambert 1 -> Lambert 93 et inversement. Ce code a bien fonctionné pendant quelques années et depuis Windows 10 et/ou Autocad 2015, la boucle "(foreach item (list WMI meth1 meth2) (vlax-release-object item)" se met à tourner sans arrêt. Voici le Code :(defun appli(qui / apps item lst meth1 meth2 WMI) (setq WMI (vlax-create-object "WbemScripting.SWbemLocator") meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil) meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process") ) (vlax-for item meth2 (setq lst (cons (vlax-get item 'CommandLine) lst)) ) (foreach item (list WMI meth1 meth2) (vlax-release-object item) ) (vl-remove-if-not '(lambda(x) (and x (vl-string-search (strcase qui) (strcase x)))) lst) ) Patrik__35, peux tu me dire si c'est moi qui déconne ou cette boucle ne confectionne plus avec Windows 10 et/ou Autocad 2015 ? Merci.
Patrick_35 Posté(e) le 6 novembre 2018 Posté(e) le 6 novembre 2018 Salut Non, ça fonctionne bien.j'ai juste repris le lisp pour lister les process afin de vérifier.(defun appli(/ apps item lst meth1 meth2 WMI) (setq WMI (vlax-create-object "WbemScripting.SWbemLocator") meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil) meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process") ) (vlax-for item meth2 (setq lst (cons (vlax-get item 'CommandLine) lst)) ) (foreach item (list WMI meth1 meth2) (vlax-release-object item) ) (vl-remove nil lst) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Fraid Posté(e) le 6 novembre 2018 Posté(e) le 6 novembre 2018 Bonjour, Je suis étonné que tu doive killer le process.J'utilise aussi Circé, dans sa version batch.Comme le retour est un .txt contenant les nouvelles coordonnées; il suffit de tester sa présence.De plus le .bat s’arrête tout seul me semble t'il, sinon il suffit de mettre exit en dernières ligne.Si tu n'utilise pas la version batch, je suis curieux de voir ce lisp. https://github.com/Fraiddd
Aviglémy Posté(e) le 8 novembre 2018 Auteur Posté(e) le 8 novembre 2018 Bonjour,merci pour ce retour. arff, appli tourne toujours en boucle, je ne comprends pas pourquoi. Bref je vais m'intéresser à la solution de Fraid.Si je comprends bien : tu fait une requête à Circé, il crée le txt, le Lisp test la présence du txt, et enfin supprime le txt ? J'ai bien mis -E pour quitter à la fin de la requête Circé :-init Circe.ini -mode 0 -type 2 -sys1 24 -sys2 2 -typcoor1 3 140 -typcoor2 3 101 -H 0.0 -E "
Fraid Posté(e) le 8 novembre 2018 Posté(e) le 8 novembre 2018 Bonjour, Je n'utilise pas la dernière version de Circé, pas eu le temps, mais la version CirceBatch (mode commande) de la version précédente 4.3, encore dispo A cette adresse voici un exemple d'un .bat écrit avec un lisp, puis lancer avec la commande shell @echo off "C:\Data\CirceBatch\CirceBatch.exe" -init Circe.ini -mode 0 -type 2 -sys1 24 -sys2 24 -typcoor1 2 2 1 -typcoor2 3 140 -lon 4.50166666667 -lat 49.5180555556 > "C:\Data\ReturnCirceddT93.txt" exit pour tester la presence et continuer (while (null (dos_find "C:\Data\ReturnCirceddT93.txt")) (command "_delay" 200) ) arf, le doslib me colle au basquette, mettre findfile a la place de dos_find https://github.com/Fraiddd
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