Lancer FreeCAD via python

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
EwanP
Posts: 4
Joined: Fri Apr 09, 2021 8:06 am

Lancer FreeCAD via python

Post by EwanP »

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)
openBrain
Veteran
Posts: 9041
Joined: Fri Nov 09, 2018 5:38 pm
Contact:

Re: Lancer FreeCAD via python

Post by openBrain »

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 :

Code: Select all

freecad -c mon_script.py
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.
EwanP
Posts: 4
Joined: Fri Apr 09, 2021 8:06 am

Re: Lancer FreeCAD via python

Post by EwanP »

openBrain 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 :

Code: Select all

freecad -c mon_script.py
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.
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 fourni
Bonne journée
EwanP
Posts: 4
Joined: Fri Apr 09, 2021 8:06 am

Re: Lancer FreeCAD via python

Post by EwanP »

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):
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)
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.

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
NetgenSouhait.PNG (43.13 KiB) Viewed 446 times
openBrain
Veteran
Posts: 9041
Joined: Fri Nov 09, 2018 5:38 pm
Contact:

Re: Lancer FreeCAD via python

Post by openBrain »

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). ;)
EwanP
Posts: 4
Joined: Fri Apr 09, 2021 8:06 am

Re: Lancer FreeCAD via python

Post by EwanP »

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
Post Reply