Third Party Libraries/de

Übersicht
Dies sind Bibliotheken, die FreeCAD als Abhängigkeiten von Dritten während der Kompilierung verwendet. Sie sind normalerweise dynamisch gelinkte Bibliotheken und haben eine Erweiterung in Linux/MacOS und  in Windows, und werden von ihren Kopfdateien  oder oder ähnlichem begleitet. Wenn eine modifizierte Bibliothek oder eine Hülle erforderlich ist, muss der Code der modifizierten Bibliothek oder der Hülle Teil des FreeCAD Quellcodes werden und zusammen mit diesem kompiliert werden.

Die Abhängigkeiten müssen im System installiert werden, bevor Du mit der Kompilierung fortfahren kannst; siehe Kompilieren unter Linux/Unix, Kompilieren unter Windows, und Kompilieren unter MacOS] für weitere Informationen.

Wenn du unter Windows kompilierst, ziehe es in Betracht, die LibPack zu verwenden, anstatt zu versuchen, die Bibliotheken einzeln zu installieren.

Python
Version: 3.3 oder höher

Lizenz: Python 3.3 Lizenz

Python ist eine beliebte Allzweck Skriptsprache, die unter Linux und Open Source Software weit verbreitet ist. In FreeCAD wird Python während der Kompilierung und auch zur Laufzeit auf unterschiedliche Weise verwendet. Es wird verwendet
 * um Testskripte zu schreiben, um auf verschiedene Bedingungen, wie z.B. Speicherlecks, zu testen, um die Funktionalität der Software nach Änderungen sicherzustellen, für Nach Bau Prüfungen und Testabdeckungstests,
 * zum Schreiben von Makros und zur Makroaufnahme,
 * zur Implementierung von Anwendungslogik für Standardpakete,
 * um Hilfswerkzeuge wie den Erweiterungs Manager zu implementieren,
 * um ganze Arbeitsbereiche wie Entwurf und Architektur zu implementieren,
 * um Pakete dynamisch zu laden,
 * die Regeln für Gestaltung umzusetzen (Wissensverarbeitung),
 * um ausgefallene Internet Wechselwirkungen wie Arbeitsgruppen und PDM durchzuführen

Unter Linux ist Python normalerweise bereits in deiner Distribution installiert. Für Windows kannst Du eine vorkompilierte Binärdatei von Python.org beziehen oder ActiveState Python verwenden, obwohl es schwieriger ist, die Fehlerdiagnosebibliotheken von letzterer zu bekommen.

Python wurde aus verschiedenen Gründen als Skriptsprache für FreeCAD gewählt:
 * Es ist mehr objektorientiert als Perl und Tcl.
 * Der Code ist lesbarer als Perl und Visual Basic.
 * Es ist einfacher in eine andere Anwendung einzubetten, im Gegensatz zu z.B. Java.

Zusammenfassend kann man sagen, dass Python gut dokumentiert ist, und dass es einfach in eine C++ Anwendung eingebettet und erweitert werden kann. Es ist außerdem gut getestet und wird von der Open Source Gemeinschaft stark unterstützt. Lies mehr über Python und durchsuche die offizielle Dokumentation unter Python.org.

Boost
Version: 1.33 oder höher

Lizenz: Boost Software Lizenz - Version 1.0

Die Boost C++ Bibliotheken sind Sammlungen von Fachkollegen geprüften, Open Source Bibliotheken, die die Funktionalität von C++ erweitern. Sie sind für ein breites Spektrum von Anwendungen gedacht und für eine gute Zusammenarbeit mit der C++ Standardbibliothek geeignet. Die Boost Lizenz soll ihre Verwendung sowohl in quelloffenen als auch in quellgeschlossenen Projekte fördern.

Aufgrund ihrer Popularität und Stabilität wurden viele Boost Bibliotheken für die Einbindung in den C++11 Standard akzeptiert, und weitere sind für die Aufnahme in nachfolgende C++ Standards geplant.

