Third Party Libraries/fr

Vue d'ensemble
Ce sont des bibliothèques, qui ne sont pas modifiées dans le projet FreeCAD. elles sont inchangées, et, essentiellements utilisées comme bibliothèques de liens dynamiques (*.So ou *.Dll). S'il y a un changement nécessaire, ou une classe wrapper est nécessaire, le code du package, ou le code de la bibliothèque ont changés et doivent être déplacés vers le package de base de FreeCAD. Les bibliothèques utilisées sont les suivantes :

Pensez à utiliser LibPack au lieu de télécharger et d'installer toutes sorte de trucs.

Python
Version: 2.5 ou plus

License: Python 2.5 licence

Vous pouvez utiliser le source ou binaire à partir de Python ou utiliser alternativement ActiveState Python à partir de activestate s'il est difficile d'obtenir des libs de débogage à partir d'ActiveState.

Description
Python, est le langage de script principal, et, est utilisé dans toute l'application. Par exemple :
 * Mettre en œuvre des scripts de test pour tester :
 * des pertes de mémoire.
 * d'assurer de nouvelles fonctionnalités après modifications.
 * poster, construire des contrôles.
 * des tests de contrôles de tests.
 * Macros et enregistrements de macros.
 * Mettre en œuvre une logique d'application, pour les paquets (packages) standards.
 * La mise en œuvre des boîtes à outils complètes.
 * Le chargement dynamique des paquets (packages).
 * Les règles d'application pour la conception (connaissances techniques).
 * Créer par exemple des groupes de travail et PDM sur Internet.
 * Et ainsi de suite ...

Le chargement de packages dynamiques pour Python est utilisé, en particulier, au moment de l'exécution, pour le chargement de fonctionnalités supplémentaires, et, établit le nécessaires pour les tâches réelles. Pour voir Python de plus près : Pourquoi Python direz vous ? vous pouvez le demander ici. Il y a plusieurs raisons : Jusqu'à présent, dans ma vie professionnelle, j'ai utilisé les langages de script différents :


 * Perl
 * Tcl/Tk
 * VB
 * Java

Python est plus orienté OO (object-oriented), le code n'est pas plus mauvais que Perl et Tcl, pareil pour Perl et VB. Java n'est pas un langage destiné au script, et, difficile (voire impossible) à intégrer. Python, est bien documenté, facile à intégrer, et, facile à étendre. Il est également bien fait ses preuves, et, est fort prisé dans la communauté open source.

Credits
Grâce à Guido van Rossum et beaucoup de gens, ont fait que Python ait un tel succès !

OpenCasCade
Version: 5.2 ou plus

License : OCTPL

OCC est un noyau complet CAD. A l'origine, il a été développé en France par Matra Datavision, pour la Strim (Styler) et Euclide applications quantiques, et, plus tard fait pour l'Open Source. C'est une bibliothèque vraiment énorme, et, faire en premier lieu une application de CAO libre est possible, en fournissant certains paquets, qui seraient difficiles, ou impossibles à mettre en œuvre dans un projet Open Source :
 * Un noyau géométrique complet conforme à STEP.
 * Un modèle topologique de données et toutes les fonctions nécessaires pour travailler sur les (coupes, fusion, extrusion, etc ...)
 * Import-standard/exportation des processeurs comme STEP, IGES, VRML.
 * Visionneuse 2D et 3D avec le soutien de la sélection.
 * Une structure de document, et, données de projet, avec le soutien de, sauvegarde et restauration, de liaison externe des documents, de recalcul de l'historique du dessin (modélisation paramétrique) et d'un centre de chargement de nouveaux types de données, comme un module d'extension dynamique.

Pour en savoir plus sur OpenCascade jeter un coup oeil à la page OpenCascade ou sur OpenCascade.

Qt
Version: 4.1.x or higher

Licence : GPL v2.0/v3.0 ou commerciale (à partir de la version 4.5 aussi sur v2.1 LPGL)

I don't think I need to tell a lot about Qt. It's one of the most often used GUI toolkits in Open Source projects. For me the most important point to use Qt is the Qt Designer and the possibility to load whole dialog boxes as a (XML) resource and incorporate specialized widgets. In a CAX application the user interaction and dialog boxes are by far the biggest part of the code and a good dialog designer is very important to easily extend FreeCAD with new functionality. Further information and a very good online documentation you'll find on http://www.qtsoftware.com.

Coin3D
Version: 2.0 or higer

License: GPL v2.0 or Commercial

Coin is a high-level 3D graphics library with a C++ Application Programming Interface. Coin uses scenegraph data structures to render real-time graphics suitable for mostly all kinds of scientific and engineering visualization applications.

