FreeCAD Logo FreeCAD 1.0
  • Anglais Afrikaans Arabe Biélorusse Catalan Tchèque Allemand Grec Espagnol Espagnol Basque Finnois Philippin Français Galicien Croate Hongrois Indonésien Italien Japonais Kabyle Coréen Lituanien Néerlandais Norvégien classique Polonais Portugais Portugais Roumain Russe Slovaque Slovène Serbe Suédois Turc Ukrainien Valencien Vietnamien Chinois Chinois
  • Fonctions
  • Télécharger
  • Blog
  • Documentation
    Index de la documentation Premiers pas Documentation pour les utilisateurs Manuel de FreeCAD Documentation des ateliers Documentation sur le codage en Python Documentation pour les développeurs Tutoriels Foire aux questions Politique de confidentialité À propos de FreeCAD
  • Contribuer
    Comment aider Sponsor Signaler un bogue Faire une demande de modification (PR) Emplois et financements Guide pour les contributions Manuel pour les développeurs Traductions
  • Communauté
    Code de conduite Forum The FPA GitHub GitLab Codeberg Mastodon Matrix IRC IRC via Webchat Gitter Discord Reddit Twitter Facebook LinkedIn Calendrier
  • ♥ Donate

Donate

$
Informations SEPA
Veuillez configurer votre virement bancaire SEPA pour:
Beneficiary: The FreeCAD project association
IBAN: BE04 0019 2896 4531
BIC/SWIFT: GEBABEBBXXX
Agence bancaire: BNP Paribas Fortis
Adresse: Rue de la Station 64, 1360 Perwez, Belgium

While Stripe doesn't support monthly donations, you can still become a sponsor! Simply make a one-time donation equivalent to 12 months of support, and you'll gain access to the corresponding sponsoring tier. It's an easy and flexible way to contribute.

If you are not sure or not able to commit to a regular donation, but still want to help the project, you can do a one-time donation, of any amount.

Choose freely the amount you wish to donate one time only.

You can support FreeCAD by sponsoring it as an individual or organization through various platforms. Sponsorship provides a steady income for developers, allowing the FPA to plan ahead and enabling greater investment in FreeCAD. To encourage sponsorship, we offer different tiers, and unless you choose to remain anonymous, your name or company logo will be featured on our website accordingly.

from 1 USD / 1 EUR per month. You will not have your name displayed here, but you will have helped the project a lot anyway. Together, normal sponsors maintain the project on its feet as much as the bigger sponsors.

from 25 USD / 25 EUR per month. Your name or company name is displayed on this page.

from 100 USD / 100 EUR per month. Your name or company name is displayed on this page, with a link to your website, and a one-line description text.

from 200 USD / 200 EUR per month. Your name or company name and logo displayed on this page, with a link to your website and a custom description text. Companies that have helped FreeCAD early on also appear under Gold sponsors.

Instead of donating each month, you might find it more comfortable to make a one-time donation that, when divided by twelve, would give you right to enter a sponsoring tier. Don't hesitate to do so!

Choose freely the amount you wish to donate each month.

Please inform your forum name or twitter handle as a notein your transfer, or reach to us, so we can give you proper credits!

Introduction

FreeCAD peut être importé en tant que module Python dans d'autres programmes ou dans une console Python autonome, avec tous ses modules et composants. Il est même possible d'importer l'interface utilisateur de FreeCAD en tant que module python mais avec certaines restrictions indiquées dans Avertissements.

Installation

