Macro at Startup/fr: Difference between revisions
No edit summary |
No edit summary |
||
Line 96: | Line 96: | ||
Notez que cela ne sera fait qu'une fois. Si vous souhaitez exécuter plus d'une macro, vous pouvez simplement ajouter les autres macros dans le même fichier (consultez les commentaires sur le code ci-dessus). |
Notez que cela ne sera fait qu'une fois. Si vous souhaitez exécuter plus d'une macro, vous pouvez simplement ajouter les autres macros dans le même fichier (consultez les commentaires sur le code ci-dessus). |
||
<div class="mw-translate-fuzzy"> |
|||
Nous avons finis. Votre macro devrait s'exécuter automatiquement au prochain lancement de FreeCAD. |
Nous avons finis. Votre macro devrait s'exécuter automatiquement au prochain lancement de FreeCAD. |
||
</div> |
|||
Notez que si la macro originale a été téléchargée via le gestionnaire d’addon, elle sera écrasée lors de la mise à jour et vous devrez donc à nouveau suivre les étapes décrites ici. |
Notez que si la macro originale a été téléchargée via le gestionnaire d’addon, elle sera écrasée lors de la mise à jour et vous devrez donc à nouveau suivre les étapes décrites ici. |
Revision as of 18:17, 12 September 2021
Introduction
Cette documentation explique comment configurer une macro pour qu'elle s'exécute automatiquement au démarrage de FreeCAD.
Avant de commencer, les points suivants doivent être pris en compte:
- L'exécution automatique d'une macro au démarrage peut être considérée comme un risque pour la sécurité. Vous ne devez exécuter que des macros fiables et testées auparavant
- Vous avez probablement besoin de quelques notions de Python et de codage pour suivre cette procédure
- Lorsque les dossiers utilisateur ('Mod', 'Macro', ...) sont mentionnés, ils se trouvent dans votre dossier utilisateur FreeCAD. Vous pouvez les localiser au démarrage et à la configuration → Informations relatives à l'utilisateur
- Cela ne devrait pas être fait pour les macros traitant de la modélisation de pièces. Ceci est plutôt approprié pour les macros qui ajoutent des fonctionnalités en améliorant l'interface utilisateur, ...
Comment
Préparer la macro
Généralement, il arrivera qu'une macro ne soit pas directement compatible avec un lancement au démarrage et devra être ajustée
Considérez la macro ci-dessous que vous avez téléchargée quelque part et qui est stockée dans votre dossier 'Macro' avec le nom 'MySuperMacro.FCMacro':
## Import section ## from PySide import QtGui ## Definition section (classes, functions, ...) class MyMsgBox(QtGui.QMessageBox): def __init__(self): super(MyMsgBox, self).information(None, "MyTitle", "MyText") ## Main instruction section MyMsgBox()
Toutes les macros présentent généralement une structure similaire avec une première section d'importation, puis une section de définition et enfin une section d'instruction principale. Nous allons nous concentrer sur ce dernier point car les instructions principales (elles sont assez faciles à repérer car elles commencent au début de la ligne) sont en réalité celles qui "exécutent" la macro. Pour une étape ultérieure, nous devrons importer la macro avec un programme puis l'exécuter. Cela ne peut pas être fait avec la structure réelle de la macro. Pour pouvoir le faire, nous devons inclure les instructions principales dans une fonction - par exemple. run() - puis assurez-vous que cette fonction est toujours appelée lorsque la macro est exécutée manuellement par l'utilisateur. Si vous n'êtes pas totalement sûr de ce que vous faites, il est conseillé de travailler sur une copie de la macro (ou vous pouvez simplement vouloir conserver la macro d'origine telle quelle). Le fichier d'origine doit être modifié comme suit:
from PySide import QtGui ## The 2 below lines shall be added if not already present to ensure FreeCAD modules are imported import FreeCAD as App import FreeCADGui as Gui class MyMsgBox(QtGui.QMessageBox): def __init__(self): super(MyMsgBox, self).information(None, "MyTitle", "MyText") ## Enclose the main instructions in a function def run(): MyMsgBox() ## Ensure main instructions are still called in case of manual run if __name__ == '__main__': run()
Bien sûr, si la fonction "run()" existe déjà dans la macro, vous pouvez choisir n'importe quel autre nom commode. La macro est maintenant prête à être intégrée au démarrage de FreeCAD.
Intégration au démarrage de FreeCAD
Commencez par créer un nouveau dossier dans votre dossier utilisateur "Mod" de appelé "MacroStartup". Copiez la macro modifiée dans ce dossier nouvellement créé et renommez-la avec une extension ".py" si ce n'est pas encore le cas (notez que si vous développez la macro vous-même, vous pouvez également la nommer avec l'extension ".py" dans le dossier "Macro" pour ne pas avoir à le renommer lors de la copie). Enfin, créez dans le même dossier un fichier appelé "InitGui.py" qui contient le code suivant:
def runStartupMacros(name): # Do not run when NoneWorkbench is activated because UI isn't yet completely there if name != "NoneWorkbench": # Run macro only once by disconnecting the signal at first call FreeCADGui.getMainWindow().workbenchActivated.disconnect(runStartupMacros) # Following 2 lines shall be duplicated for each macro to run import MySuperMacro MySuperMacro.run() # Eg. if a second macro shall be launched at startup # import MyWonderfulMacro # MyWonderfulMacro.run() # The following 2 lines are important because InitGui.py files are passed to the exec() function... # ...and the runMacro wouldn't be visible outside. So explicitly add it to __main__ import __main__ __main__.runStartupMacros = runStartupMacros # Connect the function that runs the macro to the appropriate signal FreeCADGui.getMainWindow().workbenchActivated.connect(runStartupMacros)
Notez que cela ne sera fait qu'une fois. Si vous souhaitez exécuter plus d'une macro, vous pouvez simplement ajouter les autres macros dans le même fichier (consultez les commentaires sur le code ci-dessus).
Nous avons finis. Votre macro devrait s'exécuter automatiquement au prochain lancement de FreeCAD.
Notez que si la macro originale a été téléchargée via le gestionnaire d’addon, elle sera écrasée lors de la mise à jour et vous devrez donc à nouveau suivre les étapes décrites ici.
General Notes
- In the example 'InitGui.py' script above, the function named 'runStartupMacros()' may be changed, so long as you also change the other four references to it, so they all match.
- This script will be run prior to the auto loading of your desired startup workbench in the FreeCAD Preferences, Preferences_Editor#General_settings.
Linux
MacOS
Windows
- In the above example, you may place the 'MacroStartup' folder within the 'Mod' folder of your FreeCAD root directory (whether installed version or portable version), or you may create a 'Mod' folder along side the 'Macro' folder in '%USERPROFILE%\AppData\Roaming\FreeCAD\', and place the 'MacroStartup' folder there.
- From observation, the workbenches found within either 'Mod' folder are loaded alphabetically. Those in the FreeCAD root 'Mod' folder are loaded first, then FreeCAD scans the '%USERPROFILE%\AppData\Roaming\FreeCAD\Mod' folder for additional workbenches.
En relation
Extra_python_modules/fr#LazyLoader LazyLoader est un module Python qui permet un chargement différé,
- Scripts FreeCAD : Python, Introduction à Python, Tutoriel sur les scripts Python, Débuter avec les scripts
- Modules : Modules intégrés, Unités, Quantity
- Ateliers : Création d'atelier, Commands Gui, Les commandes, Installer des ateliers supplémentaires
- Maillages et objets Parts : Scripts Mesh, Script de données topologiques, Conversion objet Mesh en Part, PythonOCC
- Objets paramétriques : Objets créés par script, Viewproviders (Icône personnalisée dans l'arborescence)
- Scénographie : Graphe de scène Coin (Inventor), Pivy
- Interface graphique : Création d'interface, Création d'une boite de dialogue (1, 2, 3, 4, 5), PySide, Exemples PySide débutant, intermédiaire, expérimenté
- Macros : Macros, Comment installer des macros
- Intégration : Intégrer FreeCAD, Intégration de FreeCADGui
- Autre : Expressions, Extraits de codes, Fonction - tracer une ligne, Bibliothèque mathématique vectorielle de FreeCAD (déprécié)