Um Effizienz und Flexibilität zu gewährleisten, macht Boost umfangreichen Gebrauch von Vorlagen. Boost hat umfangreiche Arbeiten und Forschungen zur generischen Programmierung und Metaprogrammierung in C++ durchgeführt. Lies mehr über Boost, indem Du die Boost Homepage besuchst.

OpenCASCADE Technologie
Version: 6.7 oder höher

Lizenz: Version 6.7.0 und später unterliegen der GNU Lesser General Public License (LGPL) Version 2.1 mit zusätzlicher Ausnahme. Frühere Versionen verwenden die Open CASCADE Technologie Öffentliche Lizenz.

Die OpenCASCADE Technologie (OCCT) ist ein vollwertiger, professioneller CAD Kernel. Er wurde 1993 entwickelt und ursprünglich unter dem Namen CAS.CADE von Matra Datavision in Frankreich für die Anwendungen Strim (Styler) und Euclid Quantum entwickelt. Im Jahr 1999 wurde es als Open Source Software veröffentlicht, und seitdem heißt es OpenCASCADE.

OCCT ist ein großer und komplexer Satz von C++ Bibliotheken, die die von einer CAD Anwendung benötigte Funktionalität bereitstellen:
 * Ein kompletter STEP konformer Geometriekern.
 * Ein topologisches Datenmodell und die benötigten Funktionen zur Arbeit mit Formen (Schneiden, Verschmelzen, Extrudieren und viele andere).
 * Standardimport- und -exportprozessoren für Dateien wie STEP, IGES, VRML.
 * Ein 2D und 3D Betrachter mit Auswahlunterstützung.
 * Eine Dokumenten und Projektdatenstruktur mit Unterstützung für Speichern und Wiederherstellen, externe Verknüpfung von Dokumenten, Neuberechnung der Konstruktionshistorie (parametrische Modellierung) und die Möglichkeit, neue Datentypen als Erweiterungspaket dynamisch zu laden.

There are two main versions of OpenCASCADE in existence in different Linux distributions. One is distributed by the original developers; it is known as OCCT, and is packaged under the names or. The other version is the "community edition", abbreviated OCE, and is normally found with the name. FreeCAD can compile against either version, however, since 2016 FreeCAD recommends compiling against the official OCCT libraries rather than the OCE ones. The reason is that the community edition lacks important bug fixes and functions that make using FreeCAD better.

To learn more visit the OpenCASCADE website.

Qt
Version: 4.1 or higher

License: GPL v2.0/v3.0 or Commercial; from version 4.5 on also LPGL v2.1.

Qt is one of the most popular graphical user interface (GUI) toolkits available in the open source world. FreeCAD uses this toolkit to draw the interface of the program. For this, the Qt Designer application is very useful as it allows developers to quickly draw the dialogs and windows, export them as XML resource files, and then load these interfaces at runtime.

Further information about Qt libraries and their programming documentation are available at Qt Documentation.

Shiboken2 and Pyside2
Shiboken is the Python binding generator that Qt for Python uses to create the PySide module, in other words, it is the system that is used to expose the Qt C++ API to the Python language.

The original Shiboken and PySide packages were meant to be used with Python 2 and Qt4; since these two versions are considered obsolete in 2019, please use Shiboken2 and PySide2, which work with Python 3 and Qt5. New development of FreeCAD is done with Python 3 and Qt5, so compatibility with Python 2 and Qt4 is not guaranteed after FreeCAD 0.18.

Read more about Shiboken and Pyside on Qt for Python.

Coin3D
Version: 3.0 or higher

License: BSD 3-clause license

Coin3D is a high-level 3D graphics library with a C++ application programming interface. It uses scenegraph data structures to render real-time graphics suitable for all kinds of scientific and engineering visualization applications.

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

