Script depuis les tâches planifiées

sebastien_lhoir
Participant
Participant

Script depuis les tâches planifiées

sebastien_lhoir
Participant
Participant

Bonjour à tous,

J'ai écrit un programme PowerShell qui teste une série de fichiers et en fonction de ces tests génère un script autocad.scr à la volée dynamiquement. Ce programme PowerShell lance alors AutoCAD en passant le script en paramètre "/b".
Si j'exécute ce programme PowerShell depuis l'interface PowerShell , tout se passe à merveille.
Si j'exécute ce programme depuis une tâche planifiée, mais que j'autorise ce script à s'exécuter seulement quand l'utilisateur est connecté, cela se passe aussi très bien. On voit alors le script PowerShell qui s'exécute, AutoCAD qui se lance et exécute le script, etc.

sebastien_lhoir_0-1725523102161.png

Par contre, si je demande à ce programme de s'exécuter que l'utilisateur soit connecté ou pas, là, rien ne va plus. Le programme PowerShell s'exécute, crée le .scr, lance AutoCAD (on le voit via le task manager), mais AutoCAD ne fait rien. Comme si AutoCAD avait besoin d’interagir avec un affichage à l'écran ou que sais-je. Faut-il mettre une option au démarrage d'AutoCAD pour qu'il puisse s'exécuter en arrière plan ? Je n'ai rien trouvé de tel ! Je sais que certains programmes ont une option de démarrage lorsqu'ils doivent s'exécuter en arrière plan.

Merci pour votre aide

 

0 J'aime
Répondre
Solutions acceptées (2)
499 Visites
10 Réponses
Replies (10)

Caderix
Mentor
Mentor
Solution acceptée

Bonjour, 

 

Vous pouvez peut-être essayer d'utiliser AutoCAD Core Console pour une exécution sans interface graphique.

 

https://help.autodesk.com/view/OARX/2025/FRA/?guid=AUTOCAD_CORE_CONSOLE

 


Cordialement

Eric GUELEN
Formateur AutoCAD
Site Internet

EESignature

didier_lourdelle
Advocate
Advocate
Solution acceptée

Translator
 
 
 
 

 

Je prolonge la réponse de @Caderix .

Votre approche fonctionne bien dans un environnement interactif, mais l'exécution d'AutoCAD en arrière-plan via une tâche planifiée pose souvent des difficultés, notamment lorsque l'utilisateur n'est pas connecté.

Une solution à envisager est d'utiliser AutoCAD Core Console (accoreconsole.exe), disponible depuis AutoCAD 2013.

Cette version allégée d'AutoCAD, sans interface graphique, est spécialement conçue pour exécuter des scripts en tâche de fond, ce qui la rend idéale pour les tâches planifiées, même sans utilisateur connecté.

Il est possible de lancer plusieurs instances d'accoreconsole.exe en parallèle sur différents fichiers .dwg.

Avec les processeurs actuels, c'est la meilleure solution lorsqu'il y a un grand nombre de fichiers à traiter.


Vous trouverez plus de détails sur cette fonctionnalité dans cet article de 2012

https://through-the-interface.typepad.com/through_the_interface/2012/02/the-autocad-2013-core-consol...

EESignature

Didier Lourdelle Consultant, Formateur & Développeur CAO/DAO
Expertises : AutoCAD, AutoCAD LT, AutoCAD Electrical
Langages : VB.NET, Visual LISP, VBA, Diesel (Direct Interpretively Evaluated String Expression Language)
Base de données relationnelle : Microsoft Access, SQL Server, MySQL
Environnements de développement : Microsoft Visual Studio, Visual Studio Code, Editeur Visual LISP
Utilisations :AutoCAD MAP, Civil 3D, AutoCAD Architecture, AutoCAD MEP, Plant 3D, Civil 3D, RasterDesign, VehicleTracking, Autodesk Recap, Fusion 360, NavisWorks, Revit

sebastien_lhoir
Participant
Participant

