pythonOCC: une plateforme de développement agile d`applications

publicité
pythonOCC: une plateforme de
développement agile d’applications CAO.
PyConFR 2009
Cité des Sciences et de l’Industrie, Paris – 31 mai 2009
Thomas Paviot*, Jelle Feringa*
*pythonOCC project: [email protected]; [email protected]
1
Objectifs de cette présentation
Exposer les enjeux du logiciel libre dans la
conception de produit en général et la CAO en
particulier,
Le language de programmation Python a une
pertinence industrielle,
Dresser un rapide état de l’art du couple CAO
3D/Python,
Présenter la bibliothèque de développement
pythonOCC.
Questions
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
2
L’ingénierie numérique pour le développement de
produit
Les outils numériques sont largement utilisés pour accélérer les
cycles de développement des produits (CQD).
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
3
CAO 3D
Le marché offre de nombreuses solutions de CAO
performantes et éprouvées (DS CatiaTM V5-SolidWorks, PTC
Pro/E, Siemens SolidEdgeTM, Autodesk InventorTM etc.)
L’offre open source en CAO 3D est pauvre.
Visualisation
scientifique: VTK
31 mai 2009
Modelage/Rendu
artistique/jeu:
Blender, Irrlicht,
Ogre3d
CAO 3D: BRLCAD
(vieillissant),
FreeCad (en dev.)
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
4
Le contexte : des produits et organisations
industrielles complexes
Nombreux et difficiles problèmes d’interopérabilité des systèmes,
Un objectif affiché par la NASA et l’ESA: « Joining open standards
with the open source software (OSS) development model for costeffective implementations that avoid vendor dependencies ».
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
5
Les problèmes liés aux applications CAO
commerciales
Nécessité d’un accès à de la topologie de bas niveau (connexion d’une
face avec de la connaissance liée à ses dimensions, la machine nécessaire
pour la fabrication, des spécifications géométriques etc.): les scripts VBA
ne permettent pas cet accès.
L’accès aux API complètes des applications CAO est coûteuse: difficile à
justifier dans le cadre d’un développement expérimental,
Les applications CAO commerciales nécessitent un développement en C++
(pas forcément le meilleur choix pour le prototypage d’applications),
Le contrat de licence peut être une contrainte à une diffusion de ces
produits,
L’implémentation des standards d’échange de données (IGES, STEP) peut
être incomplète ou partielle, causant des problèmes d’interopérabilité.
Besoin d’un noyau 3D CAO de qualité industrielle, facile à utiliser,
à maintenir et à déployer, à bas coût.
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
6
Le projet pythonOCC
Pourquoi OpenCASCADETM?
• La seule bibliothèque 3D open source de qualité
industrielle,
• Mais: C++, difficulté de prise en main.
Pourquoi PythonTM?
• Language de programmation dynamque de qualité
industrielle,
• OpenSource, portable
• Largement utilisé par la communauté scientifique
(Salomé, Code Aster etc.), de nombreuses bibliothèques
de développement disponibles : VTK, pyTables, numpy,
SciPy etc.
• Mais: aucune bibliothèque CAO 3D disponible
pythonOCC
Pourquoi pythonOCCTM?
• pour développer/prototyper rapidement des
applications CAO/PLM de qualité industrielle.
Une plateforme open source, basée sur des standards ouverts, pour le
développement agile d’applications CAO.
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
7
Historique/état du projet
Projet commencé en avril 2008,
Première version stable publiée en févrer 2009,
Dernière release: pythonOCC 0.2 (2009, April 10th),
Disponible pour Windows XP/Vista, MacOSX 10.5, GNU Linux (testé
sur Debian, Fedora, OpenSuse et Ubuntu),
Publié sous la licence libre GNU General Public License v3,
Environnement de développement collaboratif (Subversion
repository, mailing-list, bugtracker etc.) hébegré par gna :
http://gna.org/projects/pythonocc
Site, wiki, API reference online documentation, téléchargements :
http://www.pythonocc.org
Plus de 9000 classes couvertes par l’interface,
Un système de génération de l’interface composé de 3 scripts
python et à peine plus de 3000 lignes de code,
Un ensemble importants d’exemples,
Une communauté d’utilisateurs grandissante.
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
8
Une architecture à 2 niveaux pour un
développement CAO agile.
L0
L1
L’objectif de pythonOCC est d’étendre les fonctionnalités 3D du noyau OCC
avec les nouvelles avancées dans les domaines de l’ingénirie de la
connaissance, l’ingénirie collaborative, la représentation 3D etc.
pythonOCC s’appuie donc également sur des bibliothèques tierces éprouvées.
OpenCascade C++ library
Python bindings
Traits
multi
processing
twisted
…
High level CAD/PLM pythonic API
L2
pythonOCC
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
9
Level 1 : un processus automatisé pour la création
de l’interface
pygccxml
processing
Py++
processing
XML files
Process input
OpenCascade 6.3.0
headers (14197 files)
Set of *.i files
Process output: Python
bindings (*.py and
*.pyd/*.so libraries)
Set of *.cpp and *.py
files
SWIG
processing
Build process
(g++/msvc)
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
10
Level 2 : un ensemble de classes/méthodes de haut
niveau
Threading Multiprocessing
Application
framework
Network
collaboration/
Data exchange
Topology
introspection
Objectifs à moyen terme :
Une application KBE basée sur les ontologies et la technologie SPARQL,
Un environnement de conception collaborative complet: collaboration
asynchrone (via une base de données PDM de granularité fine),
collaboration synchrone (partage de flux 3D en temps réel, système de
discussion).
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
11
Quelques exemples
Ces démos ont pour objectif de montrer :
31 mai 2009
Quelques fonctionnalités du niveau 1,
Quelques fonctionnalités de niveau 2 (extension du niveau 1),
Que Python peut-être considéré dans ce cadre comme un
langage de programmation dynamique pour l’innovation.
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
12
Demo 1 : an easy to use/flexible scripting
engine (L1) for 3D modeling
from OCC.BRepPRimAPI import *
box = BRepPrimAPI_MakeBox(10,20,30).Shape()
display.DisplayShape(box)
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
13
Demo2 : création/visualisation de fichiers dans un
format standard (L1)
Le programme CADViewer pour les fichiers IGES/BRep/STL/STEP
nécessite seulement 80 lignes de code.
STEP file visualization
(aircraft)
31 mai 2009
IGES file visualization (fan)
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
14
Demo 3 : opérations booléennes (L1)
Le programme ‘Emmenthaler’ effectue des opérations booléennes
récursives: le retrait de 50 cylindres aléatoires à partir d’un
parallélépipède initial de 200*260*260.
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
15
Demo 4 : visualisation de courbure gaussienne
(L2)
Cette exemple utilise la bibliothèque de haut niveau de gestion de
la topologie pour calculer/afficher la courbure gaussienne d’une
surface au format IGES (environ 250 lignes de code).
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
16
Demo 5 : multiprocessing (L2)
Les processus géométriques tournent rarement en
parallèle, mais pythonOCC rend possible cette
fonctionnalité par l’utilisation du module processing,
Accélération de la génération de géométrie complexe,
Example: utilise tous les processeurs disponibles (8)
pour ‘trancher’ une géométrie complexe,
Une accélération presque linéaire pour l’example
suivant: déterminer les intersections multiples d’une
géométrie 3D et d’un ensemble de plans parallèles
(pour déterminer les trajets outil en prototypage
rapide).
April 2009, 29th
11th NASA/ESA Workshop on Product Data Exchange – pythonOCC/STEP-PLCS framework
17
Demo 5 : multiprocessing results
Pump part
slicing display
Multiprocess
performance results
(MacOSX 10.5/8 processors
machines/ pythonOCC svn rev.
302/ STEP geometry)
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
18
Demo 6 : collaboration – échange de géométrie
Echange de géométrie (sphère)
sur un réseau via XMLRPC. 2
scripts:
client.py
server.py
Création de la géométrie
Affichage de la géométrie
Serveur XML/RPC
Client XML/RPC
Machine 1
31 mai 2009
Machine 2
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
19
Demo 6 : 1 shape server, 3 concurrent clients
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
20
Merci de votre attention!
31 mai 2009
PyConFR 2009 – pythonOCC: développement agile d’applications CAO
21
Téléchargement