La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Integrazione di un linguaggio accademico in un ambiente CAD industriale Laureando: Giorgio Scorzelli Relatore: Prof. Paoluzzi.

Presentazioni simili


Presentazione sul tema: "Integrazione di un linguaggio accademico in un ambiente CAD industriale Laureando: Giorgio Scorzelli Relatore: Prof. Paoluzzi."— Transcript della presentazione:

1 Integrazione di un linguaggio accademico in un ambiente CAD industriale Laureando: Giorgio Scorzelli Relatore: Prof. Paoluzzi

2 Indice Scheme e Open Cascade. Soluzioni per lintegrazione dei linguaggi. La Foreign Function Interface come soluzione per lintegrazione. Il linguaggio C++. Logica statica e logica dinamica di invocazione. Generazione di alcuni modelli geometrici. Conclusioni.

3 Un ambiente funzionale: Scheme Storia : 1975 Scheme come dialetto Lisp 1978 Revised Report on SCHEME. A Dialect of LISP (Guy Lewis Steele Jr. and Gerald Jay Sussman) 1982 Corsi universitari (MIT, Yale, Indiana University) 1998 The revised (5) report on the algorithmic language Scheme Semplicità Implementazione MzScheme (PLT, Rice University) Integrated Development Environment (IDE): DrScheme Multipiattaforma (wxWindows come libreria GUI)

4 Un ambiente di progettazione assistita: Open Cascade Storia 1980 Matra Datavision: Euclid 1990 Cas.CADE (CASE + CAD) dal progetto Eureka 1999 società servizi software: open source Servizi geometrici: Foundation Classes Modeling Data Modeling Algorithms Visualization Data Exchange Processor Servizi non geometrici Component Definition Language (CDL) Workshop Organization Kit (WOK)

5 Cooperazione tra linguaggi. Linguaggi imperativi e linguaggi funzionali. Piattaforme distribuite: CORBA e DCOM Integrazione locale: Foreign Function Interfaces Infrastruttura per la comunicazione. Oggetti software indipendenti: client e server. Interface Repository (IR) per laccesso ai servizi. Condivisione della memoria, stesso processo. Stesse strutture dati: problema della traduzione. Componente di interfaccia tra linguaggi.

6 Foreign Function Interface (FFI) Storia Prima apparizione in Lisp: funzioni C come call out functions o foreign functions Definizione: collaborazione tra codice che viene eseguito in uno spazio degli indirizzi condiviso. Problemi: Tecniche gestione memoria (reference counting, gc etc) Conversione tra inside ed outside types Fenomeno del Side effect Differenti Error Handler Funzioni come first class objects Le azioni di una FFI: 1.Library Loading. Accesso alle librerie secondo due approcci: statico e dinamico. 2.Address Binding. Recupero dellindirizzo della funzione (risoluzione dei cross references). 3.Input Parameters. Caricamento e conversione nello stack. Modalità di passaggio dei valori. 4.Output Parameters. Restituzione del valore di uscita packed per la shell.

7 Ciclo di produzione software C/C++. Logica statica. 1.Scrittura codice sorgente: header files e files dellimplementazione. Compiti del compilatore: Allocazione regioni di memoria Controllo correttezza argomenti. Risoluzione collisioni. 2.Generazione degli object files. 3.Link degli object files.

8 Funzioni C++ in ambiente interpretato. Logica dinamica. Compilatore dinamico: Conversioni implicite dinamiche Overloading solver dinamico Files di interfaccia come strumenti per la conoscenza: Header files C++ Sintassi semplificata: CORBA Interface Definition Language IDL Component Definition Language CDL di Open Cascade

9 Soluzioni per lintegrazione Sorgenti CDL Strutture dinamiche del package MS Sorgenti Cpp: file hxx e cxx CDL Front CPP Extractor CPP Extractor Sviluppo dell' implementazione CPP Extractor Scheme Extractor CPP Extractor Interprete Scheme Generatore del codice della FFI Modalità di invocazione delle funzioni C++

10 Meccanismi duso Prototipo CDL Create(dx,dy,dz:Real) returns MakeBox from BRepPrimApi Prototipo C++ generato dal programma Cpp Extractor BRepPrimAPI_MakeBox( const Standard_Real dx, const Standard_Real dy, const Standard_Real dz); Wrapper Scheme (define (make-box x y z) (make-object BRepPrimApi_MakeBox% x y z)) Uso interattivo della make-box (make-box 1 2 3)

11 Esempi: Modello toroidale Oggetti toroidali appoggiati su sfera. (define (radius z) (sqrt (- 1 (* z z)))) (define (torus-on-sphere the-list) (composite (map (lambda (z) (translate (torus (radius z) 0.05) z)) the-list))) (torus-on-sphere (list )

12 Esempi: animazione

13 Esempi: funzione sombrero Funzione da visualizzare: (define domain (mult (make-list ) (make-list ))) (define codomain (apply-f myfun domain)) (define spheres (make-list-of-sphere (length codomain))) (define spheres-in-space (map translate spheres codomain))

14 Esempi: generazione automatica di labirinti (define (maze-builder dim filename) (let* ((v (make-list 0 (- dim 1))) (array (make-multiply v v)) (maze (make-object SchemeTest_Maze% dim dim)) (make-iter-cell (lambda (coord) (let ((x (car coord)) (y (car (cdr coord)))) (move-cell (make-single-cell (send maze Left x y) (send maze Up x y) (send maze Right x y) (send maze Down x y)) x y)))) (lis (map make-iter-cell array)) (ret (composite lis))) (print-brep ret filename)))

15 Risultati e conclusioni Integrazione su base locale del linguaggio funzionale Scheme con il linguaggio imperativo C++ Automaticamente disponibili da Scheme circa classi di Open Cascade Possibilità di sviluppo interattivo di applicazioni CAD Sito Web

16 Ocas Core Team


Scaricare ppt "Integrazione di un linguaggio accademico in un ambiente CAD industriale Laureando: Giorgio Scorzelli Relatore: Prof. Paoluzzi."

Presentazioni simili


Annunci Google