Coin is portable over a wide range of platforms: any UNIX / Linux / *BSD platform, all Microsoft Windows operating system, and Mac OS X.

Coin is built on the industry-standard OpenGL immediate mode rendering library, and adds abstractions for higher-level primitives, provides 3D interactivity, immensely increases programmer convenience and productivity, and contains many complex optimization features for fast rendering that are transparent for the application programmer.

Coin is based on the SGI Open Inventor API. Open Inventor, for those who are not familiar with it, has long since become the de facto standard graphics library for 3D visualization and visual simulation software in the scientific and engineering community. It has proved it's worth over a period of more than 10 years, its maturity contributing to its success as a major building block in thousands of large-scale engineering applications around the world.

We will use OpenInventor as 3D viewer in FreeCAD because the OpenCasCade viewer (AIS and Graphics3D) has serios limitations and performace bottlenecks, especially when it goes in large-scale engineering rendering. Other things like textures or volumetric rendering are not really supported, and so on ....

Since Version 2.0 Coin uses a different licence model. It's not longer LGPL. They use GPL for open source and a commercial licence for closed source. That means if you want to sell your work based on FreeCAD (extension modules) you need to purchase a Coin licence!

ODE (Open dynamic engine)
Version: 0.10.0 or higher

License: LGPL v2.1 or later or BSD

ODE is an open source, high performance library for simulating rigid body dynamics. It is fully featured, stable, mature and platform independent with an easy to use C/C++ API. It has advanced joint types and integrated collision detection with friction. ODE is useful for simulating vehicles, objects in virtual reality environments and virtual creatures. It is currently used in many computer games, 3D authoring tools and simulation tools.

Credits
Russell Smith is the primary author of ODE.

SoQt
Version: 1.2.0 or higher

License: GPL v2.0 or Commercial

SoQt is the Inventor binding to the Qt Gui Toolkit. Unfortunately, it's not longer LGPL so we have to remove it from the code base of FreeCAD and link it as a library. It has the same licence model like Coin. And you have to compile it with your version of Qt.

Xerces-C++
Version: 2.7.0 or higher

License: Apache Software License Version 2.0

Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents.

Xerces-C++ is faithful to the XML 1.0 recommendation and many associated standards (see Features below).

The parser provides high performance, modularity, and scalability. Source code, samples and API documentation are provided with the parser. For portability, care has been taken to make minimal use of templates, no RTTI, and minimal use of #ifdefs.

The parser is used for saving and restoring parameters in FreeCAD.

GTS
Version: 0.7.x

License: LGPL v2.0 or later

GTS stands for the GNU Triangulated Surface Library. It is an Open Source Free Software Library intended to provide a set of useful functions to deal with 3D surfaces meshed with interconnected triangles. The source code is available free of charge under the Free Software LGPL license.

Actually not needed to compile FreeCAD. You can switch on the usage with a proprocessor switch in FCConfig.h.

Zlib
Version: 1.x.x

License: zlib License

zlib is designed to be a free, general-purpose, legally unencumbered -- that is, not covered by any patents -- lossless data-compression library for use on virtually any computer hardware and operating system. The zlib data format is itself portable across platforms. Unlike the LZW compression method used in Unix compress(1) and in the GIF image format, the compression method currently used in zlib essentially never expands the data. (LZW can double or triple the file size in extreme cases.) zlib's memory footprint is also independent of the input data and can be reduced, if necessary, at some cost in compression.

Boost
Version: 1.33.x

License: Boost Software License - Version 1.0

The Boost C++ libraries are a collection of peer-reviewed, open source libraries that extend the functionality of C++. The libraries are licensed under the Boost Software License, designed to allow Boost to be used with both open and closed source projects. Many of Boost's founders are on the C++ standard committee and several Boost libraries have been accepted for incorporation into the Technical Report 1 of C++0x.

The libraries are aimed at a wide range of C++ users and application domains. They range from general-purpose libraries like SmartPtr, to OS Abstractions like FileSystem, to libraries primarily aimed at other library developers and advanced C++ users, like MPL.

In order to ensure efficiency and flexibility, Boost makes extensive use of templates. Boost has been a source of extensive work and research into generic programming and meta-programming in C++.

See: http://www.boost.org/ for details.

LibPack
LibPack is a convenient package with all the above libraries packed together. It is currently available for the Windows platform on the Download page! If you're working under Linux you don't need a LibPack, instead of you should make use of the package repositories of your Linux distribution.

FreeCADLibs7.x Changelog

 * Using QT 4.5.x and Coin 3.1.x
 * Eigen template lib for Robot added
 * SMESH experimental