Crear organigrama csharp.png C#

Un Organigrama se utiliza para representar la estructura de una empresa, gobierno u organización. Se pueden diseñar por diferentes razones, como hacer una política o con fines de planificación. Puede crear diferentes tipos de organigramas haciendo diferentes formas y conectores. Este artículo cubre cómo crear un organigrama en C#.

Creador de organigramas: instalación de la API de C#

Aspose.Diagram for .NET La API se puede utilizar para crear diferentes diagramas y gráficos de Visio. Puede configurar fácilmente la API descargando su archivo de referencia desde la página Nuevas versiones o utilizando el siguiente comando de instalación NuGet:

PM> Install-Package Aspose.Diagram

Crear organigrama en estilo CompactTree en C#

Puede crear un organigrama en estilo CompactTree siguiendo los pasos a continuación:

  1. Cargue patrones desde cualquier diagrama, galería de símbolos o plantilla existente.
  2. Defina valores para construir la jerarquía.
  3. Agregue formas y conexiones entre nodos.
  4. Guarde el diagrama de salida.

El fragmento de código a continuación explica cómo crear un organigrama en C#:

// Cargue patrones desde cualquier diagrama, galería de símbolos o plantilla existente
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;
// Definir valores para construir la jerarquía.
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" });
// Defina una tabla hash para asignar el nombre de la cadena a una identificación de forma larga
Hashtable shapeIdMap = new Hashtable();
// Crear un nuevo diagrama
Diagram diagram = new Diagram(visioStencil);
diagram.Pages[pageNumber].PageSheet.PageProps.PageWidth.Value = 11;
foreach (string orgnode in listPos)
{
    // Agregar una nueva forma de rectángulo
    long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Establecer las propiedades de la nueva forma
    Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
    shape.Text.Value.Add(new Txt(orgnode));
    shape.Name = orgnode;
    shapeIdMap.Add(orgnode, rectangleId);
}
// Crear conexiones entre nodos
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);
    }
}

//gráfico CompactTree de diseño automático
LayoutOptions compactTreeOptions = new LayoutOptions
{
    LayoutStyle = LayoutStyle.CompactTree,
    Direction = LayoutDirection.DownThenRight,
    EnlargePage = false
};

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

// Guardar diagrama
diagram.Save("CompactTreeChart_out.vsdx", SaveFileFormat.VSDX);

La siguiente captura de pantalla muestra el organigrama de salida generado con el fragmento de código anterior:

Crear organigrama C#

Crear organigrama en estilo de diagrama de flujo en C#

Es posible que deba crear diferentes tipos de organigramas que pueden seguir diferentes plantillas. Aquí aprenderá cómo crear un organigrama en el estilo de diagrama de flujo mediante programación en C#:

  1. Cargue patrones desde cualquier diagrama, galería de símbolos o plantilla existente.
  2. Agregue nodos y conectores de organización.
  3. Establezca el diseño y guarde el diagrama de salida.

El siguiente código de ejemplo muestra cómo crear un organigrama en estilo de diagrama de flujo en C#:

// Cargue patrones desde cualquier diagrama, galería de símbolos o plantilla existente
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;
// Definir valores para construir la jerarquía.
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" });
// Defina una tabla hash para asignar el nombre de la cadena a una identificación de forma larga
Hashtable shapeIdMap = new Hashtable();
// Crear un nuevo diagrama
Diagram diagram = new Diagram(visioStencil);
foreach (string orgnode in listPos)
{
    // Agregar una nueva forma de rectángulo
    long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Establecer las propiedades de la nueva forma
    Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
    shape.Text.Value.Add(new Txt(orgnode));
    shape.Name = orgnode;
    shapeIdMap.Add(orgnode, rectangleId);
}
// Crear conexiones entre nodos
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);
    }
}

//Diagrama de flujo de diseño automático
LayoutOptions flowChartOptions = new LayoutOptions
{
    LayoutStyle = LayoutStyle.FlowChart,
    Direction = LayoutDirection.TopToBottom,
    EnlargePage = true
};

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

// Guardar diagrama
diagram.Save("FlowChart_out.vsdx", SaveFileFormat.VSDX);

Obtenga una Licencia Temporal Gratis

Puede solicitar una licencia temporal gratuita para evaluar la API en toda su capacidad.

Conclusión

En este artículo, ha entendido cómo crear un organigrama mediante programación en C#. Puede crear un diagrama a partir de una plantilla y crear un gráfico de estilo CompactTree o Flowchart según sus requisitos. Además, puede visitar la sección documentación para ver otras características cubiertas en diferentes capítulos y secciones. En caso de cualquier consulta, no dude en contactarnos a través del foro.

Ver también

Convertir VSDM a PDF en C#