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!

ODE (Open dynamic engine)
Versione: 0.10.0 o superiore

Licenza: LGPL v2.1 o superiore o BSD

ODE è una libreria open source, ad alte prestazioni per la simulazione della dinamica dei corpi rigidi. E' ricco di funzioni, stabile, maturo e indipendente dalla piattaforma, con una API C/C++ facile da usare. Ha tipi di unioni avanzate e integra il rilevamento delle collisioni con attrito. ODE è utile per simulare veicoli, oggetti in ambienti di realtà virtuale e creature virtuali. Attualmente è utilizzato in molti giochi per computer, strumenti di opere 3D e strumenti di simulazione.

Crediti
Russell Smith è l'autore principale di ODE.

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.

GTS
Versione: 0.7.x

Licenza: LGPL v2.0 o superiore

GTS è presente per la Libreria di Superfici Triangolate GNU (GNU Triangulated Surface Library). Si tratta di una Open Source Free Software Library destinata a fornire una serie di funzioni utili per lavorare con le superfici 3D a maglie triangolari interconnesse (Mesh). Il codice sorgente è disponibile gratuitamente con licenza LGPL Free Software.

Normalmente non è necessaria per compilare FreeCAD. È possibile commutarne l'utilizzo con un preprocessore in FCConfig.h.

Zlib
Versione: 1.x.x

Licenza: zlib

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