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