Coin3D is compatible with SGI's Open Inventor 2.1 API. This API has become the de facto standard graphics interface for 3D visualization in the scientific and engineering community. It has proved its worth since the year 2000 as a major building block in thousands of engineering applications around the world.

Coin3D (Open Inventor) is used as the 3D viewer in FreeCAD because the OpenCASCADE viewer (AIS and Graphics3D) has limitations and performance bottlenecks, especially with large-scale engineering rendering; other things like textures or volumetric rendering are not entirely supported by the OpenCASCADE viewer.

Coin3D is portable over a wide range of platforms: UNIX, Linux, BSD, MacOS X, and Microsoft Windows operating systems. To read more about this library visit Coin3D homepage.

SoQt (deprecated)
Version: 1.2.0 or higher

License: BSD 3-clause license

SoQt is the Coin3D (Open 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 Coin3D. And you have to compile it with your version of Qt.

SoQt is no longer used in FreeCAD, it was replaced by Quarter which is a more recent Qt binding.

Quarter
Version: 1.0 or higher

License: BSD 3-clause license

Quarter is a newer Coin3D binding to the Qt toolkit. A version of it is included in the source code of FreeCAD so it is compiled together with it.

Xerces-C++
Version: 3.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 associated standards.

The parser is used for saving and restoring parameters in FreeCAD. For more information see Xerces-C++ homepage.

Eigen3
Version: 3.0 or higher

License: Starting from the 3.1.1 version, it is licensed under the Mozilla Public License 2.0. Earlier versions were licensed under the GNU Lesser General Public License 3.

Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.

If you just want to use Eigen, you can use the header files right away. There is no binary library to link to, and no configured header file. Eigen is a pure template library defined in the headers.

Eigen is used in FreeCAD for many vector operations in 3D space. To learn more, visit Eigen homepage.

Zipios++
Version: 0.1.5 or higher

License: GNU Lesser General Public License 2.1

Zipios++ is a C++ library for reading and writing files. Access to individual entries is provided through standard C++ iostreams. A simple read-only virtual file system that mounts regular directories and files is also provided. The structure and public interface of Zipios++ are loosely based on the package of Java.

FreeCAD's native file format is in reality a  file that stores and compresses other types of data within it, such as BREP and XML files. Therefore, Zipios++ is used to save and open compressed archives, including FreeCAD files.

A copy of Zipios++ is included in the source code of FreeCAD so it is compiled together with it. If you want to use an external Zipios++ library, provided by your operating system, you may set  with.

Zipios++ uses the Zlib library to perform the actual decompression of files.

Zlib
Version: 1.0 or higher

License: zlib license

Zlib is designed to be a free, general-purpose, lossless data-compression library for use on any computer hardware and operating system. It implements the compression algorithm commonly used in  and  files.

A copy of this library is included in the source code of FreeCAD so it is compiled together with it.

libarea
Version: 0.0.20140514-1 or higher

License: BSD 3-clause license

Libarea is a software library to compute profile and pocket operations which are used in computer aided manufacturing (CAM) software. It was created by Dan Heeks for his HeeksCNC project.

A copy of the library is included with the source code of the Path Workbench, so it is compiled together with it.

LibPack
LibPack is a convenient package with FreeCAD's build dependencies collected together. It is only needed if you are compiling FreeCAD on Windows with Visual Studio 2015 and above. You can find the latest LibPack on the releases page.

If you're working under Linux, you don't need the LibPack, as you can get the dependencies from your distribution's repositories as mentioned in the compile on Unix page.

FreeCAD 12.1.2
See the announcement in the forum: New libpacks for Windows with Qt5.12, OCC7.3 and Python 3.6 by apeltauer

It includes among other things: Boost 1.67, Coin3D 4.0.0a, Eigen3, Open CASCADE Technology 7.3.0, Python 3.6.8, PySide2, Qt 5.12.1, Salome SMESH, Shiboken2, vtk7, Xerces-C, Zipios++, zlib 1.2.11