La première chose importante est de s'assurer que Python trouvera notre bibliothèque FreeCAD. La bibliothèque est généralement appelée FreeCAD.so sous Linux et FreeCAD.pyd sur les autres plateformes, donc la première étape sera pour vous de trouver le chemin où se trouve ce fichier. Une fois que Python l'aura trouvé, tous les modules FreeCAD tels que Part (que nous utiliserons également) seront automatiquement disponibles. Il suffit donc de prendre la variable sys.path, qui correspond à l'emplacement où Python recherche les modules, et d'y ajouter le chemin d'accès à la bibliothèque FreeCAD. Cette modification n'est que temporaire et sera perdue lorsque nous fermerons notre interpréteur Python. Une autre solution consiste à créer un lien vers votre bibliothèque FreeCAD dans l'un des chemins de recherche Python. J'ai stocké le chemin dans une constante (FREECADPATH) afin qu'il soit plus facile pour un autre utilisateur du script de le configurer sur son propre système. Pour les utilisateurs Windows, il est important que le chemin soit spécifié en utilisant \\ ou / comme séparateur au lieu de simplement \, car il s'agit d'un caractère d'échappement.

FREECADPATH = 'C:\\FreeCAD\\bin' # path to your FreeCAD.so or FreeCAD.pyd file
import sys
sys.path.append(FREECADPATH)

Utilisation de FreeCAD sans interface graphique (GUI)

La première application, directe, facile et utile que vous pouvez faire est d'importer des documents FreeCAD dans votre programme. Dans l'exemple suivant, nous allons importer une géometrie de Part d'un document FreeCAD dans blender. Voici le script complet. J'espère que vous serez impressionné par sa simplicité :

FREECADPATH = '/usr/lib/freecad-python3/lib/' # path to your FreeCAD.so or FreeCAD.pyd file,
# for Windows you must either use \\ or / in the path, using a single \ is problematic
# FREECADPATH = 'C:\\FreeCAD\\bin'
import Blender, sys
sys.path.append(FREECADPATH)
 
def import_fcstd(filename):
   try:
       import FreeCAD
   except ValueError:
       Blender.Draw.PupMenu('Error%t|FreeCAD library not found. Please check the FREECADPATH variable in the import script is correct')
   else:
       scene = Blender.Scene.GetCurrent()
       import Part
       doc = FreeCAD.open(filename)
       objects = doc.Objects
       for ob in objects:
           if ob.Type[:4] == 'Part':
               shape = ob.Shape
               if shape.Faces:
                   mesh = Blender.Mesh.New()
                   rawdata = shape.tessellate(1)
                   for v in rawdata[0]:
                       mesh.verts.append((v.x,v.y,v.z))
                   for f in rawdata[1]:
                       mesh.faces.append.append(f)
                   scene.objects.new(mesh,ob.Name)
       Blender.Redraw()

def main():
   Blender.Window.FileSelector(import_fcstd, 'IMPORT FCSTD', 
                        Blender.sys.makename(ext='.fcstd'))    
 
# This lets you import the script without running it
if __name__=='__main__':
   main()

Une fois certain que la bibliothèque a été chargée (la séquence try/except), nous pourrons travailler avec FreeCAD, de la même manière que si nous le ferions à l'intérieur de l’interpréteur Python de FreeCAD. Nous ouvrons le document FreeCAD que nous avons chargé avec la fonction main() et nous listons ses objets. Ensuite, comme nous avons choisi de ne nous soucier que de la géométrie de la pièce, nous vérifions si la propriété Type de chaque objet contient "Part" puis nous la tesselons.

import Part
       doc = FreeCAD.open(filename)
       objects = doc.Objects
       for ob in objects:
           if ob.Type[:4] == 'Part':

La tesselation produit une liste de sommets (Vertex) et une liste de faces définis par les indices de sommets. C'est parfait, puisque c'est exactement de cette manière que Blender définit les mailles. Donc, notre tâche est ridiculement simple, nous ajoutons juste les deux listes des sommets et faces comme un maillage de Blender. Une fois fait, nous allons juste redessiner l'écran et, c'est fini !

if ob.Type[:4] == 'Part':
               shape = ob.Shape
               if shape.Faces:
                   mesh = Blender.Mesh.New()
                   rawdata = shape.tessellate(1)
                   for v in rawdata[0]:
                       mesh.verts.append((v.x,v.y,v.z))
                   for f in rawdata[1]:
                       mesh.faces.append.append(f)
                   scene.objects.new(mesh,ob.Name)
       Blender.Redraw()

