OpenCASCADE

From FreeCAD Documentation
Revision as of 12:48, 23 August 2020 by David69 (talk | contribs) (Created page with "Pour résumer, les primitives géométriques sont des blocs de construction "informes", tandis que les entités géométriques spatialessont les véritab...")

Description

OpenCASCADE Technology, OCC ou OCCT pour faire court, est une collection de bibliothèques C ++ qui constituent ensemble un noyau professionnel de conception assistée par ordinateur (CAO) pour la modélisation 2D et 3D objets et la construction d'outils spécialisés pour la fabrication, la simulation ou la visualisation. OpenCASCADE est le cœur des fonctionnalités géométriques de FreeCAD.

Les classes géométriques d'OCCT sont pour la plupart implémentées et rendues disponibles dans FreeCAD via l'atelier Part, dont dépendent la plupart des autres ateliers. Il fournit également des fonctions internes pour lire et écrire différents formats de fichiers comme STEP et IGES, et pour effectuer des projections 2D, qui peuvent être utilisées pour créer des dessins techniques dans l'atelier TechDraw.

OpenCASCADE fournit les classes géométriques de base et les fonctions de dessin à l'atelier Part qui sont ensuite utilisées par tous les ateliers de FreeCAD.

OpenCASCADE ne doit pas être confondu avec OpenSCAD, qui est un autre projet open source pour construire des modèles 3D et qui est accessible via l'atelier OpenSCAD.

OpenCASCADE est un logiciel libre régi par les termes de la GNU Lesser General Public License (LGPL) version 2.1 avec une exception supplémentaire.

Installation

OpenCASCADE est un composant central de FreeCAD, donc si vous installez FreeCAD à partir de l'un des liens de la page Téléchargement, vous l'aurez installé et aucune autre installation n'est nécessaire.

Cependant, si vous souhaitez développer des applications qui utilisent OCCT ou si vous souhaitez contribuer au code C ++ à FreeCAD, vous devez installer les fichiers de développement d'OCCT. Dans ce cas, la procédure est expliquée dans Compilation pour chacun des principaux systèmes, Linux, Windows et MacOS.

Édition communautaire

Une "édition communautaire" d'OpenCASCADE, abrégée OCE, a été publiée en 2011, basée sur les sources officielles d'OpenCASCADE (OCCT) de la version 6.5. En théorie, l'édition communautaire OCE devrait être compatible avec la version principale OCCT dans la plupart des aspects, tout en ayant du code supplémentaire fourni par la communauté.

Cependant, cette distribution alternative a arrêté le développement actif vers 2017 et a pris du retard par rapport à la version principale en termes de fonctionnalités et de corrections de bogues. Pour cette raison, depuis FreeCAD v0.17, FreeCAD est compilé exclusivement avec OCCT et OCE n'est pas testé.

Dans certaines distributions Linux plus anciennes, FreeCAD est compilé avec OCE 0.18, équivalent à OCCT 6.9.x, causant divers problèmes qui ont déjà été résolus dans les principales versions d'OCCT 7.x. Si tel est le cas, essayez de supprimer OCE et d'installer OCCT à la place. Si ce n'est pas possible, utilisez AppImage pour obtenir un FreeCAD récent avec une version OCCT mise à jour.

Histoire

Le noyau géométrique Cas.CADE était à l'origine fermé, mais il est devenu open source sous son nom actuel vers l'an 2000. Peu de temps après, le projet FreeCAD a été lancé, les fichiers les plus anciens datant de janvier 2001. En savoir plus dans Histoire.

La version 6.6 d'OpenCASCADE et les versions antérieures étaient régies par sa propre "licence publique OCCT", ce qui en faisait un "logiciel libre". Ce problème a été résolu avec la sortie d'OCCT 6.7 (2013), lors de l'adoption de la licence LGPL2.

OCCT concepts géométriques

Dans la terminologie OpenCascade, nous faisons la distinction entre les primitives géométriques et les formes (topologiques). Une primitive géométrique peut être un point, une ligne, un cercle, un plan, etc. ou même certains types plus complexes, comme une courbe B-Spline ou une surface. Une forme (shape en anglais) peut être un sommet, une arête, un fil, une face, un solide ou un composé d'autres formes. Les primitives géométriques ne sont pas faites pour être affichées directement sur la scène 3D, mais plutôt pour être utilisées comme géométrie de construction des formes. Par exemple, une arête peut être construite à partir d'une ligne ou d'une partie de cercle.

Pour résumer, les primitives géométriques sont des blocs de construction "informes", tandis que les entités géométriques spatialessont les véritables formes construites sur ces blocs.

A complete list of all primitives and shapes refer to the OCC documentation (Alternative: sourcearchive.com) and search for Geom_* (for geometric primitives) and TopoDS_* (for shapes). There you can also read more about the differences between them. Please note that the official OCC documentation is not available online (you must download an archive) and is mostly aimed at programmers, not at end-users. But hopefully you'll find enough information to get started here. Also see Modeling Data User's Guide.

At a very high level, topology tells what pieces an object is made of, and the logical relationships between them. A shape is made of a certain set of faces. A face is bounded by a certain set of edges. Two faces are adjacent if they share a common edge.

Topology alone does not tell you the size, curvature, or 3D locations of any of those pieces. However, each piece of topology does knows about it's underlying geometry. A face knows what surface it lies on. An edge knows what curve it lies on. The geometry knows about curvature and location in space. - Source


Thus, Topology defines the relationship between simple geometric entities, which can be linked together to represent complex shapes. - Modeling Data User's Guide

Note: Only 3 types of topological objects have geometric representations – vertex, edge, and face (Source).

The geometric types actually can be divided into two major groups: curves and surfaces. Out of the curves (line, circle, ...) you can directly build an edge, out of the surfaces (plane, cylinder, ...) a face can be built. For example, the geometric primitive line is unlimited, i.e. it is defined by a base vector and a direction vector while its shape representation must be something limited by a start and end point. And a box -- a solid -- can be created by six limited planes.

From an edge or face you can also go back to its geometric primitive counterpart.

Thus, out of shapes you can build very complex parts or, the other way round, extract all sub-shapes a more complex shape is made of.

The Part::TopoShape class is the geometrical object that is seen on screen. Essentially all workbenches use these TopoShapes internally to build and display edges, faces, and solids.

En relation