Bonjour,
Actuellement en troisième année de licence, j'effectue un projet. Le projet consiste à l'étude d'une plaque percé subissant des effort en traction, l'objectif est d'observer l'évolution des contraintes de von Mises en fonction du dimensionnement de la plaque et du diamètre du trou.
Pour se faire j'ai besoin de lancer FreeCAD depuis un script python. C'est à dire que lorsque je suis dans mon terminal je n'ai qu'a écrire python nom_du_fichier_py pour faire fonctionner FreeCAD. Le but final est de ne plus avoir besoin de passer par l'interface graphique afin de pouvoir créer des boucle et récupérer des séries de résultat. Je voulais donc savoir si c'était possible de le faire et si oui quelle est la ligne de code nécessaire.
J'espère que ma question est pertinente et compréhensible.
Merci d'avance
Bonne journée
OS: Windows 10 Version 2004
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.24276 (Git)
Build type: Release
Branch: releases/FreeCAD-0-19
Hash: a88db11e0a908f6e38f92bfc5187b13ebe470438
Python version: 3.8.6+
Qt version: 5.15.1
Coin version: 4.0.1
OCC version: 7.5.0
Locale: French/France (fr_FR)
Lancer FreeCAD via python
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Be nice to others! Read the FreeCAD code of conduct!
Re: Lancer FreeCAD via python
Bonjour,
Il y a en fait 2 façons de faire pour se passer complètement de l'interface, en fonction de ce que tu cherches à faire.
Façon 1) Simple pour du FreeCAD pur, limité pour utiliser des modules non inclus dans FreeCAD
Dans ce cas, tu écris ton fichier Python comme un script (une macro) FreeCAD -- sans utiliser les fonctions GUI bien sûr -- puis tu le lances en mettant FreeCAD en mode console :
Façon 2) Plus compliqué à mettre en place mais possibilité d'utiliser n'importe quel module installé
Dans ce cas, tu ajoutes un pointeur vers la lib FreeCAD au début de ton script puis tu importes FreeCAD comme n'importe quel module : voir https://forum.freecadweb.org/viewtopic.php?p=389331
Cette méthode a 2 inconvénients :
* Il faut utiliser une installation Python à la même version que celle avec laquelle FreeCAD a été compilé
* Ce n'est pas super portable. Si quelqu'un d'autre veut faire tourner le script, il devra installer FreeCAD et Python (à la bonne version). Avec la méthode 1, n'importe qui ayant FreeCAD peut lancer le script.
Il y a en fait 2 façons de faire pour se passer complètement de l'interface, en fonction de ce que tu cherches à faire.
Façon 1) Simple pour du FreeCAD pur, limité pour utiliser des modules non inclus dans FreeCAD
Dans ce cas, tu écris ton fichier Python comme un script (une macro) FreeCAD -- sans utiliser les fonctions GUI bien sûr -- puis tu le lances en mettant FreeCAD en mode console :
Code: Select all
freecad -c mon_script.py
Dans ce cas, tu ajoutes un pointeur vers la lib FreeCAD au début de ton script puis tu importes FreeCAD comme n'importe quel module : voir https://forum.freecadweb.org/viewtopic.php?p=389331
Cette méthode a 2 inconvénients :
* Il faut utiliser une installation Python à la même version que celle avec laquelle FreeCAD a été compilé
* Ce n'est pas super portable. Si quelqu'un d'autre veut faire tourner le script, il devra installer FreeCAD et Python (à la bonne version). Avec la méthode 1, n'importe qui ayant FreeCAD peut lancer le script.
Re: Lancer FreeCAD via python
Merci pour votre réponse rapide, je pense que nous allons pouvoir nous en sortir grâce à votre aide et à la documentation que vous avez fourniopenBrain wrote: ↑Mon Apr 19, 2021 2:04 pm Bonjour,
Il y a en fait 2 façons de faire pour se passer complètement de l'interface, en fonction de ce que tu cherches à faire.
Façon 1) Simple pour du FreeCAD pur, limité pour utiliser des modules non inclus dans FreeCAD
Dans ce cas, tu écris ton fichier Python comme un script (une macro) FreeCAD -- sans utiliser les fonctions GUI bien sûr -- puis tu le lances en mettant FreeCAD en mode console :Façon 2) Plus compliqué à mettre en place mais possibilité d'utiliser n'importe quel module installéCode: Select all
freecad -c mon_script.py
Dans ce cas, tu ajoutes un pointeur vers la lib FreeCAD au début de ton script puis tu importes FreeCAD comme n'importe quel module : voir https://forum.freecadweb.org/viewtopic.php?p=389331
Cette méthode a 2 inconvénients :
* Il faut utiliser une installation Python à la même version que celle avec laquelle FreeCAD a été compilé
* Ce n'est pas super portable. Si quelqu'un d'autre veut faire tourner le script, il devra installer FreeCAD et Python (à la bonne version). Avec la méthode 1, n'importe qui ayant FreeCAD peut lancer le script.
Bonne journée
Re: Lancer FreeCAD via python
Bonjour,
Toujours en lien avec ce projet, j'ai besoin de récupérer la commande python du maillage Netgen, je dispose bien de celle que l'on retrouve sur le wiki (https://wiki.freecadweb.org/FEM_Tutorial_Python/fr):
Merci d'avance
Bonne journée
OS: Windows 10 Version 2004
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.24276 (Git)
Build type: Release
Branch: releases/FreeCAD-0-19
Hash: a88db11e0a908f6e38f92bfc5187b13ebe470438
Python version: 3.8.6+
Qt version: 5.15.1
Coin version: 4.0.1
OCC version: 7.5.0
Locale: French/France (fr_FR)
Toujours en lien avec ce projet, j'ai besoin de récupérer la commande python du maillage Netgen, je dispose bien de celle que l'on retrouve sur le wiki (https://wiki.freecadweb.org/FEM_Tutorial_Python/fr):
Mais ce que je souhaiterai, c'est avoir la finesse "Défini par l'utilisateur", et ainsi de pouvoir augmenter les segments par bords depuis la Macro. Car cette fonction de maillage ne renseigne rien dans la console python. J'ai placé en pièce jointe l'interface graphique que je souhaite renseigner dans une macro.mesh = doc.addObject('Fem::FemMeshShapeNetgenObject', 'FEMMeshNetgen')
mesh.Shape = doc.Box
mesh.MaxSize = 1000
mesh.Fineness = "Moderate"
mesh.Optimize = True
mesh.SecondOrder = True
doc.recompute()
analysis_object.addObject(mesh)
Merci d'avance
Bonne journée
OS: Windows 10 Version 2004
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.24276 (Git)
Build type: Release
Branch: releases/FreeCAD-0-19
Hash: a88db11e0a908f6e38f92bfc5187b13ebe470438
Python version: 3.8.6+
Qt version: 5.15.1
Coin version: 4.0.1
OCC version: 7.5.0
Locale: French/France (fr_FR)
- Attachments
-
- NetgenSouhait.PNG (43.13 KiB) Viewed 446 times
Re: Lancer FreeCAD via python
Ce qu'il faut c'est valider l'opération telle que tu la présentes dans ton screenshot. Puis tu sélectionnes ton objet maillage et tu regardes le 'Property pane'. Tu auras la liste des propriétés et la façon de les définir (il faut supprimer les espaces pour les utiliser dans Python).
Re: Lancer FreeCAD via python
Super, je n'y avais pas pensé, ça à l'air de fonctionner comme je le veux. Je vais relancer les testes en espérant obtenir des résultats plus concluant qu'avant.
Merci beaucoup
Merci beaucoup