Merci pour vos réponses.
Je ne connaissais absolument pas. Je teste cela et reviens ici (j'espère rapidement) pour vous confirmer que cela fonctionne.
Bonne journée

 

0 J'aime

sebastien_lhoir
Participant
Participant

Bonjour à tous,

 

Effectivement, cela semble bien être la solution. Je vois une fenêtre qui s'ouvre, qui fait des choses et qui se referme.

 

Toutefois, avant de valider la solution, j'ai un autre soucis. Je ne sais pas si c'est mieux de la mettre ici à la suite ou créer un nouveau sujet.

 

Mon souci désormais, c'est que j'ai l'impression que le script ne s'exécute pas dans sa globalité. J'ai enlevé  la ligne _QUIT, mais la fenêtre se ferme tout de même. Je ne sais donc pas voir où mon script autocad coince. Encore une fois, mon script fonctionnait parfaitement en le lançant avec "un vrai" (un full) autocad et les interaction avec l'écran.

 

Une idée de comment voir ce qui coince dans le cas de l’utilisation de accoreconsole.exe ?

 

Merci

0 J'aime

Caderix
Mentor
Mentor

Bonjour, 

 

Je ne sais pas si cela fonctionne aussi avec l'AutoCAD Core Console, mais on peut créer un fichier journal de ce qui se passe dans AutoCAD en utilisant les variables LOGFILEMODE, LOGFILEPATH et LOGFILENAME.

 

A tester.


Cordialement

Eric GUELEN
Formateur AutoCAD
Site Internet

EESignature

0 J'aime

didier_lourdelle
Advocate
Advocate

J'ajouterai à la réponse de @Caderix 

Sans voir le script, il est difficile d'identifier exactement ce qui ne va pas !

Cependant, depuis des années, je préfère utiliser des commandes via l'instruction AutoLISP "command" , par exemple :

(command "_zoom" "_e")

Cela permet d'éviter certains problèmes de base, comme les espaces en trop ou manquants.., qui peuvent survenir en envoyant simplement des commandes.

De plus, j'ajoute régulièrement des lignes pour afficher des messages intermédiaires dans la ligne de commande AutoCAD, comme ceci :

(prompt "\nTraitement de la partie XXXX terminé.")

Cela ne nécessite pas beaucoup de compétences en AutoLISP pour utiliser les instructions command et prompt.

Cela permet de tester rapidement le fichier .scr en le glissant-déposant simplement dans un AutoCAD LT classique, afin de vérifier si le traitement s'exécute correctement dès le départ.



EESignature

Didier Lourdelle Consultant, Formateur & Développeur CAO/DAO
Expertises : AutoCAD, AutoCAD LT, AutoCAD Electrical
Langages : VB.NET, Visual LISP, VBA, Diesel (Direct Interpretively Evaluated String Expression Language)
Base de données relationnelle : Microsoft Access, SQL Server, MySQL
Environnements de développement : Microsoft Visual Studio, Visual Studio Code, Editeur Visual LISP
Utilisations :AutoCAD MAP, Civil 3D, AutoCAD Architecture, AutoCAD MEP, Plant 3D, Civil 3D, RasterDesign, VehicleTracking, Autodesk Recap, Fusion 360, NavisWorks, Revit

0 J'aime

sebastien_lhoir
Participant
Participant

Alors, pour être tout à fait honnête, personnellement je n'ai aucune connaissance en script AutoCad. Le script de base a été écrit par un dessinateur. Moi, je ne fait que le générer depuis un PowerShell pour qu'il s'adapte dynamiquement.
Voici un exemple. Devrait-il être réécrit ?

0 J'aime

didier_lourdelle
Advocate
Advocate

Translator
 
 
 
 

 

Vous travaillez déjà avec un script bien spécifique utilisant des plugins. Plusieurs possibilités :

  • Le plugin Archibus n'est peut-être pas prévu pour fonctionner avec accorconsole.exe !
  • Les commandes AFM_XXXX ne fonctionnent peut-être pas parce que le plugin n'est pas chargé ou ne l'est pas correctement.
  • ...

 

EESignature

Didier Lourdelle Consultant, Formateur & Développeur CAO/DAO
Expertises : AutoCAD, AutoCAD LT, AutoCAD Electrical
Langages : VB.NET, Visual LISP, VBA, Diesel (Direct Interpretively Evaluated String Expression Language)
Base de données relationnelle : Microsoft Access, SQL Server, MySQL
Environnements de développement : Microsoft Visual Studio, Visual Studio Code, Editeur Visual LISP
Utilisations :AutoCAD MAP, Civil 3D, AutoCAD Architecture, AutoCAD MEP, Plant 3D, Civil 3D, RasterDesign, VehicleTracking, Autodesk Recap, Fusion 360, NavisWorks, Revit

0 J'aime

sebastien_lhoir
Participant
Participant

En théorie, le plug-in est chargé puisque je passe le paramètre /p à  accorconsole. Vu les liens entre autodesk et eptura(archibus), j'ose espérer que le plug-in est compatible.

Mais effectivement c'est un de mes inquiétudes.

Je vais déjà commencer par sortir l'output dans un fichier pour voir où cela coince. Malheureusement, je n'aurai pas l'occasion de voir cela aujourd'hui. Déjà MERCI

0 J'aime

sebastien_lhoir
Participant
Participant

Effectivement, dans les logs, j'obtiens

Commande: AFM_CATALOG
Commande inconnue "AFM_CATALOG". Appuyez sur F1 pour obtenir de l'aide.

 

Pourtant je définis bien

$PathAutocad="C:\Program Files\Autodesk\AutoCAD 2024\accoreconsole.exe"
$WorkdirAutocad="C:\Program Files\Autodesk\AutoCAD 2024\UserDataCache\"
$ArglistAutocad='/s "C:\Users\slhoir\Desktop\Scripts\MAD\Routine_MAD.scr" /product ACAD /language "fr-FR" /p "Smart Client Extension for AutoCAD"'

 

0 J'aime