Third Party Libraries/it

Panoramica
Si tratta di librerie che FreeCAD utilizza come dipendenze di terze parti durante la compilazione. Di solito sono librerie collegate dinamicamente e hanno un'estensione in Linux/MacOS e  in Windows, e sono accompagnati dai loro file di intestazione  o  o simili. Se è necessaria una libreria modificata o una classe wrapper, il codice della libreria modificata, o wrapper, deve diventare parte del codice sorgente di FreeCAD e compilato insieme ad esso.

Le dipendenze devono essere installate nel sistema prima di procedere con la compilazione; vedi Compilazione in Linux, Compilazione in Windows e Compilazione in MacOS per maggiori informazioni.

Se stai compilando usando Windows, prendi in considerazione l'utilizzo di LibPack invece di provare a installare le librerie singolarmente.

Python
Versione: 3.3 o superiore

Licenza: licenza Python 3.3

Python è un popolare linguaggio di scripting per tutti gli usi ampiamente utilizzato in Linux e nel software open source. In FreeCAD, Python viene utilizzato durante la compilazione e anche in fase di esecuzione in diversi modi. È utilizzato
 * per scrivere script di test per testare condizioni diverse, come perdite di memoria, per garantire la funzionalità del software dopo le modifiche, per controlli post-compilazione e test di copertura dei test,
 * per scrivere macro e registrazione di macro,
 * per implementare la logica dell'applicazione per i pacchetti standard,
 * per implementare strumenti ausiliari come Addon Manager,
 * per implementare interi ambienti di lavoro come Draft e Arch,
 * per caricare dinamicamente i pacchetti,
 * implementare regole per la progettazione (ingegneria della conoscenza),
 * per creare interazioni fantasiose su Internet come gruppi di lavoro e PDM

Su Linux, Python è solitamente già installato nella propria distribuzione. Per Windows è possibile ottenere un binario precompilato da o usare ActiveState Python, anche se è più difficile ottenere le librerie di debug da quest'ultimo.

Python è stato scelto come linguaggio di scripting per FreeCAD per diversi motivi:
 * È più orientato agli oggetti rispetto a Perl e Tcl.
 * Il codice è più leggibile di Perl e Visual Basic.
 * È più facile da incorporare in un'altra applicazione, a differenza, ad esempio, di Java.

In sintesi, Python è ben documentato ed è facile da incorporare ed estendere in un'applicazione C++. È anche ben testato e gode di un forte sostegno da parte della comunità open source. Letture ulteriori su Python sfogliando la documentazione ufficiale su Python.org.

Boost
Versione: 1.33 o superiore

Licenza: Boost Software License - Versione 1.0

Le librerie Boost C++ sono raccolte di librerie open source sottoposte a revisione paritaria che estendono le funzionalità di C++. Sono pensate per essere ampiamente utili in un ampio spettro di applicazioni e per funzionare bene con la libreria standard C++. La licenza Boost è progettata per incoraggiarne l'uso in progetti open source e closed source.

A causa della loro popolarità e stabilità, molte librerie Boost sono state accettate per l'incorporazione nello standard C++11 e altre sono pianificate per l'inclusione nei successivi standard C++.

Al fine di garantire efficienza e flessibilità, Boost fà ampio uso di modelli. Boost è stata una fonte di intenso lavoro e di ricerca nella programmazione generica e nella meta-programmazione in C++. Maggiori informazioni su Boost visitando la home page di Boost.

OpenCASCADE Technology
Versione: 6.7 o superiore

Licenza: la versione 6.7.0 e successive sono regolate dalla GNU Lesser General Public License (LGPL) versione 2.1 con eccezioni aggiuntive. Le versioni precedenti utilizzano la Open CASCADE Technology Public License.

OpenCASCADE Technology (OCCT) è un kernel CAD completo e di livello professionale. È stato sviluppato nel 1993 e originariamente chiamato CAS.CADE, da Matra Datavision in Francia per le applicazioni Strim (Styler) ed Euclid Quantum. Nel 1999 è stato rilasciato come software open source e da allora si chiama OpenCASCADE.

OCCT è un insieme ampio e complesso di librerie C++ che forniscono le funzionalità richieste da un'applicazione CAD:
 * Un kernel geometrico completo conforme a STEP.
 * Un modello di dati topologici e le funzioni necessarie per lavorare con le forme (taglio, fusione, estrusione e molte altre).
 * Processori d'importazione ed esportazione standard per file come STEP, IGES, VRML.
 * Un visualizzatore 2D e 3D con supporto alla selezione.
 * Una struttura di dati di documenti e progetti con supporto per salvataggio e ripristino, collegamento esterno di documenti, ricalcolo della cronologia di progettazione (modellazione parametrica) e una funzione per caricare dinamicamente nuovi tipi di dati come pacchetto di estensione.

Esistono due versioni principali di OpenCASCADE esistenti in diverse distribuzioni Linux. Una è distribuita dagli sviluppatori originali; è noto come OCCT ed è impacchettato con i nomi o. L'altra versione è la "community edition", abbreviata OCE, e si trova normalmente con il nome. FreeCAD può compilare con entrambe le versioni, tuttavia, dal 2016 FreeCAD consiglia di compilare con le librerie OCCT ufficiali piuttosto che con quelle OCE. Il motivo è che l'edizione della comunità mancano importanti correzioni di bug e funzioni che rendono migliore l'utilizzo di FreeCAD.

Per ulteriori informazioni, visitare il sito web di OpenCASCADE.

Qt
Versione: 4.1 o superiore

Licenza: GPL v2.0/v3.0 o commerciale; dalla versione 4.5 in poi anche LPGL v2.1.

