ATL MOF et leurs copains

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 :

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: ).

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 :laughing:

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 ??? :laughing: )

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?

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

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

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…