# ATL MOF et leurs copains

**URL:** <https://www.debian-fr.org/t/atl-mof-et-leurs-copains/10852>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 4:48 UTC](https://www.debian-fr.org/t/atl-mof-et-leurs-copains/10852 "2016-02-20T16:48:53Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![thorgrim](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/2acd7d/32.png) [@thorgrim](https://www.debian-fr.org/u/thorgrim)\
**Post date:** [Février 20, 2016, 4:48 UTC](https://www.debian-fr.org/t/atl-mof-et-leurs-copains/10852/1 "2016-02-20T16:48:53Z")

</div>

Alors voila, je planche actuellement sur un problème de transformations ATL pour passer d’un arbre à un autre. Les arbres sont des Octrees utilisés (de ce que dis le prof) dans les représentations en 3D. Mais ça on s’y intéresse pas, nous on cherche juste à réaliser des transformations d’un arbre vers un autre. Par exemple on doit réaliser l’opération inverse.

Pour cela on utilise Eclipse et le plugin ATL qui va bien et les fichiers d’exemple nous ont été fournis par le prof. J’ai écris mon modèle KM3 définissant les arbres et une transformation basique pour passer d’un arbre à juste un objet contenant la dimension de l’arbre d’origine. Le soucis c’est que je n’arrive pas à exécuter ma transformation. Je me retrouve toujours avec un NullPointerException et la cause semble être :

```auto
org.xml.sax.SAXParseException: The prefix "xsi" for attribute "xsi:type" associated with an element type "root" is not bound.
```

J’ai tourné et retourné mais n’ai rien trouvé. Alors j’en viens à vous poser la question des fois qu’il y ait dans l’assemblée un expert incollable sur ATL, XMI et tous leurs amis (qui sont pas les miens sur le coup ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green") ).

Je vous colle mon modèle :

`package Octree {
       class Octree {
               attribute dimension : Integer;
               reference root : Voxel;
       }
       class Voxel {
               reference divisible[0-1] : Divisible oppositeOf voxels;
       }
       class Divisible extends Voxel {
               reference voxels[8-8] container : Voxel oppositeOf divisible;
       }
       class Full extends Voxel {
       }
       class Empty extends Voxel {
       }
}`

Et ma transformation :

[code]module Inverse; – Module Template  
create OUT : Octree from IN : Octree;

uses libOctree; – defines helpers

rule Inverse {  
from  
arbre : Octree!Octree  
to  
inverse : Octree!Octree (  
dimension \<- arbre.dimension  
)  
}  
[/code]

Et le meilleur pour la fin, un exemple d’arbre :

`<?xml version="1.0" encoding="ASCII"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns="Octree">
   <Octree dimension="8">
      <root xsi:type="Divisible">
         <voxels xsi:type="Empty"/>
         <voxels xsi:type="Empty"/>
         <voxels xsi:type="Empty"/>
         <voxels xsi:type="Empty"/>
         <voxels xsi:type="Empty"/>
         <voxels xsi:type="Empty"/>
         <voxels xsi:type="Divisible">
            <voxels xsi:type="Empty"/>
            <voxels xsi:type="Empty"/>
            <voxels xsi:type="Empty"/>
            <voxels xsi:type="Empty"/>
            <voxels xsi:type="Empty"/>
            <voxels xsi:type="Empty"/>
            <voxels xsi:type="Full"/>
            <voxels xsi:type="Empty"/>
         </voxels>
         <voxels xsi:type="Empty"/>
      </root>
   </Octree>
</xmi:XMI>`

Et si quelqu’un a une quelconque idée de la choucroute de pourquoi j’ai cette erreur, je le remercie bien beaucoup 😆

Et moi je passe à mon cours sur les communication, RMI, sockets et compagnie… (mais pourquoi je me suis inscrit en master à distance cette année ??? 😆 )

---

<div class="post-metadata">

**Author:** ![ours-blanc](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/o/7993a0/32.png) [@ours-blanc](https://www.debian-fr.org/u/ours-blanc)\
**Post date:** [Février 20, 2016, 4:52 UTC](https://www.debian-fr.org/t/atl-mof-et-leurs-copains/10852/2 "2016-02-20T16:52:14Z")

</div>

sorry, je peux pas t’aider pour ton probleme, mais comme tu as dit que tu faisais un master a distance, peux tu me dire dans quelle universite tu le fais?

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 4:52 UTC](https://www.debian-fr.org/t/atl-mof-et-leurs-copains/10852/3 "2016-02-20T16:52:15Z")

</div>

Non, mais je peux t’expliquer en quoi les Octrees sont utiles par exemple dans la simulation de l’évolution d’une galaxie… 🙂

---

<div class="post-metadata">

**Author:** ![thorgrim](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/2acd7d/32.png) [@thorgrim](https://www.debian-fr.org/u/thorgrim)\
**Post date:** [Février 20, 2016, 4:52 UTC](https://www.debian-fr.org/t/atl-mof-et-leurs-copains/10852/4 "2016-02-20T16:52:15Z")

</div>

> [@](#):
>
> sorry, je peux pas t’aider pour ton probleme, mais comme tu as dit que tu faisais un master a distance, peux tu me dire dans quelle universite tu le fais?

Je suis inscrit à la fac de Besançon, plus exactement au Centre de Télé-Enseignement Universitaire ( [www-ctu.univ-fcomte.fr/](http://www-ctu.univ-fcomte.fr/) )

> [@](#):
>
> Non, mais je peux t’expliquer en quoi les Octrees sont utiles par exemple dans la simulation de l’évolution d’une galaxie…

Là ils étaient présentés pour leur utilisation dans le graphisme en 3D. Mais en fait l’application n’était pas importante, ce qui était demandé était juste de la transformation d’arbre, enre passer d’un arbre vide à un arbre plein, inverser les fils, ce genre de chose.

Et pour mon problème, après moultes essais et discution rapide avec le prof responsable du module, j’ai iconclu à un problème de compatibilité entre les fichiers d’exemple donnés et la version d’Eclipse, ATL MOF et leurs amis que j’utilisait. J’avais mis Eclipse de Sid et installé les plugin qu’il fallait, mais j’ai dû passer à une vieille version d’Eclipse avec les modules de l’époque pour que ça marche…
