Dans ce projet, nous avons souhaité utiliser un moteur graphique 'sur étagère' pour prendre en charge l'affichage et l'interaction avec les données spatiales. Pour plusieurs raisons : (1) les optimisations propres à ce genre d'outils sont une affaire de spécialistes, et (2) nous souhaitions pouvoir intégrer différents moteurs graphiques. Nous avons défini une interface neutre pour isoler ViSit Anywhere du moteur graphique ; nous avons ensuite développé deux implémentations concrètes de cette interface : pour Microstation XM dans un premier temps, puis pour un composant librement redistribuable ensuite. Nous pensons être en mesure de faire une implémentation similaire pour Autocad en quelques semaines, sil le besoin s'en fait sentir.
Dans cette introduction, j'ai volontairement simplifié mon discours en parlant d'une interface. En réalité, nous avons conçu plusieurs interfaces, pour mieux décrire les fonctionnalités requises et permettre différents niveaux d'implémentation. Nous avons identifié quatre domaines clés pour décrire les interactions entre ViSit Anywhere et un moteur graphique quelconque :
- l'intégration de l'interface utilisateur,
- l'affichage de fichiers graphiques (vecteur et raster), assurant la continuité spatiale ('seamless mapping'),
- la composition et l'impression,
- la manipulation par l'utilisateur d'objets graphiques.
Intégration de l'interface utilisateur : l'objectif est de présenter une interface identique quelque soit le moteur choisi. Un moteur graphique 'composant de programme' s'intègre comme un simple contrôle dans l'application, pas un éditeur évolué tel que Microstation. L'interface permet d'isoler ViSit Anywhere de ces détails, qu'il héberge le moteur graphique ou qu'il soit intégré dans Microstation XM.
Avec un composant CAO, le graphique est complètement intégré dans la fenêtre de l'application ViSit Anywhere.
Avec un moteur CAO comme Microstation XM de Bentley Systems, la fenêtre de l'application est intégrée dans l'éditeur. L'interface ViSit Anywhere est identique, et tous les outils de Microstation restent accessibles.Affichage de fichiers graphiques : La performance de ViSit Anywhere au niveau de l'affichage des données graphiques repose sur l'utilisation de fichiers graphiques optimisés pour le moteur graphique, même pour les données spatiales managées (gérées au niveau de l'objet par le gestionnaire de transactions). L'interface isole ViSit Anywhere des détails d'implémentation en fournissant un modèle abstrait de description des fichiers et des couches. Le rendu graphique peut être légèrement différent d'un moteur à l'autre, mais le contenu et le géo-référencement des données sont identiques.
Composition et impression : chaque moteur utilise un paradigme spécifique pour décrire la composition de données et piloter les impressions. L'interface repose un modèle abstrait de description des compositions (cartouche, mise en page et mise à l'échelle, encarts, etc). Son implémentation est optionnelle.
Manipulation d'objet graphiques : Dans ViSit Anywhere, l'utilisateur manipule les données spatiales managées à l'aide d'outils développés en .NET. L'interface de programmation isole complètement l'outil (1) de la gestion des changements (alimentation de la transaction longue) et (2) du moteur graphique sous-jacent. Pour uniformiser l'interaction avec les données spatiales, nous avons du choisir entre plusieurs approches : sélection préalable puis choix de la commande ou manipulation à l'aide de poignées, choix préalable de la commande puis identification / acceptation (ou rejet) à l'aide des boutons de la souris, etc... Nous avons retenu le modèle de Microstation, qui conjugue productivité et intuitivité. L'objet identifié sous le curseur (automatiquement ou par un clic gauche) est proposé (surbrillance) ; l'utilisateur peut l'accepter (clic gauche) ou le rejeter (clic droit pour atteindre le prochain élément). Pour la petite histoire, le fait d'adopter le modèle mis en oeuvre dans Microstation ne nous a pas fait économiser une implémentation : nous avons trouvé une erreur dans Microstation XM (reconnue par Bentley) , et nous avons du complètement le reprogrammer.
La mise en place d'une interface générique vers un moteur graphique a représenté un gros travail de conception, mais les gains obtenus sont considérables : indépendance vis à vis des fournisseurs de technologie CAO, limitation du code spécifique, uniformisation de l'interface, souplesse de déploiement, capacité d'évolution. Alors, quel moteur utiliser ? Le bureau d'étude travaillera toujours avec Microstation (ou Autocad), pour conjuguer sa richesse fonctionnelle au travail collaboratif sous Visit Anywhere. La majorité des utilisateurs trouvera dans les outils de ViSit Anywhere toutes les fonctionnalités requises pour ses tâches et utilisera le composant graphique intégré, moins coûteux et plus facile à déployer.