Criar gráfico ORG C#

Um gráfico ORG é um diagrama visual que representa a hierarquia de funcionários em uma organização. Ele contém suas funções, responsabilidades, posição, etc. e outras informações relevantes. Você pode criar diferentes tipos de organogramas com algumas chamadas de API sem precisar desenhar manualmente formas ou conexões. Este artigo aborda como criar um gráfico ORG em C#.

ORG Chart Maker – Instalação da API C#

Aspose.Diagram for .NET API suporta trabalhar com diferentes tipos de diagramas e gráficos. Basta acessar a API baixando seu arquivo DLL da seção New Releases ou com o seguinte comando de instalação NuGet:

PM> Install-Package Aspose.Diagram

Criar gráfico ORG no estilo CompactTree em C

Você pode criar um gráfico ORG no estilo CompactTree seguindo as etapas abaixo:

  1. Carregue mestres de qualquer diagrama, estêncil ou modelo existente.
  2. Defina valores para construir a hierarquia.
  3. Adicione formas e conexões entre nós.
  4. Salve o diagrama de saída.

O trecho de código abaixo explica como criar um gráfico ORG em C#:

// Carregar mestres de qualquer diagrama, estêncil ou modelo 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 a hierarquia
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 uma Hashtable para mapear o nome da string para o id de forma longa
Hashtable shapeIdMap = new Hashtable();
// Criar um novo diagrama
Diagram diagram = new Diagram(visioStencil);
diagram.Pages[pageNumber].PageSheet.PageProps.PageWidth.Value = 11;
foreach (string orgnode in listPos)
{
    // Adicionar uma nova forma de retângulo
    long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Defina as propriedades da nova forma
    Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
    shape.Text.Value.Add(new Txt(orgnode));
    shape.Name = orgnode;
    shapeIdMap.Add(orgnode, rectangleId);
}
// Criar conexões entre nós
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);
    }
}

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

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

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

A captura de tela a seguir mostra o gráfico ORG de saída criado usando o snippet de código acima:

Criar gráfico ORG C#

Criar gráfico ORG no estilo de fluxograma em C#

Pode ser necessário criar diferentes tipos de gráficos ORG que podem seguir modelos diferentes. Aqui você aprenderá como criar um gráfico ORG no estilo Flowchart programaticamente em C#:

  1. Carregue mestres de qualquer diagrama, estêncil ou modelo existente.
  2. Adicione nós e conectores da organização.
  3. Defina o layout e salve o diagrama de saída.

O código de exemplo a seguir mostra como criar um gráfico ORG no estilo de fluxograma em C#:

// Carregar mestres de qualquer diagrama, estêncil ou modelo 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 a hierarquia
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 uma Hashtable para mapear o nome da string para o id de forma longa
Hashtable shapeIdMap = new Hashtable();
// Criar um novo diagrama
Diagram diagram = new Diagram(visioStencil);
foreach (string orgnode in listPos)
{
    // Adicionar uma nova forma de retângulo
    long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Defina as propriedades da nova forma
    Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
    shape.Text.Value.Add(new Txt(orgnode));
    shape.Name = orgnode;
    shapeIdMap.Add(orgnode, rectangleId);
}
// Criar conexões entre nós
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);
    }
}

//fluxograma de layout automático
LayoutOptions flowChartOptions = new LayoutOptions
{
    LayoutStyle = LayoutStyle.FlowChart,
    Direction = LayoutDirection.TopToBottom,
    EnlargePage = true
};

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

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

Obtenha Licença Temporária Gratuita

Você pode solicitar uma licença temporária gratuita para avaliar a API em sua capacidade total.

Conclusão

Neste artigo, você entendeu como criar um gráfico ORG programaticamente em C#. Você pode criar um diagrama a partir de um estêncil e criar um gráfico de estilo CompactTree ou Flowchart com base em seus requisitos. Além disso, você pode visitar a seção documentação para dar uma olhada em outros recursos abordados em diferentes capítulos e seções. Em caso de dúvidas, não hesite em contactar-nos através do fórum.

Veja também

Converter VSDM em PDF em C#