Présentation
Dia est un logiciel de dessin permettant de faire des plans et des schémas à la manière de Microsoft Visio. Il permet en standard de faire des schémas UML, des schémas électroniques, des chronogrammes, schémas SADT / IDEF0, etc. Il possède aussi des modèles (templates) pour le schéma du génie civil et bien d'autres.
Dia permet de sauvegarder les schémas créés dans son propre format (.dia) mais également dans de nombreux autres comme en TEX (script pour reproduire le schéma), en DXF, en PNG, en EPS, et bien d'autres encore.
Installation
Pour installer Dia, utilisez simplement votre gestionnaire de paquets :
$ apt install dia
Utilisation
Pour créer un graphique, on sélectionne des objets dans la colonne de gauche et on les amène dans la zone principale du diagramme. Dia distingue deux familles d'objets (voir copie d'écran ci-dessus) :
Les
objets de base. Ces objets (nommés également "formes", ou "shapes") sont ceux le plus couramment utilisés (boîte, polygone, texte, ligne...). Ils disposent pour chacun d'entre eux d'options de configuration (par exemple, changer la taille, la police ou la couleur d'un texte).Les
objets spéciaux. Ces objets répondent à des besoins de diagrammes spécifiques (par exemples diagrammes UML, SDL, GRAFCET, Graphes de flux...), ils sont donc regroupés dans des catégories (nommées également "feuilles"ou "sheets") correspondant à ces différents usages. Certains de ces objets peuvent être trouvés dans le répertoire partagé "/usr/share/dia/shapes/", et il est alors possible de les copier et les modifier pour créer des objets personnalisés. C'est notamment le cas pour les objets de la catégorie SDL ("Specification and Description Language") :
usr/
│
└─── share/
│
└─── dia/
│
├─── samples/
│
├─── Shape_Design/
│
├─── shapes/ ("objets", "formes")
│ ├─── AUTOSAR
│ ├─── BPMN
│ ├─── ...
│ ├─── CH-1 ("CH-1 notation")
│ ├─── ...
│ ├─── Flowchart ("Graphes de flux")
│ ├─── ...
│ ├─── Misc ("Divers")
│ ├─── ...
│ └─── SDL
│ ├─── block.shape
│ ├─── block.png
│ ├─── decision.shape
│ ├─── decision.png
│ ├─── function.shape
│ ├─── function.png
│ ├─── ...
│ ├─── task.shape
│ └─── task.png
│
├─── sheets/ ("catégories", "feuilles")
│ ├─── ER
│ ├─── GRAFCET
│ ├─── Istar
│ ├─── Jackson
│ ├─── KAOS
│ └─── UML
│
├─── ui/
│
└─── xslt/
Certains objets spéciaux ne sont toutefois pas trouvés dans le répertoire partagé "/usr/share/dia/shapes/", c'est le cas par exemple des objets de la catégorie "UML", de la catégorie "Database" ("Nom de la donnée"), ou de certains objets de la catégorie "Graphes de flux" (par exemple l'objet "Flowchart - Box"). Pour ce dernier, on pourra trouver son code à l'intérieur de la librairie partagée /usr/lib/x86_64-linux-gnu/dia/libflowchart_objects.so.
S'il n'est évidemment pas possible de modifier cette librairie partagée pour personnaliser l'objet, il reste néanmoins possible de lister les différentes librairies partagées via le menu "Fichier > Plugins..." :
Création de catégories personnalisées et insertion d'objets
Pour créer ses propres objets ou catégories, aller dans le menu "Fichier > Sheets and Objects...", puis cliquer sur bouton "Nouveau" :
Nous allons tout d'abord créer une catégorie ("feuille") nommée "
Algorigramme" dans laquelle nous pourrons ensuite regrouper tous les objets nécessaires à la réalisation de ce type de schéma. Sélectionner le bouton radio "Nom de la feuille" et indiquer un nom (cela sera le nom du fichier*.sheetcréé) ainsi qu'une description (qui apparaîtra dansDia) :
À ce stade, la nouvelle catégorie apparaît dans
Dia, mais elle ne comporte encore aucun objet :
Dans le répertoire de l'utilisateur, on trouvera un dossier
.diaqui contient la définition de la nouvelle catégorie :
home/
│
└─── myUser/
│
└─── .dia/
│
├─── objects/
│
├─── shapes/ ("objets", "formes")
│
└─── sheets/ ("catégories", "feuilles")
└─── algorigramme.sheet
On peut éditer ce fichier
algorigramme.sheet, afin de voir sa structure (c'est un fichier XML), et constater qu'aucun objet n'y est encore défini :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sheet xmlns="http://www.lysator.liu.se/~alla/dia/dia-sheet-ns">
<!--Dia-Version: 0.97+git-->
<!--Fichier : /home/myUser/.dia/sheets/algorigramme.sheet-->
<!--Date : Sat Mar 25 17:58:51 2023-->
<!--Pour : myUser-->
<name>algorigramme</name>
<description>Algorigramme</description>
<contents>
<!--ajoutez des formes ici-->
</contents></sheet>
Nous allons maintenant revenir dans le menu "
Fichier > Sheets and Objects..." afin d'ajouter des objets dans notre catégorie. Dans un premier temps, nous allons simplement récupérer des objets existants dans d'autres catégories. Plusieurs objets utiles pour notre nouvelle catégorie se trouvent dans la catégorie SDL. Dans la partie droite de l'écran "Feuilles et Objets", nous sélectionnons donc tout d'abord la catégorie SDL, puis nous sélectionnons l'objet à importer dans notre catégorie (ci-dessous l'objet nommé "Décision Forme"), et enfin nous cliquons sur le bouton "Copier" :
De la même manière, nous ajoutons ensuite les objets "
Action en cours d'exécution" et "Appel de fonction", puis nous sélectionnons la catégorie "CH-1 notation" et ajoutons l'objet "Department".À ce stade, nous cliquons sur le bouton "
Nouveau" et sélectionnons le bouton radio "Rupture de ligne" : nous souhaitons en effet que les objets suivants, concernant les "exécutions de fonctions", se trouvent sur une nouvelle ligne.Nous revenons maintenant sans la catégorie "
SDL" et ajoutons les objets relatifs aux "exécutions de fonctions" : "En-tête de fonction" et "Retour de procédure". L'écran "Feuilles et Objets" se présente alors de la manière suivante :
Nous pouvons constater que le contenu du fichier "
algorigramme.sheet" a été mis à jour, il contient maintenant les noms des objets que nous avons importés :
<name>algorigramme</name>
<description>Algorigramme</description>
<contents>
<!--ajoutez des formes ici-->
<object name="SDL - Decision">
<description>Décision</description></object><object name="SDL - Task">
<description>Action en cours d'exécution</description></object><object name="SDL - Function">
<description>Appel de fonction</description></object><object name="CH-1 - Department">
<description>Department</description></object><object name="SDL - Function Header">
<description>En-tête de fonction</description></object><object name="SDL - Return">
<description>Retour de procédure</description></object>
</contents></sheet>
Création de nouveaux objets
Il peut être utile de créer ses propres objets, si l'on ne trouve dans aucune catégorie existante d'objet correspondant à ses besoins, ou bien si l'on souhaite juste modifier de manière mineure un objet existant pour l'adapter à notre besoin.
Pour notre catégorie "Algorigramme", nous allons juste reprendre les six objets que nous avons importés, afin de modifier leur dénomination et l'icône qui les représente.
Voici le tableau qui liste les six objets et les modifications à apporter :
| Catégorie d'origine | Nom système de l'objet | Nom français de l'objet | Chemin d'accès du fichier | Nouveau nom système | Nouveau nom français |
|---|---|---|---|---|---|
| SDL | SDL - Decision | Décision | /usr/share/dia/shapes/SDL/decision.shape | Algo - Choice | Choix |
| SDL | SDL - Task | Action en cours d'exécution | /usr/share/dia/shapes/SDL/task.shape | Algo - Action | Action |
| SDL | SDL - Function | Appel de fonction | /usr/share/dia/shapes/SDL/function.shape | Algo - Function | Fonction |
| CH-1 | CH-1 - Department | Department | /usr/share/dia/shapes/CH-1/department.shape | Algo - StartEnd | Début/Fin |
| SDL | SDL - Function Header | En-tête de fonction | /usr/share/dia/shapes/SDL/header.shape | Algo - StartFunction | Début de fonction |
| SDL | SDL - Return | Retour de procédure | /usr/share/dia/shapes/SDL/return.shape | Algo - EndFunction | Fin de fonction |
Aux chemins indiqués ci-dessus, nous allons nous rendre et copier les fichiers *.shape et *.png correspondants :
decision.shape
department.shape
function.shape
header.shape
return.shape
task.shape
decision.png
department.png
function.png
header.png
return.png
task.png
Nous prenons ensuite le premier objet ("decision.shape") et renommons les deux fichiers correspondants en "choice.shape" et "choice.png". Puis, nous éditons le fichier renommé "choice.shape" et mettons à jour les balises <name>, <description> et <icon> :
<?xml version="1.0"?>
<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns" xmlns:svg="http://www.w3.org/2000/svg">
<name>Algo - Choice</name>
<description>Choix</description>
<icon>choice.png</icon>
<connections>
<point x="1.25" y="0"/>
<point x="1.25" y="2.5"/>
<point x="2.5" y="1.25"/>
<point x="0" y="1.25"/>
<point x="1.25" y="1.25" main="yes"/>
</connections>
<textbox x1="0.65" y1="0.65" x2="1.90" y2="1.90"/>
<svg:svg width="2.5" height="2.5">
<svg:polygon points="1.25,0 2.5,1.25 1.25,2.5 0,1.25" style="fill: default"/>
</svg:svg>
</shape>
Enfin, nous modifions le fichier "choice.png" en personnalisant l'image.
Nous répétons ces étapes pour les cinq autres objets.
À l'issue de ces opérations, nous retournons dans le menu "Fichier > Sheets and Objects...", cliquons sur le bouton "Nouveau", sélectionnons le bouton radio "Forme SVG", et allons chercher l'un de nos six nouveaux fichiers *.shape :
Nous répétons les étapes précédentes pour créer les cinq autres objets. À l'issue de ces opérations, la catégorie "Algorigramme" se présente comme suit :
Utilisation d'objets contenant du texte
Lorsque l'on choisit un objet contenant du texte pour l'insérer dans notre diagramme, le curseur se positionne automatiquement à l'intérieur de l'objet, et il est alors possible de saisir son texte :
Une fois le texte saisi, on peut sortir de l'objet en cliquant à l'extérieur de celui-ci, dans une zone vierge du diagramme.
Toutefois, si l'on souhaite modifier le texte saisi, un double-clic sur celui-ci ne le permet pas car cela ouvre la fenêtre des propriétés de l'objet :
La solution pour modifier un texte consiste donc à sélectionner l'objet souhaité, puis cliquer sur l'icône "Édite le texte", dans la liste des icônes des objets de base :
Utilisation de l'objet Zigzag
L'objet de base Zigzag permet de relier entre eux les différents éléments du diagramme ; il peut s'attacher aux points de connexion des différents objets, ce qui lui permet de suivre ces objets lorsqu'on les déplace dans le diagramme :
Une fois le lien entre deux objets défini au moyen de l'outil Zigzag, un double-clic sur celui-ci permet d'afficher ses propriétés. On peut notamment définir la largeur, le style et la couleur des lignes, arrondir les angles des segments, ajouter des flèches de début et de fin dans différents styles.
Si l'option "Autoroute" est positionnée à "Oui", le lien entre deux objets prendra toujours le chemin le plus court.
Il peut être utile d'ajouter un segment sur un Zigzag, par exemple pour contourner un nouvel objet. Cela se réalise en faisant un clic droit sur le Zigzag, puis en sélectionnant "Ajouter un segment". De la même manière, il est possible de "Supprimer le segment" créé :
Le Zigzag ne dispose malheureusement pas d'option "Texte" intégré. Pour insérer un texte au début ou à la fin d'un Zigzag, il est donc nécessaire de cliquer sur l'icône "Texte" dans la palette des objets de base, et d'insérer le texte manuellement :