Third Party Libraries/it

Panoramica
Si tratta di librerie che nel progetto di FreeCAD non vengono modificate. Sono utilizzate sostanzialmente senza modifiche come librerie a collegamento dinamico (*.so o *.dll). Se è necessario modificarle o è necessaria una classe wrapper (classe involucro), allora il codice della wrapper o il codice della libreria modificata deve essere spostato nel pacchetto base di FreeCAD.

Considerare la possibilità di usare LibPack invece di scaricare e installare tutto da soli.

Le librerie utilizzate sono:

Python
Versione: 2.5 o superiore

Licenza: licenza Python 2.5

È possibile utilizzare il codice sorgente o i binari forniti da http://www.python.org/ oppure, in alternativa, utilizzare ActiveState Python fornito da http://www.activestate.com/ anche se è un po' difficile ottenere le librerie di debug da ActiveState.

Descrizione
Python è il linguaggio di script primario ed è usato in tutta l'applicazione, ad esempio, per:


 * Implementare script di test per verificare:
 * perdite di memoria,
 * accertare la presenza di funzionalità dopo delle modifiche,
 * eseguire controlli dopo la costruzione,
 * verificare la copertura dei test.
 * Macro e registrazione di macro.
 * Implementare la logica di applicazione di pacchetti standard.
 * Implementazione di ambienti completi.
 * Caricamento dinamico dei pacchetti.
 * Implementazione delle regole per il disegno (Knowledge engineering) Ndt: Migliorare i processi di progettazione (Base di conoscenza di ingegneria).
 * Fare varie cose in Internet quali i gruppi di lavoro e PDM (Product Data Management - Gestore dei Dati di Prodotto).
 * E altro ancora...

In particolare il "caricamento dinamico dei pacchetti" di Python viene utilizzato per caricare le funzionalità aggiuntive e gli ambienti di lavoro solo al momento in cui essi sono necessari per eseguire le operazioni in atto.

Per maggiori informazioni su Python vedere: www.python.org.

Qualcuno potrebbe chiedere: perché proprio Python? Ci sono diversi motivi. Finora, nella mia vita professionale ho usato diversi linguaggi di script:


 * Perl
 * Tcl/Tk
 * VB
 * Java

Python è più OO (programmazione a oggetti; object-oriented: orientato a oggetti) di Perl e Tcl, il codice non è legato come in Perl e VB. Java innanzitutto non è un linguaggio di script ed è difficile (o impossibile) da incorporare. Python è ben documentato e facile da incorporare e da estendere. E' anche ben testato e ha un buon supporto nella comunità del software open source.

Crediti
Un ringraziamento a Guido van Rossum e alle molte persone che hanno permesso tale successo a Python!

OpenCasCade
Versione: 5.2 o superiore

Licenza: OCTPL

OCC è un kernel di CAD completo. Originariamente, è stato sviluppato da Matra Datavision in Francia per le applicazioni Strim e Euclid Quantum e successivamente è stato reso Open Source. E' una enorme libreria e sopratutto rende possibile un programma di CAD gratuito, mettendo a disposizione alcuni pacchetti che sarebbero difficili o impossibili da realizzare in un progetto Open Source:
 * Un kernel di geometria che supporta STEP
 * Un modello topologico di dati e tutte le funzioni necessarie per lavorare con essi (taglio, fusione, estrusione, ecc ...)
 * Processori standard di importazione / esportazione come STEP, IGES, VRML
 * Visualizzatore 3D e 2D con il supporto per la selezione
 * Un documento e una struttura di dati del progetto con il supporto per salvare e ripristinare, collegamenti esterni dei documenti, il ricalcolo della cronologia del progetto (modellazione parametrica) e un sistema per caricare nuovi tipi di dati in modo dinamico come un pacchetto di estensione.

Per saperne di più su OpenCascade visitare la pagina di OpenCascade o consultare http://www.opencascade.org.

Qt
Versione: 4.1.x o superiore

Licenza: GPL v2.0/v3.0 o Commerciale (dalla versione 4.5 anche LPGL v2.1)

Non credo sia necessario dire molto su Qt. E' uno degli strumenti più utilizzati per i progetti di GUI (Interfacce grafiche) Open Source. Secondo me, i motivi principali per utilizzare Qt sono Qt Designer e la possibilità di caricare intere finestre di dialogo come risorse (XML) e di incorporarvi dei widget (componenti accessori) specializzati. In un'applicazione CAX l'interazione tra l'utente e le finestre di dialogo costituiscono sicuramente la maggior parte del codice e disporre un buon disegnatore di dialoghi è molto importante per poter estendere facilmente FreeCAD con nuove funzionalità. Ulteriori informazioni e una buona documentazione online si trova in http://www.qtsoftware.com.

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 è portabile su un'ampia gamma di piattaforme: qualsiasi piattaforma UNIX / Linux / * BSD, tutti i sistemi operativi Microsoft Windows, e Mac OS X.

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. E' stata sperimentata per un periodo di oltre 10 anni, la sua maturità contribusce 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 ....

Dalla versione 2.0 Coin utilizza un nuovo modello di licenza. Non è più LGPL. Usa GPL per l'open source e una licenza commerciale per le applicazioni closed source. Questo significa che per vendere un proprio lavoro basato su FreeCAD (moduli di estensione) è necessario acquistare una licenza Coin!

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.

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.

Xerces-C++ è fedele alla raccomandazione XML 1.0 e ai molti standard associati (vedere Caratteristiche sotto).

L'analizzatore offre elevate prestazioni, modularità e scalabilità. Il codice sorgente, gli esempi e la documentazione API sono forniti con l'analizzatore stesso. Per permettere la portabilità, si è avuto cura di fare il minimo uso di modelli, non RTTI, e il minimo uso di #ifdefs.

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

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.

Boost
Versione: 1.33.x

Licenza: Boost Software License - Versione 1.0

Le librerie Boost C++ sono un insieme di librerie open source sottoposte a revisione paritaria, librerie che estendono le funzionalità di C++. Le librerie sono rilasciate sotto Licenza Boost Software, progettate per consentire a Boost di essere utilizzato sia con progetti aperti che chiusi. Molti dei fondatori di Boost fanno parte della commissione C++ standard e diverse librerie di Boost sono state accettate per l'incorporazione nel Technical Report 1 di C++0x.

Le librerie sono destinate a una vasta gamma di utenti e di campi di applicazioni C++. Si va dalle librerie di carattere generale come SmartPtr, alle applicazioni del sistema operativo come FileSystem, alle librerie rivolte principalmente a sviluppatori di altre librerie e a utenti avanzati di C++, come la libreria MPL.

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++.

Vedere: http://www.boost.org/ per i dettagli.

LibPack
LibPack è un utile pacchetto che comprende tutte le librerie di cui sopra. Attualmente è disponibile per la piattaforma Windows sulla pagina Download! Lavorando sotto Linux non si ha bisogno di LibPack, si deve invece fare uso dei repository di pacchetti della propria distribuzione Linux.

FreeCADLibs7.x Changelog
(lista dei cambiamenti)


 * Utilizza QT 4.5.x e Coin 3.1.x
 * Aggiunta la libreria di modelli Eigen per Robot
 * SMESH sperimentale