Créer un organigramme C#

Un organigramme ORG est un diagramme visuel qui représente la hiérarchie des employés dans une organisation. Il contient leurs rôles, responsabilités, position, etc. et d’autres informations pertinentes. Vous pouvez créer différents types d’organigrammes avec quelques appels d’API sans avoir besoin de dessiner manuellement des formes ou des connexions. Cet article explique comment créer un organigramme en C#.

Créateur d’organigrammes - Installation de l’API C#

L’API Aspose.Diagram pour .NET prend en charge l’utilisation de différents types de diagrammes et de graphiques. Accédez simplement à l’API en téléchargeant son fichier DLL depuis la section New Releases ou avec la commande d’installation NuGet suivante :

PM> Install-Package Aspose.Diagram

Créer un organigramme dans le style CompactTree en C

Vous pouvez créer un organigramme dans le style CompactTree en suivant les étapes ci-dessous :

  1. Chargez des modèles à partir de n’importe quel diagramme, gabarit ou modèle existant.
  2. Définissez des valeurs pour construire la hiérarchie.
  3. Ajoutez des formes et des connexions entre les nœuds.
  4. Enregistrez le diagramme de sortie.

L’extrait de code ci-dessous explique comment créer un organigramme en C# :

// Charger des maîtres à partir de n'importe quel diagramme, gabarit ou modèle existant
string visioStencil = "Basic Shapes.vss";
const string rectangleMaster = "Rectangle";
const string connectorMaster = "Dynamic connector";
const int pageNumber = 0;
const double width = 1;
const double height = 1;
double pinX = 4.25;
double pinY = 9.5;
// Définir des valeurs pour construire la hiérarchie
List<string> listPos = new List<string>(new string[] { "0", "0:0", "0:1", "0:2", "0:3", "0:4", "0:5", "0:6", "0:0:0", "0:0:1", "0:3:0", "0:3:1", "0:3:2", "0:6:0", "0:6:1" });
// Définissez une table de hachage pour mapper le nom de la chaîne à un identifiant de forme longue
Hashtable shapeIdMap = new Hashtable();
// Créer un nouveau diagramme
Diagram diagram = new Diagram(visioStencil);
diagram.Pages[pageNumber].PageSheet.PageProps.PageWidth.Value = 11;
foreach (string orgnode in listPos)
{
    // Ajouter une nouvelle forme de rectangle
    long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Définir les propriétés de la nouvelle forme
    Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
    shape.Text.Value.Add(new Txt(orgnode));
    shape.Name = orgnode;
    shapeIdMap.Add(orgnode, rectangleId);
}
// Créer des connexions entre les nœuds
foreach (string orgName in listPos)
{
    int lastColon = orgName.LastIndexOf(':');
    if(lastColon > 0)
    {
        string parendName = orgName.Substring(0, lastColon);
        long shapeId = (long)shapeIdMap[orgName];
        long parentId = (long)shapeIdMap[parendName];
        Shape connector1 = new Shape();
        long connecter1Id = diagram.AddShape(connector1, connectorMaster, pageNumber);
        diagram.Pages[pageNumber].ConnectShapesViaConnector(parentId, ConnectionPointPlace.Right,
            shapeId, ConnectionPointPlace.Left, connecter1Id);
    }
}

//mise en page automatique du graphique CompactTree
LayoutOptions compactTreeOptions = new LayoutOptions
{
    LayoutStyle = LayoutStyle.CompactTree,
    Direction = LayoutDirection.DownThenRight,
    EnlargePage = false
};

diagram.Pages[pageNumber].Layout(compactTreeOptions);

// Enregistrer le diagramme
diagram.Save("CompactTreeChart_out.vsdx", SaveFileFormat.VSDX);

La capture d’écran suivante montre l’organigramme de sortie créé à l’aide de l’extrait de code ci-dessus :

Créer un organigramme C#

Créer un organigramme dans un style d’organigramme en C#

Vous devrez peut-être créer différents types d’organigrammes ORG qui peuvent suivre différents modèles. Ici, vous apprendrez à créer un organigramme ORG dans le style Flowchart par programmation en C# :

  1. Chargez des modèles à partir de n’importe quel diagramme, gabarit ou modèle existant.
  2. Ajoutez des nœuds d’organisation et des connecteurs.
  3. Définissez la mise en page et enregistrez le diagramme de sortie.

L’exemple de code suivant montre comment créer un organigramme dans le style organigramme en C# :

// Charger des maîtres à partir de n'importe quel diagramme, gabarit ou modèle existant
string visioStencil = "Basic Shapes.vss";
const string rectangleMaster = "Rectangle";
const string connectorMaster = "Dynamic connector";
const int pageNumber = 0;
const double width = 1;
const double height = 1;
double pinX = 4.25;
double pinY = 9.5;
// Définir des valeurs pour construire la hiérarchie
List<string> listPos = new List<string>(new string[] { "0", "0:0", "0:1", "0:2", "0:3", "0:4", "0:5", "0:6", "0:0:0", "0:0:1", "0:3:0", "0:3:1", "0:3:2", "0:6:0", "0:6:1" });
// Définissez une table de hachage pour mapper le nom de la chaîne à un identifiant de forme longue
Hashtable shapeIdMap = new Hashtable();
// Créer un nouveau diagramme
Diagram diagram = new Diagram(visioStencil);
foreach (string orgnode in listPos)
{
    // Ajouter une nouvelle forme de rectangle
    long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Définir les propriétés de la nouvelle forme
    Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
    shape.Text.Value.Add(new Txt(orgnode));
    shape.Name = orgnode;
    shapeIdMap.Add(orgnode, rectangleId);
}
// Créer des connexions entre les nœuds
foreach (string orgName in listPos)
{
    int lastColon = orgName.LastIndexOf(':');
    if(lastColon > 0)
    {
        string parendName = orgName.Substring(0, lastColon);
        long shapeId = (long)shapeIdMap[orgName];
        long parentId = (long)shapeIdMap[parendName];
        Shape connector1 = new Shape();
        long connecter1Id = diagram.AddShape(connector1, connectorMaster, pageNumber);
        diagram.Pages[pageNumber].ConnectShapesViaConnector(parentId, ConnectionPointPlace.Right,
            shapeId, ConnectionPointPlace.Left, connecter1Id);
    }
}

//organigramme de mise en page automatique
LayoutOptions flowChartOptions = new LayoutOptions
{
    LayoutStyle = LayoutStyle.FlowChart,
    Direction = LayoutDirection.TopToBottom,
    EnlargePage = true
};

diagram.Pages[pageNumber].Layout(flowChartOptions);

// Enregistrer le diagramme
diagram.Save("FlowChart_out.vsdx", SaveFileFormat.VSDX);

Obtenez une licence temporaire gratuite

Vous pouvez demander une licence temporaire gratuite pour évaluer l’API dans toute sa capacité.

Conclusion

Dans cet article, vous avez compris comment créer un organigramme ORG par programmation en C#. Vous pouvez créer un diagramme à partir d’un gabarit et créer un graphique de style CompactTree ou Flowchart en fonction de vos besoins. De plus, vous pouvez visiter la section documentation pour consulter d’autres fonctionnalités couvertes par différents chapitres et sections. En cas de questions, n’hésitez pas à nous contacter via forum.

Voir également

Convertir VSDM en PDF en C#