Qt è uno dei toolkit di interfaccia utente grafica (GUI) più popolari disponibili nel mondo open source. FreeCAD utilizza questo toolkit per disegnare l'interfaccia del programma. Per questo, l'applicazione Qt Designer è molto utile in quanto consente agli sviluppatori di disegnare rapidamente finestre di dialogo e finestre, esportarle come file di risorse XML e quindi caricare queste interfacce in fase di esecuzione.

Ulteriori informazioni sulle librerie Qt e la relativa documentazione di programmazione sono disponibili nella Documentazione di Qt.

Shiboken2 e Pyside2
Shiboken è il generatore di binding Python che Python Qt utilizza per creare il modulo PySide, in altre parole, è il sistema utilizzato per esporre l'API Qt C++ al linguaggio Python.

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
Versione: 2.0 o superiore

Licenza: GPL v2.0 o Commerciale

Coin è una libreria di grafica 3D di alto livello con una interfaccia di programmazione delle applicazioni (Application Programming Interface) in C++. Per "renderizzare" i grafici in tempo reale Coin utilizza la struttura di dati scenegraph (grafo di scena) adatta alla maggior parte delle applicazioni di visualizzazione scientifica e ingegneristica.

Coin è costruito secondo lo standard del settore OpenGL delle librerie di modalità di renderizzazione immediata, e aggiunge astrazioni per primitive di livello superiore, fornisce interattività 3D, aumenta enormemente la praticità e la produttività del programmatore, e contiene molte funzioni di ottimizzazione complesse per il rendering veloce che sono trasparenti per il programmatore di applicazioni.

Coin si basa sul SGI (sistema di gestione integrato) della API (interfaccia di programmazione di applicazioni) di Open Inventor. Open Inventor, per coloro che non hanno familiarità con essa, è da tempo diventata di fatto la libreria standard per la visualizzazione grafica 3D e per i software di simulazione visiva nella comunità scientifica e di ingegneria. È stata sperimentata per un periodo di oltre 10 anni, la sua maturità contribuisce al suo successo. È utilizzata quale blocco di costruzione principale per migliaia di applicazioni di ingegneria in larga scala in tutto il mondo.

In FreeCAD useremo OpenInventor come visualizzatore 3D perché il visualizzatore OpenCascade (AIS e Graphics3D) ha forti limitazione e costituisce una strozzatura delle prestazioni, soprattutto quando si tratta di grandi renderizzazioni di ingegneria. Altre cose quali texture o renderizzazione volumetrica non sono proprio supportate, ecc ....

Coin è portabile su un'ampia gamma di piattaforme: qualsiasi piattaforma UNIX / Linux / * BSD, tutti i sistemi operativi Microsoft Windows, e Mac OS X.



SoQt
Versione: 1.2.0 o superiore

Licenza: GPL v2.0 o Commerciale

SoQt è il collante tra il toolkit dei componenti GUI Qt e Inventor. Purtroppo, non è più LGPL quindi dobbiamo rimuoverlo dal codice base di FreeCAD e collegarlo come una libreria. Ha lo stesso modello di licenza di Coin. Deve essere compilato con la propria versione di 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.

Pivy
Version: 0.6.3 or higher

License: BSD 3-clause license

Pivy is a library that wraps the Coin3d library for use in Python. It is not needed to build FreeCAD or to start it, but it is needed as a runtime dependency by the Draft Workbench, and by other workbenches that use it internally, like Arch and BIM.

If you are not going to use these workbenches, you won't need Pivy.

Ply
Version: 3.11 or higher

License: BSD 3-clause license

Ply is the Python-Lex-Yacc parser. It is used as a runtime dependency by the OpenSCAD Workbench. If you don't use this workbench, you may not need this package.

For more information see Ply homepage



Xerces-C++
Versione: 2.7.0 o superiore

Licenza: Apache Software License Versión 2.0

Xerces-C++ è un analizzatore (parser) di convalida XML scritto in un sottoinsieme portatile di C++. Xerces-C++ rende più facile fornire alla propria applicazione la capacità di leggere e scrivere dati XML. Per l'analisi, la generazione, la manipolazione, e la convalida di documenti XML è prevista una libreria condivisa.

In FreeCAD il parser è utilizzato per salvare e ripristinare i parametri.

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
Versione: 1.x.x

Licenza: zlib

zlib è una libreria di compressione usabile praticamente su qualsiasi hardware e sistema operativo senza perdita di dati. Di proposito generale, è progettata per essere libera, giuridicamente svincolata, cioè non coperta da alcun brevetto. Il formato dei dati zlib è di per sé portabile sulle varie piattaforme. A differenza del metodo di compressione LZW utilizzato nella compressione Unix e nel formato immagine GIF, il metodo di compressione attualmente utilizzato in zlib sostanzialmente non espande mai i dati. (LZW può raddoppiare o triplicare le dimensioni del file in casi estremi.) Inoltre, l'utilizzo di memoria di Zlib è indipendente dai dati di input e, se necessario, può essere ridotta, ma con una perdita di efficienza di compressione.

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

libarea
Versione: N/A

Licenza: New BSD (BSD 3-Clause)

Area è una parte di software creato da Dan Heeks per HeeksCNC. Viene impiegato come una libreria per la generazione di operazioni CAM correlate all'ambiente Path.

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

LibPack
LibPack è un utile pacchetto che comprende tutte le librerie di cui sopra. È necessario solo sulla piattaforma Windows e lo si può trovare su https://github.com/FreeCAD/FreeCAD-ports-cache/releases. Lavorando sotto Linux non si ha bisogno di LibPack, si deve invece fare uso dei repository di pacchetti della propria distribuzione Linux.

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 Linux 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