CADxp: Shell toujours en activité - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Shell toujours en activité Routine pour vérifier si le Shell est en activité

#1 L'utilisateur est hors-ligne   Aviglémy 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 195
  • Inscrit(e) : 10-février 03

Posté 06 novembre 2018 - 16:54

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.
0

#2 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6350
  • Inscrit(e) : 06-janvier 03

Posté 06 novembre 2018 - 17:02

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
0

#3 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1826
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 06 novembre 2018 - 21:43

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.
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

#4 L'utilisateur est hors-ligne   Aviglémy 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 195
  • Inscrit(e) : 10-février 03

Posté 08 novembre 2018 - 09:52

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 "

0

#5 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1826
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 08 novembre 2018 - 11:56

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
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)