Criar organograma csharp.png C#

Um Organograma é usado para descrever a estrutura de uma empresa, governo ou organização. Eles podem ser atribuídos por diferentes razões, como fazer uma política ou fins de planejamento. Você pode criar diferentes tipos de organogramas criando diferentes formas e conectores. Este artigo aborda como criar um organograma em C#.

Criador de organogramas – instalação da API C#

Aspose.Diagram for .NET API pode ser usada para criar diferentes diagramas e gráficos do Visio. Você pode configurar facilmente a API baixando seu arquivo de referência da página New Releases ou usando o seguinte comando de instalação NuGet:

PM> Install-Package Aspose.Diagram

Criar organograma no estilo CompactTree em C#

Você pode criar um organograma 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 organograma 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 organograma de saída gerado com o snippet de código acima:

Criar organograma C#

Criar organograma no estilo de fluxograma em C#

Você pode precisar criar diferentes tipos de organogramas que podem seguir modelos diferentes. Aqui você aprenderá como criar organograma 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 organograma 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 organograma programaticamente em C#. Você pode criar um diagrama de 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#