Extra python modules/fr: Difference between revisions

From FreeCAD Documentation
No edit summary
(Updating to match new version of source page)
 
(142 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

{{Docnav/fr
{{Docnav/fr
|[[Workbench_creation/fr|Création d'atelier]]
|[[Localisation/fr|Localisation]]
|[[Source_documentation/fr|Documentation du code source]]
|[[Source documentation/fr|Source documentation]]
}}
}}

{{TOCright}}
{{TOCright}}
<div class="mw-translate-fuzzy">
Cette page contient plusieurs modules python supplémentaires ou d'autres bouts de code qui peuvent être téléchargés gratuitement sur Internet, et ajouter des fonctionnalités à votre installation de FreeCAD.
</div>


<span id="Overview"></span>
== Présentation ==

Cette page contient plusieurs modules Python supplémentaires ou d'autres bouts de code qui peuvent être téléchargés gratuitement sur Internet, et ajouter des fonctionnalités à votre installation de FreeCAD.

<span id="PySide_(previously_PyQt)"></span>
== PySide (précédemment PyQt4) ==
== PySide (précédemment PyQt4) ==

* page officielle (PySide): [http://qt-project.org/wiki/PySide http://qt-project.org/wiki/PySide]
* Page officielle (PySide): [http://qt-project.org/wiki/PySide http://qt-project.org/wiki/PySide]
* licence: LGPL
* Licence : LGPL
* option, plusieurs modules sont nécessaires et d'autres modules peuvent être ajoutés : Draft, Arch, Ship, Plot, OpenSCAD, Spreadsheet
* Optionnel, plusieurs modules sont nécessaires et d'autres modules peuvent être ajoutés : Draft, Arch, Ship, Plot, OpenSCAD, Spreadsheet


PySide (auparavant PyQt) est requise par tous les modules de FreeCAD et pour accéder à l'interface Qt de FreeCAD. Il est déjà livré dans dans les versions FreeCAD, et est généralement installé automatiquement par FreeCAD sur Linux, l'installation peut se faire à partir des dépôts officiels. Si ces modules (Draft, Arch, etc) sont activés après l'installation de FreeCAD, cela signifie que PySide (auparavant PyQt) est déjà installé, et vous n'avez pas besoin de faire quoi que ce soit de plus.
PySide (auparavant PyQt) est requise par tous les modules de FreeCAD et pour accéder à l'interface Qt de FreeCAD. Il est déjà livré dans dans les versions FreeCAD, et est généralement installé automatiquement par FreeCAD sur Linux, l'installation peut se faire à partir des dépôts officiels. Si ces modules (Draft, Arch, etc) sont activés après l'installation de FreeCAD, cela signifie que PySide (auparavant PyQt) est déjà installé, et vous n'avez pas besoin de faire quoi que ce soit de plus.


'''Remarque :''' PyQt4 va devenir progressivement obsolète dans FreeCAD, après la version 0.13, la préférence ira sur [http://qt-project.org/wiki/PySide PySide], qui fait exactement le même travail, mais dispose d'une licence ('''LGPL''') plus compatible avec FreeCAD.
'''Remarque :''' FreeCAD s'est progressivement éloigné de PyQt après la version 0.13, en faveur de [http://qt-project.org/wiki/PySide PySide], qui fait exactement le même travail mais a une licence (LGPL) plus compatible avec FreeCAD.


<span id="Installation"></span>
===Installation===
===Installation===


==== Linux ====
==== Linux ====

La façon la plus simple d'installer PySide est de l'installer par le biais du gestionnaire de paquets de votre distribution. Sur les systèmes Debian / Ubuntu, le nom du package est généralement '''python-PySide''', tandis que sur les systèmes basés sur RPM il est nommé '''Pyside'''. Les dépendances nécessaires (Qt et SIP) seront pris en charge automatiquement.
La manière la plus simple d'installer PySide est de passer par le gestionnaire de paquets de votre distribution. Sur les systèmes Debian/Ubuntu, le nom du paquet est généralement ''python-PySide'', tandis que sur les systèmes basés sur RPM, il est nommé ''pyside''. Les dépendances nécessaires (Qt et SIP) seront prises en charge automatiquement.


==== Windows ====
==== Windows ====

Le programme peut être téléchargé à partir [http://qt-project.org/wiki/Category:LanguageBindings::PySide::Downloads PySide Downloads]. Vous aurez besoin d'installer les bibliothèques Qt et SIP avant d'installer PySide (à documenter).
Le programme peut être téléchargé à partir [http://qt-project.org/wiki/Category:LanguageBindings::PySide::Downloads PySide Downloads]. Vous aurez besoin d'installer les bibliothèques Qt et SIP avant d'installer PySide (à documenter).


==== MacOSX ====
==== MacOS ====
PyQt pour Mac doit être installé via homebrew ou port. Pour plus d'informations voir [[Compile on MacOS/fr#Installation_des_dépendances|Installation des dépendances]].


PySide sur Mac peut être installé via homebrew ou port. Voir [[Compile_on_MacOS/fr#Installation_des_dépendances|Installation des dépendances]].

<span id="Usage"></span>
===Utilisation===
===Utilisation===


Une fois installé, vous pouvez vérifier le bon fonctionne de l'installation, en tapant dans la console '''Python''' de FreeCAD :
Une fois installé, vous pouvez vérifier que tout fonctionne en tapant dans la console Python de FreeCAD :


{{Code|code=
{{Code|code=
Line 44: Line 55:
}}
}}


Maintenant, vous pouvez commencer l'exploration de l'interface avec la commande '''dir()'''.
Vous pouvez maintenant commencer à explorer l'interface avec la commande dir(). Vous pouvez ajouter de nouveaux éléments, comme un widget personnalisé, avec des commandes comme :
Vous pouvez ajouter de nouveaux éléments, comme un widget personnalisé, avec des commandes comme :


{{Code|code=
{{Code|code=
Line 73: Line 83:
}}
}}


<span id="Example_of_transition_from_PyQt4_and_PySide"></span>
===Exemple de transition de PyQt4 vers PySide===
===Exemple de transition de PyQt4 vers PySide===


PS: ces exemples d'erreurs ont été trouvées dans la transition de PyQt4 à PySide et ces corrections ont été faites, d'autres solutions sont certainement disponibles avec les exemples ci-dessus
PS : ces exemples d'erreurs ont été trouvées dans la transition de PyQt4 à PySide et ces corrections ont été faites, d'autres solutions sont certainement disponibles avec les exemples ci-dessus


{{Code|code=
{{Code|code=
Line 96: Line 107:
}}
}}


Pour accéder à l'interface FreeCAD, tapez:
Pour accéder à l'interface FreeCAD, tapez :
Vous pouvez ajouter de nouveaux éléments, comme un widget personnalisé, avec des commandes comme :
Vous pouvez ajouter de nouveaux éléments, comme un widget personnalisé, avec des commandes comme :


Line 108: Line 119:
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window
except Exception:
except Exception:
FCmw = FreeCADGui.getMainWindow() # PySide # the active qt window, = the freecad window since we are inside it
FCmw = FreeCADGui.getMainWindow() # PySide # the active qt window, = the freecad window since we are inside it
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window
}}
}}


Travailler avec Unicode :
Travailler avec Unicode :


{{Code|code=
{{Code|code=
Line 141: Line 152:
}}
}}


Travailler avec MessageBox:
Travailler avec MessageBox :


{{Code|code=
{{Code|code=
Line 148: Line 159:
try:
try:
diag.setWindowFlags(PyQt4.QtCore.Qt.WindowStaysOnTopHint) # PyQt4 # this function sets the window before
diag.setWindowFlags(PyQt4.QtCore.Qt.WindowStaysOnTopHint) # PyQt4 # this function sets the window before
except Exception:
except Exception:
diag.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint)# PySide # this function sets the window before
diag.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint)# PySide # this function sets the window before
# diag.setWindowModality(QtCore.Qt.ApplicationModal) # function has been disabled to promote "WindowStaysOnTopHint"
# diag.setWindowModality(QtCore.Qt.ApplicationModal) # function has been disabled to promote "WindowStaysOnTopHint"
Line 157: Line 168:


{{Code|code=
{{Code|code=
self.doubleSpinBox.setProperty("value", 10.0) # PyQt4
self.doubleSpinBox.setProperty("value", 10.0) # PyQt4
}}
}}


Line 163: Line 174:


{{Code|code=
{{Code|code=
self.doubleSpinBox.setValue(10.0) # PySide
self.doubleSpinBox.setValue(10.0) # PySide
}}
}}


Line 169: Line 180:


{{Code|code=
{{Code|code=
self.doubleSpinBox.setToolTip(_translate("MainWindow", "Coordinate placement Axis Y", None)) # PyQt4
self.doubleSpinBox.setToolTip(_translate("MainWindow", "Coordinate placement Axis Y", None)) # PyQt4
}}
}}


Line 175: Line 186:


{{Code|code=
{{Code|code=
self.doubleSpinBox.setToolTip(_fromUtf8("Coordinate placement Axis Y")) # PySide
self.doubleSpinBox.setToolTip(_fromUtf8("Coordinate placement Axis Y")) # PySide
}}
}}


Line 184: Line 195:
}}
}}


<span id="Additional_documentation"></span>
===Documentation===
=== Documentation complémentaire ===


* [https://doc.qt.io/qt.html#qtforpython Site de la documentation officielle de Qt]
Plus de tutoriels sur '''PyQt4''' (y compris sur la façon de construire des interfaces avec '''Qt Designer''' pour utiliser avec python) :


== Pivy ==
* [http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html API PyQt4] - La référence officielle sur l''''API de PyQt4'''


* Page d'accueil : [https://bitbucket.org/Coin3D/coin/wiki/Home https://bitbucket.org/Coin3D/coin/wiki/Home]
* [http://www.rkblog.rk.edu.pl/w/p/introduction-pyqt4/ Introduction PyQt4]- une simple introduction.
* Licence : BSD

* Optionnel mais nécessaire pour plusieurs modules de FreeCAD : Draft, Arch
* [http://www.zetcode.com/tutorials/pyqt4/ un tutoriel] - vraiment complet.

== Pivy ==
* homepage: [https://bitbucket.org/Coin3D/coin/wiki/Home https://bitbucket.org/Coin3D/coin/wiki/Home]
* license: BSD
* option, utilisé par tous les modules de FreeCAD: Draft, Arch


Pivy a besoin de plusieurs modules pour accéder à la vue 3D de FreeCAD. Pour les fenêtres, pivy est déjà fourni dans l'installateur de FreeCAD pour Linux, il est généralement installé automatiquement lorsque vous installez FreeCAD partir d'un référentiel officiel. Sur MacOSX, malheureusement, vous aurez besoin de compiler Pivy vous même.
Pivy est un module nécessaire pour accéder à la vue 3D de FreeCAD. Sous Windows, Pivy est déjà inclus dans le programme d'installation de FreeCAD, et sous Linux, il est généralement installé automatiquement lorsque vous installez FreeCAD à partir d'un dépôt officiel. Sur macOS, malheureusement, vous devrez compiler Pivy vous-même.


=== Installation ===
=== Installation ===


<span id="Prerequisites"></span>
==== Prérequis ====
==== Prérequis ====


Je crois, qu'avant de compiler '''[http://pivy.coin3d.org/ Pivy]''' vous devez avoir '''[http://www.coin3d.org/ Coin]''' et '''[http://www.coin3d.org/lib/soqt/releases/1.5.0 SoQt]''' d'installés.
Je pense qu'avant de compiler Pivy, vous devrez installer Coin et SoQt.


J'ai trouvé que pour la compilation sur '''Mac''', il suffisait d'installer le '''[http://www.coin3d.org/lib/plonesoftwarecenter_view Coin3 binary package]'''.<br />
J'ai constaté que pour construire sur Mac, il suffisait d'installer le [http://www.coin3d.org/lib/plonesoftwarecenter_view Coin3 binaire]. Tenter d'installer Coin à partir de MacPorts s'est avéré problématique : j'ai essayé d'ajouter un grand nombre de paquets X Windows et j'ai fini par me planter avec une erreur de script.
La tentative d'installation de '''Coin''' sur '''MacPorts''' était problématique : j'ai essayé d'ajouter un grand nombre de paquets X Windows, et, finalement, tout c'est terminé avec une erreur de script !


Pour Fedora, j'ai trouvé un '''RPM''' avec '''Coin3'''.
Pour Fedora, j'ai trouvé un RPM avec Coin3.


'''SoQt''', compilé à partir [http://www.coin3d.org/lib/soqt/releases/1.5.0 des sources] fonctionne très bien sur '''Mac et Linux'''.
SoQt compilé à partir de la [http://www.coin3d.org/lib/soqt/releases/1.5.0 source] fonctionne bien sur Mac et Linux.


====Debian & Ubuntu====
==== Debian & Ubuntu ====


Depuis '''Debian Squeeze''' et '''Ubuntu Lucid''', '''Pivy''' est disponible directement à partir des dépôts officiels, et, nous permet d'économiser beaucoup de tracas.<br />
À partir de Debian Squeeze et Ubuntu Lucid, pivy sera disponible directement depuis les dépôts officiels, ce qui nous évitera bien des tracas. En attendant, vous pouvez soit télécharger l'un des paquets que nous avons mis à disposition (pour Debian et Ubuntu Karmic) sur les pages de [[Download/fr|téléchargements]], soit le compiler vous-même.
En attendant, vous pouvez soit télécharger l'un des '''packages''' que nous avons fait (pour Debian et Ubuntu karmic), disponibles sur les pages de [[Download/fr|téléchargements]] , ou, vous pouvez le compiler vous-même.


La meilleure façon de compiler pivy facilement est de récupérer le paquet source debian pour pivy et de faire un paquet avec debuild. Il s'agit du même code source que celui du site officiel de pivy, mais les gens de debian ont fait plusieurs ajouts pour corriger des bogues. Il se compile également très bien sur ubuntu karmic : http://packages.debian.org/squeeze/python-pivy téléchargez le fichier .orig.gz et le fichier .diff.gz, puis décompressez les deux, et appliquez le .diff au source : allez dans le dossier source décompressé de pivy, et appliquez le patch .diff :
La meilleure façon de compiler facilement '''Pivy''', est de prendre le '''debian source package''' pour '''Pivy''', et, faire un '''package''' avec '''debuild'''.<br />
C'est le même code source que sur le site officiel de '''Pivy''', mais, les gens de '''Debian''' ont ajoutés plusieurs bug-fixing. Il compile également très bien sur : '''[http://packages.debian.org/squeeze/python-pivy Ubuntu Karmic]''' ... télécharger '''.orig.gz''' et '''.diff.gz''', décompressez le tout, puis appliquez '''.diff''' à la source :<br />
allez dans le dossier source de '''Pivy''' décompressé, et appliquez le patch '''.diff''' :


{{Code|code=
{{Code|code=
Line 233: Line 237:
}}
}}


pour avoir '''Pivy''', correctement compilé, avec un package officiellement installable. Ensuite, il suffit d'installer le package avec '''gdebi'''.
pour que pivy soit correctement intégré dans un paquetage installable officiel. Ensuite, il suffit d'installer le paquet avec gdebi.


<span id="Other_linux_distributions"></span>
====Autres distributions Linux====
====Autres distributions Linux====


Line 240: Line 245:


{{Code|code=
{{Code|code=
hg clone http://hg.sim.no/Pivy/default Pivy
hg clone http://hg.sim.no/Pivy/default Pivy
}}
}}


En Mars 2012, la dernière version était la '''pivy-0.5'''.
En Mars 2012, la dernière version était pivy-0.5.


Ensuite, vous avez besoin d'un outil appelé '''SWIG''' pour générer le code C++ pour les '''Python bindings'''. '''Pivy-0.5''' rapports qui a été testé seulement avec '''SWIG 1.3.31, 1.3.33, 1.3.35 et 1.3.40'''. Ainsi, vous pouvez télécharger une archive source pour l'une de ces anciennes versions de [http://www.swig.org SWIG].<br />
Ensuite, vous avez besoin d'un outil appelé SWIG pour générer le code C++ pour les liaisons Python. Pivy-0.5 indique qu'il n'a été testé qu'avec SWIG 1.3.31, 1.3.33, 1.3.35, et 1.3.40. Vous pouvez donc télécharger une archive des sources pour l'une de ces anciennes versions à partir de [http://www.swig.org http://www.swig.org]. Ensuite, décompressez-la et, à partir d'une ligne de commande, faites (en tant que root) :
Puis, décompressez-le, et, faites en ligne de commande (en tant que root) :


{{Code|code=
{{Code|code=
Line 254: Line 258:
}}
}}


Il faut quelques secondes pour la compilation.
Il faut quelques secondes pour la compilation.


Vous pouvez également essayer de compiler avec un SWIG plus récent. Depuis mars 2012, une version standard du dépôt est la 2.0.4. Pivy a un problème mineur de compilation avec SWIG 2.0.4 sur macOS (voir ci-dessous) mais semble se compiler correctement sur Fedora Core 15.
Alternativement, vous pouvez essayer avec une compilation plus récent '''SWIG'''. En Mars 2012, la version référentielle typique était '''2.0.4'''.<br />
'''Pivy''' a un problème de compilation avec les versions inférieures '''2.0.4''' de '''SWIG''' sur Mac OS ([[#Mac OS|voir ci-dessous]]), mais semble compiler correctement sur '''Fedora Core 15'''.


Après cela, allez dans le source '''Pivy''' et tapez :
Ensuite, allez dans les sources de Pivy et tapez :


{{Code|code=
{{Code|code=
python setup.py build
python setup.py build
}}
}}


pour créer les fichiers sources. Notez que cette génération de fichiers peut produire des milliers de mises en garde, mais j'espère qu'il n'y aura pas d'erreurs.
ce qui crée les fichiers sources. Notez que la compilation peut produire des milliers d'avertissements, mais avec un peu de chance, il n'y aura pas d'erreurs.


Ceci est probablement obsolète, mais vous risquez de rencontrer une erreur de compilation, ou, un '''"const char*"''' ne peut pas être converti en un '''"char*"'''.<br />
C'est probablement obsolète, mais vous pouvez rencontrer une erreur du compilateur lorsqu'un "const char*" ne peut pas être converti en un "char*". Pour corriger cela, il suffit d'écrire un "const" avant dans les lignes appropriées. Il y a six lignes à corriger.
Pour corriger cela, il vous suffit d'écrire une '''"const"''', dans les lignes appropriées, avant la génération. Il y a six lignes à corriger.


Après cela, installez (en tant que root) :
Après cela, installez (en tant que root) :
Line 278: Line 280:
Ça y est, pivy est installé.
Ça y est, pivy est installé.


====Mac OS====
==== MacOS ====


Ces instructions peuvent ne pas être complètes. Quelque chose plus ou moins comme cela a fonctionné pour '''OS 10.7 de Mars 2012'''. J'utilise '''[http://www.macports.org/ MacPorts]''' pour les dépôts, mais d'autres options devraient également fonctionner.
Ces instructions peuvent ne pas être complètes. Quelque chose d'approchant a fonctionné pour OS 10.7 à partir de mars 2012. J'utilise MacPorts pour les dépôts, mais d'autres options devraient également fonctionner.


En ce qui concerne linux, téléchargez les dernières sources :
En ce qui concerne linux, téléchargez les dernières sources :


{{Code|code=
{{Code|code=
hg clone http://hg.sim.no/Pivy/default Pivy
hg clone http://hg.sim.no/Pivy/default Pivy
}}
}}


Si vous n'avez pas '''hg''', vous pouvez l'obtenir à partir '''[http://www.macports.org/ MacPorts]''' :
Si vous n'avez pas hg, vous pouvez l'obtenir sur MacPorts :


{{Code|code=
{{Code|code=
Line 294: Line 296:
}}
}}


Puis, comme ci-dessus vous avez besoin '''[http://www.swig.org/ SWIG]'''.<br />
Ensuite, comme ci-dessus, vous avez besoin de SWIG. Il devrait s'agir d'une question de :
Faites :


{{Code|code=
{{Code|code=
Line 307: Line 308:
}}
}}


En Mars 2012, '''MacPorts SWIG''' est la version '''2.0.4'''. Comme il est indiqué ci-dessus pour Linux, il vaudrait mieux télécharger une version plus ancienne. '''SWIG 2.0.4''' semble avoir un bug qui empêche la compilation de '''Pivy'''.<br />
En mars 2012, MacPorts SWIG est en version 2.0.4. Comme indiqué ci-dessus pour linux, il est préférable de télécharger une version plus ancienne. SWIG 2.0.4 semble avoir un bug qui arrête la construction de Pivy. Voir le premier message de ce [https://sourceforge.net/mailarchive/message.php?msg_id=28114815 digest].
Regardez le premier message dans ce : ''[https://sourceforge.net/mailarchive/message.php?msg_id=28114815 digest]''


Cela peut être corrigé, en modifiant les 2 emplacements source et déréférencer : '''*arg4, *arg5''' à la place de '''arg4, arg5'''.<br />
Cela peut être corrigé en modifiant les deux sources pour ajouter des déréférences : *arg4, *arg5 à la place de arg4, arg5. Maintenant nous pouvons compiler Pivy :
Maintenant nous pouvons compiler '''Pivy''':


{{Code|code=
{{Code|code=
Line 318: Line 317:
}}
}}


====Windows====
==== Windows ====


En supposant que vous utilisiez '''Visual Studio 2005''' ou une version ultérieure, vous devrez ouvrir une invite de commande avec '''Visual Studio 2005 Command prompt''' dans le menu Outils.<br />
Si vous utilisez Visual Studio 2005 ou une version ultérieure, vous devez ouvrir une fenêtre de commande en cliquant sur "Visual Studio 2005 Command prompt" dans le menu Outils. Si l'interpréteur Python ne se trouve pas encore dans le chemin d'accès du système, procédez comme suit
Si l'interpréteur '''Python''' n'est pas encore dans le chemin système (PATH), faites :


{{Code|code=
{{Code|code=
Line 327: Line 325:
}}
}}


Pour que '''Pivy''' soit fonctionnel, vous devriez télécharger les dernières sources à partir du référentiel du projet :
Pour faire fonctionner pivy, vous devez obtenir les dernières sources depuis le dépôt du projet :


{{Code|code=
{{Code|code=
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy
}}
}}


Ensuite, vous avez besoin d'un outil appelé [http://www.swig.org/ SWIG] pour générer le code C++ pour les '''Python bindings'''. Il est recommandé d'utiliser la version '''1.3.25 de SWIG''', pas la dernière version, parceque, '''Pivy''' ne fonctionne pas correctement avec la version '''1.3.25'''. Télécharger le binaire pour la version '''1.3.25''' de '''[http://www.swig.org Swig]'''.<br />
Ensuite, vous avez besoin d'un outil appelé SWIG pour générer le code C++ pour les liaisons Python. Il est recommandé d'utiliser la version 1.3.25 de SWIG, et non la dernière version, car pour l'instant, pivy ne fonctionne correctement qu'avec la version 1.3.25. Téléchargez les binaires pour la version 1.3.25 à partir de [http://www.swig.org http://www.swig.org]. Décompressez-les et ajoutez-les au chemin d'accès du système à partir de la ligne de commande
Puis décompressez-le et à partir de la ligne de commande, ajoutez le chemin (path) du système


{{Code|code=
{{Code|code=
Line 340: Line 337:
}}
}}


et définir le chemin approprié à '''COINDIR''' :
et définir le chemin approprié de COINDIR :


{{Code|code=
{{Code|code=
Line 346: Line 343:
}}
}}


Sous Windows, le fichier de configuration '''Pivy''' attend '''SoWin''' au lieu de '''SoQt''' par défaut. Je n'ai pas trouvé de façon évidente pour compiler avec '''SoQt''', alors, j'ai modifié le fichier '''setup.py''' directement.<br />
Sous Windows, le fichier de configuration de pivy prévoit par défaut SoWin au lieu de SoQt. Je n'ai pas trouvé de moyen évident de construire avec SoQt, j'ai donc modifié le fichier setup.py directement. A la ligne 200, il suffit de supprimer la partie "sowin" : ("gui._sowin", "sowin-config", "pivy.gui.") (ne pas supprimer la parenthèse fermante).
A la ligne 200 il suffit de retirer la partie '''sowin''' : '''('gui._sowin', 'sowin-config', 'pivy.gui.') (ne pas enlever la parenthèse fermante ! )'''.


Après cela, allez dans le source de '''pivy''' et tapez :
Ensuite, allez dans les sources de Pivy et tapez :


{{Code|code=
{{Code|code=
python setup.py build
python setup.py build
}}
}}


qui crée les fichiers source. Vous pouvez rencontrer une erreur de compilation, cause, '''plusieurs fichiers d'en-tête n'ont pas été trouvés'''.<br />
qui crée les fichiers sources. Il se peut que vous rencontriez une erreur du compilateur, plusieurs fichiers d'en-tête n'ayant pu être trouvés. Dans ce cas, ajustez la variable INCLUDE
Dans ce cas, réglez la variable '''INCLUDE''' comme ceci :


{{Code|code=
{{Code|code=
Line 363: Line 357:
}}
}}


et si les en-têtes '''soqt''', ne sont pas au même endroit que les en-têtes '''Coin''', faites aussi ceci :
et si les en-têtes SoQt ne sont pas au même endroit que les en-têtes Coin également


{{Code|code=
{{Code|code=
Line 369: Line 363:
}}
}}


et finalement, pour les en-têtes '''Qt''' faites :
et enfin les en-têtes Qt


{{Code|code=
{{Code|code=
Line 375: Line 369:
}}
}}


Si vous utilisez '''Express Edition of Visual Studio''', vous pouvez obtenir une exception '''Python keyerror'''.<br />
Si vous utilisez Express Edition of Visual Studio, il se peut que vous obteniez une exception Python keyerror. Dans ce cas, vous devez modifier quelques éléments du fichier msvccompiler.py situé dans votre installation Python.
Dans ce cas, vous devez modifier de petites choses dans '''msvccompiler.py''', qui se trouve, dans votre installation Python.


Aller à la ligne 122 et remplacez la ligne :
Aller à la ligne 122 et remplacez la ligne :
Line 390: Line 383:
}}
}}


Réessayez ensuite. Si vous obtenez une deuxième erreur du type
Puis réessayez.<br />
Si vous obtenez une deuxième erreur comme :


{{Code|code=
{{Code|code=
Line 397: Line 389:
}}
}}


vous devez également remplacer la ligne 128 comme ceci :
vous devez également remplacer la ligne 128


{{Code|code=
{{Code|code=
Line 409: Line 401:
}}
}}


Réessayez encore une fois.<br />
Réessayez une nouvelle fois. Si vous obtenez à nouveau une erreur du type
Si vous obtenez de nouveau une erreur comme :


{{Code|code=
{{Code|code=
Line 416: Line 407:
}}
}}


alors vous devriez vérifier les variables d'environnement '''DISTUTILS_USE_SDK''' et '''MSSDK''' avec :
Vous devez alors vérifier les variables d'environnement DISTUTILS_USE_SDK et MSSDK avec


{{Code|code=
{{Code|code=
Line 423: Line 414:
}}
}}


Si ce n'est pas toujours pas arrangé, il suffit de définir à 1 :
S'il n'est pas encore arrangé, il suffit de le définir, par exemple à 1.


{{Code|code=
{{Code|code=
Line 430: Line 421:
}}
}}


Il se peut que vous rencontriez une erreur du compilateur lorsqu'un "const char*" ne peut pas être converti en "char*". Pour corriger cette erreur, il suffit d'écrire un "const" avant les lignes appropriées. Il y a six lignes à corriger. Après cela, copiez le répertoire pivy généré à un endroit où l'interpréteur Python de FreeCAD peut le trouver.
Maintenant, vous pouvez rencontrer une erreur de compilation, ou un '''const char*''' ne peut pas être converti en un '''char*'''.<br />
Pour corriger cela il vous suffit d'écrire un '''const''' avant, dans les lignes appropriées, il y a six lignes à corriger.<br />
Après copiez le répertoire généré par '''Pivy''' dans un endroit où l'interpréteur '''Python''' de FreeCAD peut le trouver.


<span id="Usage"></span>
=== Utilisation ===
===Utilisation===
Pour vérifier si pivy est correctement installé :

Pour vérifier si Pivy est correctement installé :


{{Code|code=
{{Code|code=
Line 441: Line 432:
}}
}}


Pour avoir accès à Pivy à partir de la scénographique de FreeCAD, procédez comme ceci:
Pour avoir accès à Pivy à partir de la scénographique de FreeCAD, procédez comme ceci :


{{Code|code=
{{Code|code=
from pivy import coin
from pivy import coin
App.newDocument() # Open a document and a view
App.newDocument() # Open a document and a view
view = Gui.ActiveDocument.ActiveView
view = Gui.ActiveDocument.ActiveView
FCSceneGraph = view.getSceneGraph() # returns a pivy Python object that holds a SoSeparator, the main "container" of the Coin scenegraph
FCSceneGraph = view.getSceneGraph() # returns a pivy Python object that holds a SoSeparator, the main "container" of the Coin scenegraph
FCSceneGraph.addChild(coin.SoCube()) # add a box to scene
FCSceneGraph.addChild(coin.SoCube()) # add a box to scene
}}
}}


Vous pouvez maintenant explorer la '''FCSceneGraph''' avec la commande '''dir()'''.
Vous pouvez maintenant explorer le FCSceneGraph à l'aide de la commande dir().


<span id="Additonal_Documentation"></span>
===Documentation===
=== Documentation complémentaire ===


Malheureusement, la documentation sur '''Pivy''' est "pour le moment" presque inexistante sur le net. Mais vous pouvez trouver de la documentation très utile sur '''Coin''', car '''Pivy''' a simplement traduit les fonctions, '''Coin''', des nœuds et des méthodes en '''Python''', les noms sont conservés (mêmes noms) ainsi que les propriétés ne sont différentes que par la syntaxe entre le '''C''' et '''Python''' :
Malheureusement, la documentation sur pivy est encore presque inexistante sur le net. Mais vous pourriez trouver la documentation Coin utile, puisque pivy traduit simplement les fonctions de Coin, les noeuds et les méthodes en Python, tout en gardant le même nom et les mêmes propriétés, en gardant à l'esprit la différence de syntaxe entre le C et Python :


* https://bitbucket.org/Coin3D/coin/wiki/Documentation - Coin3D API Reference
* https://bitbucket.org/Coin3D/coin/wiki/Documentation - Coin3D API Reference
* http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html - The Inventor Mentor - La "bible" de Inventor langage de description de scène.
* http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html - The Inventor Mentor - La "bible" de Inventor langage de description de scène.


Vous pouvez également consulter le fichier '''Draft.py''' dans le dossier '''FreeCAD Mod/Draft''', car '''Pivy''' est fortement utilisé.
Vous pouvez également consulter le fichier Draft.py dans le dossier FreeCAD Mod/Draft, car il utilise beaucoup pivy.


== pyCollada ==
== pyCollada ==
* homepage: http://pycollada.github.com
* license: BSD
* option, est nécessaire pour permettre l'importation et l'exportation de fichiers Collada (.DAE)


* Page d'accueil : http://pycollada.github.com
'''[http://pycollada.github.com pyCollada]''' est une bibliothèque '''Python''' qui permet aux programmes de lire et d'écrire des fichiers '''[http://en.wikipedia.org/wiki/COLLADA Collada (*.DAE)]'''. Lorsque '''pyCollada''' est installé sur votre système, FreeCAD ({{version|0.13}}) le détecte et ajoute les options d'importation et d'exportation, qui permettent l'ouverture et l'enregistrement de fichiers au format '''Collada'''.
* Licence : BSD
* Optionnel, nécessaire pour permettre l'importation et l'exportation de fichiers Collada (.DAE)


pyCollada est une bibliothèque Python qui permet aux programmes de lire et d'écrire des fichiers [https://fr.wikipedia.org/wiki/Collaborative_Design_Activity Collada (*.DAE)]. Lorsque pyCollada est installé sur votre système, FreeCAD sera en mesure de gérer l'importation et l'exportation dans le format de fichier Collada.

<span id="Installation"></span>
===Installation===
===Installation===


==== Linux ====
'''Pycollada''' n'est généralement pas encore disponible dans les dépôts des distributions Linux, mais puisqu'il est fait uniquement en '''Python''', il ne nécessite pas de compilation, et est facile à installer.<br />
Vous avez 2 façons de l'installer, soit directement à partir du '''pycollada git repository''' officiel, ou avec l'outil '''easy_install'''.

====Linux====

Dans les deux cas, vous aurez besoin des paquetages suivants, installés d'avance sur votre système :


{{Code|code=
{{Code|code=
sudo apt-get install python3-collada
python-lxml
python-numpy
python-dateutil
}}
}}


Vous pouvez vérifier si pycollada a été correctement installé en émettant dans une console Python :
=====Depuis le dépôt git '''(pycollada git repository)'''=====

{{Code|code=
git clone git://github.com/pycollada/pycollada.git pycollada
cd pycollada
sudo python setup.py install
}}

=====Avec easy_install '''(easy_install)'''=====

En supposant que vous avez déjà installé complètement '''Python''', l'utilitaire '''easy_install''' doit être déjà présent :

{{Code|code=
easy_install pycollada
}}

Vous devez vous assurer que '''pycollada''', est correctement installé, en utilisant la commande suivante dans la console Python :


{{Code|code=
{{Code|code=
Line 506: Line 477:
}}
}}


Si la commande ne retourne aucun message d'erreur, alors tout est OK.
S'il ne renvoie rien (pas de message d'erreur), tout va bien.


==== Windows ====
==== Windows ====
Line 512: Line 483:
Pycollada est inclus sur Windows depuis la version 0.15 et dans les versions de développement de FreeCAD, donc aucune étape supplémentaire n'est nécessaire.
Pycollada est inclus sur Windows depuis la version 0.15 et dans les versions de développement de FreeCAD, donc aucune étape supplémentaire n'est nécessaire.


==== Mac OS ====
==== MacOS ====


Si vous utilisez l'accumulation des Homebrew FreeCAD vous pouvez installer pycollada dans votre système Python en utilisant pip.
Si vous utilisez l'accumulation des Homebrew FreeCAD vous pouvez installer pycollada dans votre système Python en utilisant pip.
Line 543: Line 514:
== IfcOpenShell ==
== IfcOpenShell ==


* homepage: http://www.ifcopenshell.org
* Page d'accueil : http://www.ifcopenshell.org
* license: LGPL
* Licence : LGPL
* option, requis pour étendre les capacités d'importation de fichiers IFC
* Optionnel, nécessaire pour étendre les capacités d'importation des fichiers IFC


IFCOpenShell, est une bibliothèque actuellement en développement, ce qui permet d'importer (et bientôt d'exporter) [http://fr.wikipedia.org/wiki/Industry_Foundation_Classes Industry foundation Classes (*.Fichiers IFC)].
IFCOpenShell est une bibliothèque en cours de développement qui permet d'importer (et bientôt d'exporter) des fichiers [http://fr.wikipedia.org/wiki/Industry_Foundation_Classes IFC]. IFC est une extension du format STEP et devient la norme dans les flux de travail [http://fr.wikipedia.org/wiki/Building_Information_Modeling BIM]. Lorsque ifcopenshell est correctement installé sur votre système, l'[[Arch_Workbench/fr|atelier Arch]] de FreeCAD le détecte et l'utilise pour importer des fichiers IFC, au lieu de son importateur rudimentaire intégré. Comme ifcopenshell est basé sur OpenCasCade, comme FreeCAD, la qualité de l'importation est très élevée, produisant une géométrie solide de haute qualité.

Ceci est une extension pour le format [http://fr.wikipedia.org/wiki/Standard_pour_l%27%C3%A9change_de_donn%C3%A9es_de_produit STEP], et, devient la norme dans les workflows [http://fr.wikipedia.org/wiki/Building_Information_Modeling BIM]. Lorsque '''ifcopenshell''' est correctement installé sur votre système, le {{KEY|[[Image:Arch_Wall.png|16px|text-top=Arch_Module|link=Arch_Module/fr]] [[Arch_Module/fr|Module Arch]]}} de FreeCAD le détectera, et, l'utilisera pour importer des fichiers '''IFC'''. Étant donné qu''''ifcopenshell''' est basé sur OpenCasCade, comme FreeCAD, la qualité de l'importation est très élevée, en produisant une géométrie de solides de haute qualité.


<span id="Installation"></span>
===Installation===
===Installation===


Étant donné que ''''ifcopenshell''' est assez nouveau, vous devrez probablement le compiler vous-même.
Comme ifcopenshell est assez récent, vous devrez probablement le compiler vous-même.


====Linux====
==== Linux ====


Vous aurez besoin de deux ou trois paquets de développement, installés sur votre système afin de rassembler les ifcopenshell :
Vous aurez besoin de quelques paquets de développement installés sur votre système afin de compiler ifcopenshell :


{{Code|code=
{{Code|code=
Line 581: Line 551:
}}
}}


ou, si vous utilisez '''oce''' au lieu d''''opencascade''' :
ou, si vous utilisez oce au lieu d'opencascade :


{{Code|code=
{{Code|code=
cmake -DOCC_INCLUDE_DIR=/usr/include/oce ../ifcopenshell/cmake
cmake -DOCC_INCLUDE_DIR=/usr/include/oce ../ifcopenshell/cmake
}}
}}


Étant donné que '''ifcopenshell''' est fait principalement pour [http://www.blender.org/ Blender], il utilise '''python3''' par défaut. Pour l'utiliser à l'intérieur de FreeCAD, vous devez le compiler avec la même version de Python qui est utilisé dans FreeCAD. Vous devrez peut-être forcer les paramètres avec la version de '''Python''' et '''cmake''' (réglez la version de Python avec la vôtre) :
Comme ifcopenshell est principalement conçu pour Blender, il utilise Python3 par défaut. Pour l'utiliser dans FreeCAD, vous devez le compiler avec la même version de Python que celle utilisée par FreeCAD. Il se peut donc que vous deviez forcer la version de Python avec des paramètres cmake supplémentaires (ajustez la version de Python à la vôtre) :


{{Code|code=
{{Code|code=
Line 600: Line 570:
}}
}}


Vous pouvez vérifier que '''ifcopenshell''', a été correctement installé en tapant dans la console Python :
Vous pouvez vérifier que ifcopenshell a été correctement installé en lançant une commande dans une console Python :


{{Code|code=
{{Code|code=
Line 610: Line 580:
==== Windows ====
==== Windows ====


'''Note''': les installateurs officiels FreeCAD obtenus à partir de la page du site Web/github de FreeCAD contiennent déjà ifcopenshell.
'''Remarque''' : les installateurs officiels de FreeCAD obtenus à partir du site web/github de FreeCAD contiennent déjà ifcopenshell.


'' Documentation copiée à partir du fichier README IfcOpenShell''
''Documentation copiée à partir du fichier README IfcOpenShell''


Il est conseillé aux utilisateurs d'utiliser le fichier .sln de Visual Studio dans le dossier win/. Pour les utilisateurs de Windows, une version préconstruite d'Open CASCADE est disponible sur le site web [http://opencascade.org opencascade]. Téléchargez et installez cette version et fournissez les chemins d'accès aux fichiers d'en-tête et de bibliothèque d'Open CASCADE à MS Visual Studio C++.
Les utilisateurs sont priés d'utiliser le fichier '''.sln''' de Visual Studio qui se trouve dans '''win/folder'''.


Pour compiler le wrapper IfcPython, il est nécessaire d'installer SWIG. Veuillez télécharger la dernière version de swigwin à partir du [https://www.swig.org/download.html site de swig]. Après avoir extrait le fichier .zip, ajoutez le dossier extrait à la variable d'environnement PATH. Python doit être installé, veuillez fournir les chemins d'inclusion et de bibliothèque à Visual Studio.
Pour les utilisateurs de Windows une version pré-construite Open CASCADE est disponible sur le site d'[http://opencascade.org OpenCascade]. Téléchargez, et, installez cette version dans le chemin d'accès d'Open CASCADE, et, des fichiers de la bibliothèque de MS Visual Studio C++.

Pour créer le '''IfcPython wrapper''', '''SWIG''' doit être installé. Téléchargez la dernière version de [http://www.swig.org/download.html swigwin]. Après avoir extrait le fichier '''.zip''', veuillez ajouter le dossier à la variable '''d'environnement PATH'''. Python doit être installé, veuillez fournir les chemins d'accès des fichiers include, et, bibliothèque pour Visual Studio.


<span id="Links"></span>
===Liens===
===Liens===
Tutoriel [[Import/Export_IFC_-_compiling_IfcOpenShell|Import/Export IFC - compiling IfcOpenShell]]


Tutoriel [[Import/Export_IFC_-_compiling_IfcOpenShell/fr|Importer/Exporter IFC - compiler IfcOpenShell]]
== ODA Converter (précédemment Teigha Converter) ==


== LazyLoader ==
* page d'accueil: https://www.opendesign.com/guestfiles/oda_file_converter
* licence: freeware
* optionnel, utilisé pour permettre l'importation et l'exportation de fichiers DWG


LazyLoader est un module Python qui permet un chargement différé, tout en continuant à importer en haut du script. C'est utile si vous importez un autre module qui est lent et qui est utilisé plusieurs fois dans le script. L'utilisation de LazyLoader peut améliorer les temps de démarrage d'un atelier mais le module devra toujours être chargé lors de la première utilisation.
Le convertisseur ODA Converter est un petit utilitaire disponible gratuitement qui permet de convertir plusieurs versions de fichiers DWG et DXF. FreeCAD peut l'utiliser pour permettre l'importation et l'exportation de fichiers DWG, en convertissant les fichiers DWG au format DXF de manière transparente, puis utiliser son importateur DXF standard pour importer le contenu du fichier. Les restrictions de l'[[Draft_DXF/fr|importateur DXF]] s'appliquent.


=== Installation ===
<span id="Installation"></span>
===Installation===
S'installe sur toutes les plateformes, par l'installation du paquet approprié disponible à https://www.opendesign.com/guestfiles/oda_file_converter. Après l'installation, si l'utilitaire n'est pas trouvé automatiquement par FreeCAD, vous devrez configurer manuellement le chemin de l'exécutable du convertisseur via le menu Édition → Préférences → Importer-Exporter → DWG et renseignez le champs "Chemin d’accès du convertisseur de fichier Teiga".


LazyLoader est inclus avec FreeCAD v0.19.
<div class="mw-translate-fuzzy">

{{docnav/fr
<span id="Usage"></span>
|[[Localisation/fr|Localisation]]
===Utilisation===
|[[Source documentation/fr|Source documentation]]

Vous devrez importer LazyLoader puis modifier l'importation du module que vous souhaitez différer.

{{Code|code=
from lazy_loader.lazy_loader import LazyLoader
Part = LazyLoader('Part', globals(), 'Part')
}}
}}
La variable Part est la façon dont le module est nommé dans votre script. Vous pouvez répliquer "import Part as P" (importer une pièce en P) en modifiant la variable.
</div>


{{Code|code=
{{Userdocnavi/fr}}
P = LazyLoader('Part', globals(), 'Part')
}}
Vous pouvez également importer un module à partir d'un package.
{{Code|code=
utils = LazyLoader('PathScripts', globals(), 'PathScripts.PathUtils')
}}
Vous ne pouvez pas importer des fonctions individuelles, seulement des modules entiers.


<span id="Links"></span>
[[Category:Python Code/fr]]
=== Liens ===


* Source d'origine : https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/util/lazy_loader.py
[[Category:Developer Documentation/fr]]
* Plus d'explications : https://wil.yegelwel.com/lazily-importing-python-modules/
* Code dans le code source de FreeCAD : https://github.com/FreeCAD/FreeCAD/tree/master/src/3rdParty/lazy_loader
* Discussion du forum : https://forum.freecadweb.org/viewtopic.php?f=10&t=45298


{{Docnav/fr
|[[Workbench_creation/fr|Création d'atelier]]
|[[Source_documentation/fr|Documentation du code source]]
}}


{{Userdocnavi{{#translation:}}}}
{{clear}}
[[Category:Python Code{{#translation:}}]]
[[Category:Developer Documentation{{#translation:}}]]

Latest revision as of 18:15, 14 November 2023

Présentation

Cette page contient plusieurs modules Python supplémentaires ou d'autres bouts de code qui peuvent être téléchargés gratuitement sur Internet, et ajouter des fonctionnalités à votre installation de FreeCAD.

PySide (précédemment PyQt4)

  • Page officielle (PySide): http://qt-project.org/wiki/PySide
  • Licence : LGPL
  • Optionnel, plusieurs modules sont nécessaires et d'autres modules peuvent être ajoutés : Draft, Arch, Ship, Plot, OpenSCAD, Spreadsheet

PySide (auparavant PyQt) est requise par tous les modules de FreeCAD et pour accéder à l'interface Qt de FreeCAD. Il est déjà livré dans dans les versions FreeCAD, et est généralement installé automatiquement par FreeCAD sur Linux, l'installation peut se faire à partir des dépôts officiels. Si ces modules (Draft, Arch, etc) sont activés après l'installation de FreeCAD, cela signifie que PySide (auparavant PyQt) est déjà installé, et vous n'avez pas besoin de faire quoi que ce soit de plus.

Remarque : FreeCAD s'est progressivement éloigné de PyQt après la version 0.13, en faveur de PySide, qui fait exactement le même travail mais a une licence (LGPL) plus compatible avec FreeCAD.

Installation

Linux

La manière la plus simple d'installer PySide est de passer par le gestionnaire de paquets de votre distribution. Sur les systèmes Debian/Ubuntu, le nom du paquet est généralement python-PySide, tandis que sur les systèmes basés sur RPM, il est nommé pyside. Les dépendances nécessaires (Qt et SIP) seront prises en charge automatiquement.

Windows

Le programme peut être téléchargé à partir PySide Downloads. Vous aurez besoin d'installer les bibliothèques Qt et SIP avant d'installer PySide (à documenter).

MacOS

PySide sur Mac peut être installé via homebrew ou port. Voir Installation des dépendances.

Utilisation

Une fois installé, vous pouvez vérifier que tout fonctionne en tapant dans la console Python de FreeCAD :

import PySide

Pour accéder à l'interface de FreeCAD, tapez :

from PySide import QtCore,QtGui
FreeCADWindow = FreeCADGui.getMainWindow()

Vous pouvez maintenant commencer à explorer l'interface avec la commande dir(). Vous pouvez ajouter de nouveaux éléments, comme un widget personnalisé, avec des commandes comme :

FreeCADWindow.addDockWidget(QtCore.Qt.RghtDockWidgetArea,my_custom_widget)

Travailler avec Unicode :

text = text.encode('utf-8')

Travailler avec QFileDialog et OpenFileName :

path = FreeCAD.ConfigGet("AppHomePath")
#path = FreeCAD.ConfigGet("UserAppData")
OpenName, Filter = PySide.QtGui.QFileDialog.getOpenFileName(None, "Read a txt file", path, "*.txt")

Travailler avec QFileDialog et SaveFileName :

path = FreeCAD.ConfigGet("AppHomePath")
#path = FreeCAD.ConfigGet("UserAppData")
SaveName, Filter = PySide.QtGui.QFileDialog.getSaveFileName(None, "Save a file txt", path, "*.txt")

Exemple de transition de PyQt4 vers PySide

PS : ces exemples d'erreurs ont été trouvées dans la transition de PyQt4 à PySide et ces corrections ont été faites, d'autres solutions sont certainement disponibles avec les exemples ci-dessus

try:
    import PyQt4                                        # PyQt4
    from PyQt4 import QtGui ,QtCore                     # PyQt4
    from PyQt4.QtGui import QComboBox                   # PyQt4
    from PyQt4.QtGui import QMessageBox                 # PyQt4
    from PyQt4.QtGui import QTableWidget, QApplication  # PyQt4
    from PyQt4.QtGui import *                           # PyQt4
    from PyQt4.QtCore import *                          # PyQt4
except Exception:
    import PySide                                       # PySide
    from PySide import QtGui ,QtCore                    # PySide
    from PySide.QtGui import QComboBox                  # PySide
    from PySide.QtGui import QMessageBox                # PySide
    from PySide.QtGui import QTableWidget, QApplication # PySide
    from PySide.QtGui import *                          # PySide
    from PySide.QtCore import *                         # PySide

Pour accéder à l'interface FreeCAD, tapez : Vous pouvez ajouter de nouveaux éléments, comme un widget personnalisé, avec des commandes comme :

myNewFreeCADWidget = QtGui.QDockWidget()          # create a new dockwidget
myNewFreeCADWidget.ui = Ui_MainWindow()           # myWidget_Ui()             # load the Ui script
myNewFreeCADWidget.ui.setupUi(myNewFreeCADWidget) # setup the ui
try:
    app = QtGui.qApp                              # PyQt4 # the active qt window, = the freecad window since we are inside it
    FCmw = app.activeWindow()                     # PyQt4 # the active qt window, = the freecad window since we are inside it
    FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window
except Exception:
    FCmw = FreeCADGui.getMainWindow()             # PySide # the active qt window, = the freecad window since we are inside it
    FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window

Travailler avec Unicode :

try:
    text = unicode(text, 'ISO-8859-1').encode('UTF-8')  # PyQt4
except Exception:
    text = text.encode('utf-8')                         # PySide

Travailler avec QFileDialog et OpenFileName :

OpenName = ""
try:
    OpenName = QFileDialog.getOpenFileName(None,QString.fromLocal8Bit("Lire un fichier FCInfo ou txt"),path,"*.FCInfo *.txt") # PyQt4
except Exception:
    OpenName, Filter = PySide.QtGui.QFileDialog.getOpenFileName(None, "Lire un fichier FCInfo ou txt", path, "*.FCInfo *.txt")#PySide

Travailler avec QFileDialog et SaveFileName :

SaveName = ""
try:
    SaveName = QFileDialog.getSaveFileName(None,QString.fromLocal8Bit("Sauver un fichier FCInfo"),path,"*.FCInfo") # PyQt4
except Exception:
    SaveName, Filter = PySide.QtGui.QFileDialog.getSaveFileName(None, "Sauver un fichier FCInfo", path, "*.FCInfo")# PySide

Travailler avec MessageBox :

def errorDialog(msg):
    diag = QtGui.QMessageBox(QtGui.QMessageBox.Critical,u"Error Message",msg )
    try:
        diag.setWindowFlags(PyQt4.QtCore.Qt.WindowStaysOnTopHint) # PyQt4 # this function sets the window before
    except Exception:
        diag.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint)# PySide # this function sets the window before
#    diag.setWindowModality(QtCore.Qt.ApplicationModal)       # function has been disabled to promote "WindowStaysOnTopHint"
    diag.exec_()

Travailler avec setProperty (PyQt4) et setValue (PySide)

self.doubleSpinBox.setProperty("value", 10.0) # PyQt4

remplacer par :

self.doubleSpinBox.setValue(10.0) # PySide

Travailler avec setToolTip

self.doubleSpinBox.setToolTip(_translate("MainWindow", "Coordinate placement Axis Y", None)) # PyQt4

remplacer par :

self.doubleSpinBox.setToolTip(_fromUtf8("Coordinate placement Axis Y")) # PySide

ou

self.doubleSpinBox.setToolTip(u"Coordinate placement Axis Y.")# PySide

Documentation complémentaire

Pivy

Pivy est un module nécessaire pour accéder à la vue 3D de FreeCAD. Sous Windows, Pivy est déjà inclus dans le programme d'installation de FreeCAD, et sous Linux, il est généralement installé automatiquement lorsque vous installez FreeCAD à partir d'un dépôt officiel. Sur macOS, malheureusement, vous devrez compiler Pivy vous-même.

Installation

Prérequis

Je pense qu'avant de compiler Pivy, vous devrez installer Coin et SoQt.

J'ai constaté que pour construire sur Mac, il suffisait d'installer le Coin3 binaire. Tenter d'installer Coin à partir de MacPorts s'est avéré problématique : j'ai essayé d'ajouter un grand nombre de paquets X Windows et j'ai fini par me planter avec une erreur de script.

Pour Fedora, j'ai trouvé un RPM avec Coin3.

SoQt compilé à partir de la source fonctionne bien sur Mac et Linux.

Debian & Ubuntu

À partir de Debian Squeeze et Ubuntu Lucid, pivy sera disponible directement depuis les dépôts officiels, ce qui nous évitera bien des tracas. En attendant, vous pouvez soit télécharger l'un des paquets que nous avons mis à disposition (pour Debian et Ubuntu Karmic) sur les pages de téléchargements, soit le compiler vous-même.

La meilleure façon de compiler pivy facilement est de récupérer le paquet source debian pour pivy et de faire un paquet avec debuild. Il s'agit du même code source que celui du site officiel de pivy, mais les gens de debian ont fait plusieurs ajouts pour corriger des bogues. Il se compile également très bien sur ubuntu karmic : http://packages.debian.org/squeeze/python-pivy téléchargez le fichier .orig.gz et le fichier .diff.gz, puis décompressez les deux, et appliquez le .diff au source : allez dans le dossier source décompressé de pivy, et appliquez le patch .diff :

patch -p1 < ../pivy_0.5.0~svn765-2.diff

alors

debuild

pour que pivy soit correctement intégré dans un paquetage installable officiel. Ensuite, il suffit d'installer le paquet avec gdebi.

Autres distributions Linux

D'abord, téléchargez les dernières sources du project's repository :

hg clone http://hg.sim.no/Pivy/default Pivy

En Mars 2012, la dernière version était pivy-0.5.

Ensuite, vous avez besoin d'un outil appelé SWIG pour générer le code C++ pour les liaisons Python. Pivy-0.5 indique qu'il n'a été testé qu'avec SWIG 1.3.31, 1.3.33, 1.3.35, et 1.3.40. Vous pouvez donc télécharger une archive des sources pour l'une de ces anciennes versions à partir de http://www.swig.org. Ensuite, décompressez-la et, à partir d'une ligne de commande, faites (en tant que root) :

./configure
make
make install (or checkinstall if you use it)

Il faut quelques secondes pour la compilation.

Vous pouvez également essayer de compiler avec un SWIG plus récent. Depuis mars 2012, une version standard du dépôt est la 2.0.4. Pivy a un problème mineur de compilation avec SWIG 2.0.4 sur macOS (voir ci-dessous) mais semble se compiler correctement sur Fedora Core 15.

Ensuite, allez dans les sources de Pivy et tapez :

python setup.py build

ce qui crée les fichiers sources. Notez que la compilation peut produire des milliers d'avertissements, mais avec un peu de chance, il n'y aura pas d'erreurs.

C'est probablement obsolète, mais vous pouvez rencontrer une erreur du compilateur lorsqu'un "const char*" ne peut pas être converti en un "char*". Pour corriger cela, il suffit d'écrire un "const" avant dans les lignes appropriées. Il y a six lignes à corriger.

Après cela, installez (en tant que root) :

python setup.py install (or checkinstall python setup.py install)

Ça y est, pivy est installé.

MacOS

Ces instructions peuvent ne pas être complètes. Quelque chose d'approchant a fonctionné pour OS 10.7 à partir de mars 2012. J'utilise MacPorts pour les dépôts, mais d'autres options devraient également fonctionner.

En ce qui concerne linux, téléchargez les dernières sources :

hg clone http://hg.sim.no/Pivy/default Pivy

Si vous n'avez pas hg, vous pouvez l'obtenir sur MacPorts :

port install mercurial

Ensuite, comme ci-dessus, vous avez besoin de SWIG. Il devrait s'agir d'une question de :

port install swig

J'ai trouvé que j'avais besoin aussi de faire :

port install swig-python

En mars 2012, MacPorts SWIG est en version 2.0.4. Comme indiqué ci-dessus pour linux, il est préférable de télécharger une version plus ancienne. SWIG 2.0.4 semble avoir un bug qui arrête la construction de Pivy. Voir le premier message de ce digest.

Cela peut être corrigé en modifiant les deux sources pour ajouter des déréférences : *arg4, *arg5 à la place de arg4, arg5. Maintenant nous pouvons compiler Pivy :

python setup.py build
sudo python setup.py install

Windows

Si vous utilisez Visual Studio 2005 ou une version ultérieure, vous devez ouvrir une fenêtre de commande en cliquant sur "Visual Studio 2005 Command prompt" dans le menu Outils. Si l'interpréteur Python ne se trouve pas encore dans le chemin d'accès du système, procédez comme suit

set PATH=path_to_python_2.5;%PATH%

Pour faire fonctionner pivy, vous devez obtenir les dernières sources depuis le dépôt du projet :

svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy

Ensuite, vous avez besoin d'un outil appelé SWIG pour générer le code C++ pour les liaisons Python. Il est recommandé d'utiliser la version 1.3.25 de SWIG, et non la dernière version, car pour l'instant, pivy ne fonctionne correctement qu'avec la version 1.3.25. Téléchargez les binaires pour la version 1.3.25 à partir de http://www.swig.org. Décompressez-les et ajoutez-les au chemin d'accès du système à partir de la ligne de commande

set PATH=path_to_swig_1.3.25;%PATH%

et définir le chemin approprié de COINDIR :

set COINDIR=path_to_coin

Sous Windows, le fichier de configuration de pivy prévoit par défaut SoWin au lieu de SoQt. Je n'ai pas trouvé de moyen évident de construire avec SoQt, j'ai donc modifié le fichier setup.py directement. A la ligne 200, il suffit de supprimer la partie "sowin" : ("gui._sowin", "sowin-config", "pivy.gui.") (ne pas supprimer la parenthèse fermante).

Ensuite, allez dans les sources de Pivy et tapez :

python setup.py build

qui crée les fichiers sources. Il se peut que vous rencontriez une erreur du compilateur, plusieurs fichiers d'en-tête n'ayant pu être trouvés. Dans ce cas, ajustez la variable INCLUDE

set INCLUDE=%INCLUDE%;path_to_coin_include_dir

et si les en-têtes SoQt ne sont pas au même endroit que les en-têtes Coin également

set INCLUDE=%INCLUDE%;path_to_soqt_include_dir

et enfin les en-têtes Qt

set INCLUDE=%INCLUDE%;path_to_qt4\include\Qt

Si vous utilisez Express Edition of Visual Studio, il se peut que vous obteniez une exception Python keyerror. Dans ce cas, vous devez modifier quelques éléments du fichier msvccompiler.py situé dans votre installation Python.

Aller à la ligne 122 et remplacez la ligne :

vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version

par

vsbase = r"Software\Microsoft\VCExpress\%0.1f" % version

Réessayez ensuite. Si vous obtenez une deuxième erreur du type

error: Python was built with Visual Studio 2003;...

vous devez également remplacer la ligne 128

self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1")

par

self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0")

Réessayez une nouvelle fois. Si vous obtenez à nouveau une erreur du type

error: Python was built with Visual Studio version 8.0, and extensions need to be built with the same version of the compiler, but it isn't installed.

Vous devez alors vérifier les variables d'environnement DISTUTILS_USE_SDK et MSSDK avec

echo %DISTUTILS_USE_SDK%
echo %MSSDK%

S'il n'est pas encore arrangé, il suffit de le définir, par exemple à 1.

set DISTUTILS_USE_SDK=1
set MSSDK=1

Il se peut que vous rencontriez une erreur du compilateur lorsqu'un "const char*" ne peut pas être converti en "char*". Pour corriger cette erreur, il suffit d'écrire un "const" avant les lignes appropriées. Il y a six lignes à corriger. Après cela, copiez le répertoire pivy généré à un endroit où l'interpréteur Python de FreeCAD peut le trouver.

Utilisation

Pour vérifier si Pivy est correctement installé :

import pivy

Pour avoir accès à Pivy à partir de la scénographique de FreeCAD, procédez comme ceci :

from pivy import coin
App.newDocument() # Open a document and a view
view = Gui.ActiveDocument.ActiveView
FCSceneGraph = view.getSceneGraph() # returns a pivy Python object that holds a SoSeparator, the main "container" of the Coin scenegraph
FCSceneGraph.addChild(coin.SoCube()) # add a box to scene

Vous pouvez maintenant explorer le FCSceneGraph à l'aide de la commande dir().

Documentation complémentaire

Malheureusement, la documentation sur pivy est encore presque inexistante sur le net. Mais vous pourriez trouver la documentation Coin utile, puisque pivy traduit simplement les fonctions de Coin, les noeuds et les méthodes en Python, tout en gardant le même nom et les mêmes propriétés, en gardant à l'esprit la différence de syntaxe entre le C et Python :

Vous pouvez également consulter le fichier Draft.py dans le dossier FreeCAD Mod/Draft, car il utilise beaucoup pivy.

pyCollada

  • Page d'accueil : http://pycollada.github.com
  • Licence : BSD
  • Optionnel, nécessaire pour permettre l'importation et l'exportation de fichiers Collada (.DAE)

pyCollada est une bibliothèque Python qui permet aux programmes de lire et d'écrire des fichiers Collada (*.DAE). Lorsque pyCollada est installé sur votre système, FreeCAD sera en mesure de gérer l'importation et l'exportation dans le format de fichier Collada.

Installation

Linux

sudo apt-get install python3-collada

Vous pouvez vérifier si pycollada a été correctement installé en émettant dans une console Python :

import collada

S'il ne renvoie rien (pas de message d'erreur), tout va bien.

Windows

Pycollada est inclus sur Windows depuis la version 0.15 et dans les versions de développement de FreeCAD, donc aucune étape supplémentaire n'est nécessaire.

MacOS

Si vous utilisez l'accumulation des Homebrew FreeCAD vous pouvez installer pycollada dans votre système Python en utilisant pip.

Si vous devez installer pip:

$ sudo easy_install pip

Installer pycollada:

$ sudo pip install pycollada

Si vous utilisez une version binaire de FreeCAD, vous pouvez dire pip installez pycollada dans le site-packages à l'intérieur FreeCAD.app:

$ pip install --target="/Applications/FreeCAD.app/Contents/lib/python2.7/site-packages" pycollada

ou après avoir téléchargé le code pycollada

$ export PYTHONPATH=/Applications/FreeCAD\ 0.16.6706.app/Contents/lib/python2.7/site-packages:$PYTHONPATH
$ python setup.py install --prefix=/Applications/FreeCAD\ 0.16.6706.app/Contents

IfcOpenShell

  • Page d'accueil : http://www.ifcopenshell.org
  • Licence : LGPL
  • Optionnel, nécessaire pour étendre les capacités d'importation des fichiers IFC

IFCOpenShell est une bibliothèque en cours de développement qui permet d'importer (et bientôt d'exporter) des fichiers IFC. IFC est une extension du format STEP et devient la norme dans les flux de travail BIM. Lorsque ifcopenshell est correctement installé sur votre système, l'atelier Arch de FreeCAD le détecte et l'utilise pour importer des fichiers IFC, au lieu de son importateur rudimentaire intégré. Comme ifcopenshell est basé sur OpenCasCade, comme FreeCAD, la qualité de l'importation est très élevée, produisant une géométrie solide de haute qualité.

Installation

Comme ifcopenshell est assez récent, vous devrez probablement le compiler vous-même.

Linux

Vous aurez besoin de quelques paquets de développement installés sur votre système afin de compiler ifcopenshell :

liboce-*-dev
python-dev
swig

mais, étant donné que FreeCAD exige tout, vous pouvez compiler FreeCAD, vous n'aurez aucune dépendance supplémentaire pour compiler IfcOpenShell.

Prenez le dernier code source ici :

git clone https://github.com/IfcOpenShell/IfcOpenShell.git

Le processus de création est très simple :

mkdir ifcopenshell-build
cd ifcopenshell-build
cmake ../IfcOpenShell/cmake

ou, si vous utilisez oce au lieu d'opencascade :

cmake -DOCC_INCLUDE_DIR=/usr/include/oce ../ifcopenshell/cmake

Comme ifcopenshell est principalement conçu pour Blender, il utilise Python3 par défaut. Pour l'utiliser dans FreeCAD, vous devez le compiler avec la même version de Python que celle utilisée par FreeCAD. Il se peut donc que vous deviez forcer la version de Python avec des paramètres cmake supplémentaires (ajustez la version de Python à la vôtre) :

cmake -DOCC_INCLUDE_DIR=/usr/include/oce -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/python2.7.so ../ifcopenshell/cmake

Alors :

make
sudo make install

Vous pouvez vérifier que ifcopenshell a été correctement installé en lançant une commande dans une console Python :

import ifcopenshell

Si la commande ne retourne aucun message d'erreur, alors tout est OK.

Windows

Remarque : les installateurs officiels de FreeCAD obtenus à partir du site web/github de FreeCAD contiennent déjà ifcopenshell.

Documentation copiée à partir du fichier README IfcOpenShell

Il est conseillé aux utilisateurs d'utiliser le fichier .sln de Visual Studio dans le dossier win/. Pour les utilisateurs de Windows, une version préconstruite d'Open CASCADE est disponible sur le site web opencascade. Téléchargez et installez cette version et fournissez les chemins d'accès aux fichiers d'en-tête et de bibliothèque d'Open CASCADE à MS Visual Studio C++.

Pour compiler le wrapper IfcPython, il est nécessaire d'installer SWIG. Veuillez télécharger la dernière version de swigwin à partir du site de swig. Après avoir extrait le fichier .zip, ajoutez le dossier extrait à la variable d'environnement PATH. Python doit être installé, veuillez fournir les chemins d'inclusion et de bibliothèque à Visual Studio.

Liens

Tutoriel Importer/Exporter IFC - compiler IfcOpenShell

LazyLoader

LazyLoader est un module Python qui permet un chargement différé, tout en continuant à importer en haut du script. C'est utile si vous importez un autre module qui est lent et qui est utilisé plusieurs fois dans le script. L'utilisation de LazyLoader peut améliorer les temps de démarrage d'un atelier mais le module devra toujours être chargé lors de la première utilisation.

Installation

LazyLoader est inclus avec FreeCAD v0.19.

Utilisation

Vous devrez importer LazyLoader puis modifier l'importation du module que vous souhaitez différer.

from lazy_loader.lazy_loader import LazyLoader
Part = LazyLoader('Part', globals(), 'Part')

La variable Part est la façon dont le module est nommé dans votre script. Vous pouvez répliquer "import Part as P" (importer une pièce en P) en modifiant la variable.

P = LazyLoader('Part', globals(), 'Part')

Vous pouvez également importer un module à partir d'un package.

utils = LazyLoader('PathScripts', globals(), 'PathScripts.PathUtils')

Vous ne pouvez pas importer des fonctions individuelles, seulement des modules entiers.

Liens