Aller au contenu

Shell toujours en activité


Aviglémy

Messages recommandés

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.

Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

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

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 "

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é