Bien sûr ce script est très simple (en fait j'ai fait un Importateur FreeCAD vers Blender plus avancé), vous voudrez peut-être l'améliorer, par exemple en important des objets maillés aussi ou en important une géométrie de Part qui n'a pas de faces, ou en important d'autres formats de fichier que FreeCAD peut lire. Vous pouvez également exporter la géométrie vers un document FreeCAD, ce qui peut être fait de la même manière. Vous voudrez peut-être aussi créer une fenêtre de dialogue, afin que l'utilisateur puisse choisir quoi importer, etc... La beauté de tout cela réside en fait dans le fait que vous laissez FreeCAD faire le travail de fond tout en présentant ses résultats dans le programme de votre choix .

Remarque : consultez FreeCAD sans interface graphique pour exécuter FreeCAD sans l'interface graphique.

Utilisation de FreeCAD avec interface graphique (GUI)

Depuis la version 4.2 de Qt, Qt a la capacité d'intégrer des plugins Qt-GUI dépendants d'applications hôtes non-Qt, et, de partager la boucle évènementielle de l'hôte.

En particulier, pour FreeCAD, cela signifie qu'il peut être importé à partir d'une autre application avec l'ensemble de son interface utilisateur, l'application hôte ayant alors un contrôle total sur FreeCAD.

L'ensemble du code Python nécessaire pour atteindre ce but, n'a que deux lignes :

import FreeCADGui 
FreeCADGui.showMainWindow()

Si, l'application hôte est basée sur Qt, alors cette solution devrait fonctionner sur toutes les plates-formes supportées par Qt. Toutefois, l'hôte doit être de la même version Qt que la version utilisée pour FreeCAD, sinon, vous pouvez obtenir des erreurs d'exécution inattendues.

Cependant, pour les applications non-Qt, il ya quelques restrictions, que vous devez connaitre :

  • Cette solution ne fonctionnera probablement pas avec tous les autres outils (toolkit) :
    • Pour Windows, il fonctionnera aussi longtemps que l'application hôte utilisée est compatible avec Win32 ou, tout autres outils (toolkit) qui utilisent l'API Win32, comme wxWidgets, MFC ou WinForms.
    • Pour le faire fonctionner sous X11 (Linux), l'application hôte doit utiliser la bibliothèque "glib".

Remarque : pour toute application console, cette solution ne fonctionne évidemment pas parce qu'il n'y a pas de boucle d'événements en cours.

Avertissements

Bien qu'il soit possible d'importer FreeCAD vers un interpréteur Python externe, il ne s'agit pas d'un scénario d'utilisation courant et cela nécessite quelques précautions. En règle générale, il est préférable d'utiliser le Python fourni avec FreeCAD, d'exécuter FreeCAD via une ligne de commande, ou en tant que sous-processus. Voir Démarrage et configuration pour plus d'informations sur les deux dernières options.

Puisque le module Python de FreeCAD est compilé à partir de C ++ (plutôt que d'être un pur module Python), il ne peut être importé qu'à partir d'un interpréteur Python compatible. Cela signifie généralement que l'interpréteur Python doit être compilé avec le même compilateur C que celui utilisé pour construire FreeCAD. Les informations sur le compilateur utilisé pour construire un interpréteur Python (y compris celui construit avec FreeCAD) peuvent être trouvés comme suit:

>>> import sys
>>> sys.version
'2.7.13 (default, Dec 17 2016, 23:03:43) \n[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]'

En relation

  • FreeCAD sans interface graphique


Cette page est extraite de https://wiki.freecad.org/Embedding_FreeCAD

Contactez-nous !
Forum GitHub Mastodon Matrix IRC Gitter.im Discord Reddit Twitter Facebook LinkedIn

© L'équipe FreeCAD. Crédits des images de la page d'accueil (de haut en bas) : ppemawm, r-frank, epileftric, regis, rider_mortagnais, bejant.

Ce projet est soutenu par : , KiCad Services Corp. et autres parrains

GitHubAméliorer cette page sur GitHub