FreeCAD-Doc/localwiki/Third_Party_Libraries-it.html
2018-07-19 18:47:02 -05:00

222 lines
18 KiB
HTML

<html><head><title>Third Party Libraries/it</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>Third Party Libraries/it</h1></div>
<div id="mw-content-text" lang="it" dir="ltr" class="mw-content-ltr"><hr/><div class="mw-parser-output"><div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Panoramica"><span class="tocnumber">1</span> <span class="toctext">Panoramica</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Link"><span class="tocnumber">2</span> <span class="toctext">Link</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#Dettagli"><span class="tocnumber">3</span> <span class="toctext">Dettagli</span></a>
<ul>
<li class="toclevel-2 tocsection-4"><a href="#Python"><span class="tocnumber">3.1</span> <span class="toctext">Python</span></a>
<ul>
<li class="toclevel-3 tocsection-5"><a href="#Descrizione"><span class="tocnumber">3.1.1</span> <span class="toctext">Descrizione</span></a></li>
<li class="toclevel-3 tocsection-6"><a href="#Crediti"><span class="tocnumber">3.1.2</span> <span class="toctext">Crediti</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-7"><a href="#OpenCasCade"><span class="tocnumber">3.2</span> <span class="toctext">OpenCasCade</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="#Qt"><span class="tocnumber">3.3</span> <span class="toctext">Qt</span></a></li>
<li class="toclevel-2 tocsection-9"><a href="#Coin3D"><span class="tocnumber">3.4</span> <span class="toctext">Coin3D</span></a></li>
<li class="toclevel-2 tocsection-10"><a href="#SoQt"><span class="tocnumber">3.5</span> <span class="toctext">SoQt</span></a></li>
<li class="toclevel-2 tocsection-11"><a href="#Xerces-C.2B.2B"><span class="tocnumber">3.6</span> <span class="toctext">Xerces-C++</span></a></li>
<li class="toclevel-2 tocsection-12"><a href="#Zlib"><span class="tocnumber">3.7</span> <span class="toctext">Zlib</span></a></li>
<li class="toclevel-2 tocsection-13"><a href="#Boost"><span class="tocnumber">3.8</span> <span class="toctext">Boost</span></a></li>
<li class="toclevel-2 tocsection-14"><a href="#libarea"><span class="tocnumber">3.9</span> <span class="toctext">libarea</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-15"><a href="#LibPack"><span class="tocnumber">4</span> <span class="toctext">LibPack</span></a>
<ul>
<li class="toclevel-2 tocsection-16"><a href="#FreeCADLibs7.x_Changelog"><span class="tocnumber">4.1</span> <span class="toctext">FreeCADLibs7.x Changelog</span></a></li>
</ul>
</li>
</ul>
</div>
<h3><span class="mw-headline" id="Panoramica">Panoramica</span></h3>
<p>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.
</p><p>Per l'ambiente Windows, considerare la possibilità di usare <a href="#LibPack.2Fit">LibPack</a> invece di scaricare e installare tutto da soli.
</p><p>Le librerie utilizzate sono:
</p>
<h3><span class="mw-headline" id="Link">Link</span></h3>
<table class="wikitable" style="text-align:left">
<caption> Link table
</caption>
<tr>
<th> Lib name </th>
<th> Version needed </th>
<th> Link to get it
</th></tr>
<tr>
<td> Python </td>
<td> &gt;= 2.5.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.python.org/">http://www.python.org/</a>
</td></tr>
<tr>
<td> OpenCasCade </td>
<td> &gt;= 5.2 </td>
<td> <a rel="nofollow" class="external free" href="http://www.opencascade.org">http://www.opencascade.org</a>
</td></tr>
<tr>
<td> Qt </td>
<td> &gt;= 4.1.x </td>
<td> <a rel="nofollow" class="external free" href="https://www.qt.io/">https://www.qt.io/</a>
</td></tr>
<tr>
<td> Coin3D </td>
<td> &gt;= 2.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.coin3d.org">http://www.coin3d.org</a>
</td></tr>
<tr>
<td> SoQt </td>
<td> &gt;= 1.2 </td>
<td> <a rel="nofollow" class="external free" href="http://www.coin3d.org">http://www.coin3d.org</a>
</td></tr>
<tr>
<td> Xerces-C++ </td>
<td> &gt;= 2.7.x &lt; 3.0 </td>
<td> <a rel="nofollow" class="external free" href="http://xml.apache.org/xerces-c/">http://xml.apache.org/xerces-c/</a>
</td></tr>
<tr>
<td> Zlib </td>
<td> &gt;= 1.x.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.zlib.net/">http://www.zlib.net/</a>
</td></tr>
<tr>
<td> Boost </td>
<td> &gt;= 1.33.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.boost.org/">http://www.boost.org/</a>
</td></tr>
<tr>
<td> Eigen3 </td>
<td> &gt;= 3.0.1 </td>
<td> <a rel="nofollow" class="external free" href="https://www.freecadweb.org/wiki/index.php?title=Main_Page">http://eigen.tuxfamily.org/index.php?title=Main_Page</a>
</td></tr>
<tr>
<td> Shiboken </td>
<td> &gt;= 1.1.2 </td>
<td> <a rel="nofollow" class="external free" href="http://shiboken.readthedocs.org/en/latest/">http://shiboken.readthedocs.org/en/latest/</a>
</td></tr>
<tr>
<td> libarea </td>
<td> N/A </td>
<td> <a rel="nofollow" class="external free" href="https://github.com/danielfalck/libarea">https://github.com/danielfalck/libarea</a>
</td></tr>
</table>
<h3><span class="mw-headline" id="Dettagli">Dettagli</span></h3>
<h4><span class="mw-headline" id="Python">Python</span></h4>
<p><b>Versione:</b> 2.5 o superiore
</p><p><b>Licenza:</b> licenza Python 2.5
</p><p>È possibile utilizzare il codice sorgente o i binari forniti da <a rel="nofollow" class="external free" href="http://www.python.org/">http://www.python.org/</a> oppure, in alternativa, utilizzare ActiveState Python fornito da <a rel="nofollow" class="external free" href="http://www.activestate.com/">http://www.activestate.com/</a> anche se è un po' difficile ottenere le librerie di debug da ActiveState.
</p>
<h5><span class="mw-headline" id="Descrizione">Descrizione</span></h5>
<p>Python è il linguaggio di script primario ed è usato in tutta l'applicazione, ad esempio, per:
</p>
<ul><li> Implementare script di test per verificare:
<ul><li> perdite di memoria,</li>
<li> accertare la presenza di funzionalità dopo delle modifiche,</li>
<li> eseguire controlli dopo la costruzione,</li>
<li> verificare la copertura dei test.</li></ul></li>
<li> Macro e registrazione di macro.</li>
<li> Implementare la logica di applicazione di pacchetti standard.</li>
<li> Implementazione di ambienti completi.</li>
<li> Caricamento dinamico dei pacchetti.</li>
<li> Implementazione delle regole per il disegno (Knowledge engineering) Ndt: Migliorare i processi di progettazione (Base di conoscenza di ingegneria). </li>
<li> Fare varie cose in Internet quali i gruppi di lavoro e PDM (Product Data Management - Gestore dei Dati di Prodotto).</li>
<li> E altro ancora...</li></ul>
<p>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.
</p><p>Per maggiori informazioni su Python vedere: www.python.org .
</p><p>Qualcuno potrebbe chiedere: perché proprio Python? Ci sono diversi motivi. Finora, nella mia vita professionale ho usato diversi linguaggi di script:
</p>
<ul><li> Perl</li>
<li> Tcl/Tk</li>
<li> VB</li>
<li> Java</li></ul>
<p>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.
</p>
<h5><span class="mw-headline" id="Crediti">Crediti</span></h5>
<p>Un ringraziamento a Guido van Rossum e alle molte persone che hanno permesso tale successo a Python!
</p>
<h4><span class="mw-headline" id="OpenCasCade">OpenCasCade</span></h4>
<p><b>Versione:</b> 5.2 o superiore
</p><p><b>Licenza:</b> v6.7.0 and later are governed by GNU Lesser General Public License (LGPL) version 2.1 with additional exception. <a rel="nofollow" class="external free" href="https://www.opencascade.com/content/licensing">https://www.opencascade.com/content/licensing</a> Earlier versions use a slightly different license: <a rel="nofollow" class="external free" href="https://www.opencascade.com/content/occt-public-license">https://www.opencascade.com/content/occt-public-license</a>
</p><p>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:
</p>
<ul><li> Un kernel di geometria che supporta STEP</li>
<li> Un modello topologico di dati e tutte le funzioni necessarie per lavorare con essi (taglio, fusione, estrusione, ecc ...)</li>
<li> Processori standard di importazione / esportazione come STEP, IGES, VRML</li>
<li> Visualizzatore 3D e 2D con il supporto per la selezione</li>
<li> 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.</li></ul>
<p>Per saperne di più su OpenCascade visitare la pagina di OpenCascade o consultare <a rel="nofollow" class="external free" href="http://www.opencascade.org">http://www.opencascade.org</a>.
</p>
<h4><span class="mw-headline" id="Qt">Qt</span></h4>
<p><b>Versione:</b> 4.1.x o superiore
</p><p><b>Licenza:</b> GPL v2.0/v3.0 o Commerciale (dalla versione 4.5 anche LPGL v2.1)
</p><p>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 <a rel="nofollow" class="external free" href="http://www.qtsoftware.com">http://www.qtsoftware.com</a>.
</p>
<h4><span class="mw-headline" id="Coin3D">Coin3D</span></h4>
<p><b>Versione:</b> 2.0 o superiore
</p><p><b>Licenza:</b> GPL v2.0 o Commerciale
</p><p>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.
</p><p>Coin è portabile su un'ampia gamma di piattaforme: qualsiasi piattaforma UNIX / Linux / * BSD, tutti i sistemi operativi Microsoft Windows, e Mac OS X.
</p><p>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.
</p><p>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.
</p><p>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 ....
</p><p>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!
</p>
<h4><span class="mw-headline" id="SoQt">SoQt</span></h4>
<p><b>Versione:</b> 1.2.0 o superiore
</p><p><b>Licenza:</b> GPL v2.0 o Commerciale
</p><p>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.
</p>
<h4><span class="mw-headline" id="Xerces-C.2B.2B">Xerces-C++</span></h4>
<p><b>Versione:</b> 2.7.0 o superiore
</p><p><b>Licenza:</b> Apache Software License Versión 2.0
</p><p>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.
</p><p>Xerces-C++ è fedele alla raccomandazione XML 1.0 e ai molti standard associati (vedere Caratteristiche sotto).
</p><p>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.
</p><p>In FreeCAD il parser è utilizzato per salvare e ripristinare i parametri.
</p>
<h4><span class="mw-headline" id="Zlib">Zlib</span></h4>
<p><b>Versione:</b> 1.x.x
</p><p><b>Licenza:</b> zlib
</p><p>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.
</p>
<h4><span class="mw-headline" id="Boost">Boost</span></h4>
<p><b>Versione:</b> 1.33.x
</p><p><b>Licenza:</b> Boost Software License - Versione 1.0
</p><p>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.
</p><p>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.
</p><p>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++.
</p><p>Vedere: <a rel="nofollow" class="external free" href="http://www.boost.org/">http://www.boost.org/</a> per i dettagli.
</p>
<h4><span class="mw-headline" id="libarea">libarea</span></h4>
<p><b>Versione:</b> N/A
</p><p><b>Licenza:</b> New BSD (BSD 3-Clause)
</p><p>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.
</p>
<h3><span class="mw-headline" id="LibPack">LibPack</span></h3>
<p>LibPack è un utile pacchetto che comprende tutte le librerie di cui sopra. Attualmente è disponibile per la piattaforma Windows sulla pagina <a href="https://www.freecadweb.org/wiki/index.php?title=Download/it" title="Download/it">Download</a>! Lavorando sotto Linux non si ha bisogno di LibPack, si deve invece fare uso dei repository di pacchetti della propria distribuzione Linux.
</p>
<h4><span class="mw-headline" id="FreeCADLibs7.x_Changelog">FreeCADLibs7.x Changelog</span></h4>
<p>(lista dei cambiamenti)
</p>
<ul><li> Utilizza QT 4.5.x e Coin 3.1.x</li>
<li> Aggiunta la libreria di modelli Eigen per Robot</li>
<li> SMESH sperimentale </li></ul>
<p><br />
</p>
<div style="clear:both"></div>
</div>
</div>
</div><div class="printfooter">
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=Third_Party_Libraries/it&amp;oldid=253560">http://www.freecadweb.org/wiki/index.php?title=Third_Party_Libraries/it&amp;oldid=253560</a>"</div>
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigation menu</h2>
</body></html>