Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment

Como listar os nomes, ids e tipos de perfis de um alinhamento no Civil 3D usando GetProfileIds() e GetObject() da API .NET do Civil 3D

Quantidade de visualizações: 346 vezes
Em algumas situações nós precisamos realizar algumas ações nos perfis de um determinado alinhamento do Civil 3D. Para isso nós podemos usar as funções GetProfileIds() e GetObject() da API C# do Civil 3D. Veja como isso é feito.

De posse do alinhamento desejado, efetuamos uma chamada à sua função GetProfileIds() e retornados um ObjectIdCollection contendo os ids de todos os perfis do alinhamento em questão. Em seguida usamos um laço foreach para percorrer cada um desses ids, fazemos chamadas à GetObject() e retornando objetos da classe Profile.

O passo final é acessar as propriedades Id, Name e ProfileType do objeto Profile e mostrar o resultado na janela de comando.

Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.Civil.DatabaseServices;

namespace Estudos {
  public class Class1 : IExtensionApplication {
    [CommandMethod("Alinhamento")]
    public void Alinhamento() {
      // vamos obter uma referência ao documento atual do Civil 3D
      CivilDocument doc = CivilApplication.ActiveDocument;

      // obtemos o editor
      Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;

      // vamos pesquisar o alinhamento chamado "EIXO DA RODOVIA"
      string nome = "EIXO DA RODOVIA";

      // vamos iniciar um nova transação
      using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
        Database.TransactionManager.StartTransaction()) {
        try {
          // efetuamos uma chamada ao método GetAlignmentByName() passando
          // o documento atual do AutoCAD Civil 3D e o nome do alinhamento
          // que queremos encontrar
          Alignment alinhamento = GetAlignmentByName(doc, nome);

          // ops, o alinhamento não foi encontrado
          if (alinhamento == null) {
            editor.WriteMessage("\nO alinhamento não foi encontrado.");
          }
          else {
            // encontramos o alinhamento. Vamos mostrar os ids e nomes dos
            // perfis que ele possui
            ObjectIdCollection ids_perfis = alinhamento.GetProfileIds();
            // vamos percorrer todos os ids de profiles retornados
            foreach (ObjectId id_perfil in ids_perfis) {
              Profile perfil = id_perfil.GetObject(OpenMode.ForRead) as Profile;
              // mostramos o id e nome do perfil
              editor.WriteMessage("\nId: " + perfil.Id + "; Nome: " +
                perfil.Name + "; Tipo: " + perfil.ProfileType.ToString() + "\n");
            }
          }
        }
        catch (System.Exception e) {
          // vamos tratar o erro 
          editor.WriteMessage("Erro: {0}", e.Message);
        }
      }
    }

    // função C# que retorna um alinhamento por nome, ou null em
    // caso de não encontrar o alinhamento desejado
    public Alignment GetAlignmentByName(CivilDocument doc, string nome) {
      // vamos declarar um objeto da classe Alignment
      Alignment alinhamento = null;

      // agora vamos obter os ids de todos os alinhamentos
      ObjectIdCollection alinhamentos = doc.GetAlignmentIds();

      // vamos percorrer todos os ids de alinhamentos retornados
      foreach (ObjectId idAlinhamento in alinhamentos) {
        alinhamento = idAlinhamento.GetObject(OpenMode.ForRead) as Alignment;
        // encontramos o alinhamento
        if (alinhamento.Name.Equals(nome)) {
          return alinhamento;
        }
      }

      // retorna null se o alinhamento não for encontrado
      return null;
    }

    public void Initialize() {
      // pode deixar em branco
    }

    public void Terminate() {
      // pode deixar em branco
    }
  }
}

Ao executar este código AutoCAD Civil 3D .NET C# nós teremos o seguinte resultado:

Id: (2246912726512); Nome: TN - SUPERFÍCIE NATURAL; Tipo: EG
Id: (2246912726832); Nome: GREIDE RODOVIA - PERFIL VERTICAL DA RODOVIA; Tipo: FG

Veja que mostrei o id, o nome e o tipo de cada um dos dois perfis pertencentes ao alinhamento "EIXO DA RODOVIA". Note que, de acordo com as configurações do Brazil Kit, "EG" significa TERRENO NATURAL enquanto "FG" significa "PROJETO", ou seja, o greide da rua, rodovia, ferrovia, etc.

Link para compartilhar na Internet ou com seus amigos:

AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment

Como retornar a quantidade de estacas de um alinhamento do Civil 3D usando a função GetStationSet() da classe Alignment da AutoCAD Civil 3D .NET API

Quantidade de visualizações: 470 vezes
Nesta dica vou mostrar como podemos obter a quantidade de estacas em um alinhamento do Civil 3D usando a função GetStationSet() da classe Alignment da AutoCAD Civil 3D .NET API. Para este exemplo eu usei um alinhamento com o nome "EIXO DA RODOVIA".

O primeiro passo é obter uma referência ao documento atual do AutoCAD Civil 3D usando CivilApplication.ActiveDocument. En seguida nós pesquisamos um alinhamento usando uma função personalizada GetAlignmentByName(), que recebe o documento atual e o nome do alinhamento que queremos pesquisar. O retorno desta função é um objeto da classe Alignment.

Agora que já temos o alinhamento, nós usamos a função GetStationSet() para retornar um vetor de objetos Station, que significa estaca no Civil 3D. Note que passei como parâmetro o valor StationTypes.Major e usei alinhamento.StationIndexIncrement como o intervalo entre as estacas.

Uma vez que já temos o vetor de objetos Station, ou seja, um vetor contendo todas as estacas do alinhamento, só precisamos obter a quantidade de itens usando a propriedade Length.

Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.Civil.DatabaseServices;

namespace Estudos {
  public class Class1 : IExtensionApplication {
    [CommandMethod("Alinhamento")]
    public void Alinhamento() {
      // vamos obter uma referência ao documento atual do Civil 3D
      CivilDocument doc = CivilApplication.ActiveDocument;

      // obtemos o editor
      Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;

      // vamos pesquisar o alinhamento chamado "EIXO DA RODOVIA"
      string nome = "EIXO DA RODOVIA";

      // vamos iniciar um nova transação
      using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
        Database.TransactionManager.StartTransaction()) {
        try {
          // efetuamos uma chamada ao método GetAlignmentByName() passando
          // o documento atual do AutoCAD Civil 3D e o nome do alinhamento
          // que queremos encontrar
          Alignment alinhamento = GetAlignmentByName(doc, nome);

          // ops, o alinhamento não foi encontrado
          if (alinhamento == null) {
            editor.WriteMessage("\nO alinhamento não foi encontrado.");
          }
          else {
            // encontramos o alinhamento. Vamos mostrar a quantidade de estacas
            // que ele possui
            Station[] estacas = alinhamento.GetStationSet(StationTypes.Major,
              alinhamento.StationIndexIncrement);
            int quant_estacas = estacas.Length;
            // e mostramos o resultado
            editor.WriteMessage("\nO alinhamento possui " + quant_estacas +
              " estacas.\n");
          }
        }
        catch (System.Exception e) {
          // vamos tratar o erro 
          editor.WriteMessage("Erro: {0}", e.Message);
        }
      }
    }

    // função C# que retorna um alinhamento por nome, ou null em
    // caso de não encontrar o alinhamento desejado
    public Alignment GetAlignmentByName(CivilDocument doc, string nome) {
      // vamos declarar um objeto da classe Alignment
      Alignment alinhamento = null;

      // agora vamos obter os ids de todos os alinhamentos
      ObjectIdCollection alinhamentos = doc.GetAlignmentIds();

      // vamos percorrer todos os ids de alinhamentos retornados
      foreach (ObjectId idAlinhamento in alinhamentos) {
        alinhamento = idAlinhamento.GetObject(OpenMode.ForRead) as Alignment;
        // encontramos o alinhamento
        if (alinhamento.Name.Equals(nome)) {
          return alinhamento;
        }
      }

      // retorna null se o alinhamento não for encontrado
      return null;
    }

    public void Initialize() {
      // pode deixar em branco
    }

    public void Terminate() {
      // pode deixar em branco
    }
  }
}

Ao executar este código AutoCAD Civil 3D C# .NET nós teremos o seguinte resultado:

O alinhamento possui 152 estacas.


AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment

Como retornar a quantidade de perfis de um alinhamento do Civil 3D usando a função GetProfileIds() da API C# do AutoCAD Civil 3D

Quantidade de visualizações: 416 vezes
Em algumas situações nós precisamos obter a quantidade de perfis (profiles) de um determinado alinhamento do AutoCAD Civil 3D. Para isso nós podemos usar a função GetProfileIds(), que retorna uma coleção ObjectIdCollection contendo os ids de todos os perfis pertencentes a um determinado alinhamento.

Para este exemplo eu usei um alinhamento chamado "EIXO DA RODOVIA" e criei para ele um profile chamado "TN - SUPERFÍCIE NATURAL" para representar a superfície natural e outro chamado "GREIDE - PERFIL VERTICAL DA RODOVIA" para representar o alinhamento vertical.

Note que, após obtermos a coleção ObjectIdCollection por meio da função GetProfileIds(), tudo que temos a fazer é acessar a sua propriedade Count.

Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.Civil.DatabaseServices;

namespace Estudos {
  public class Class1 : IExtensionApplication {
    [CommandMethod("Alinhamento")]
    public void Alinhamento() {
      // vamos obter uma referência ao documento atual do Civil 3D
      CivilDocument doc = CivilApplication.ActiveDocument;

      // obtemos o editor
      Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;

      // vamos pesquisar o alinhamento chamado "EIXO DA RODOVIA"
      string nome = "EIXO DA RODOVIA";

      // vamos iniciar um nova transação
      using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
        Database.TransactionManager.StartTransaction()) {
        try {
          // efetuamos uma chamada ao método GetAlignmentByName() passando
          // o documento atual do AutoCAD Civil 3D e o nome do alinhamento
          // que queremos encontrar
          Alignment alinhamento = GetAlignmentByName(doc, nome);

          // ops, o alinhamento não foi encontrado
          if (alinhamento == null) {
            editor.WriteMessage("\nO alinhamento não foi encontrado.");
          }
          else {
            // encontramos o alinhamento. Vamos mostrar a quantidade de perfis
            // que ele possui
            ObjectIdCollection ids_perfis = alinhamento.GetProfileIds();
            // e mostramos o resultado
            editor.WriteMessage("\nO alinhamento possui " + ids_perfis.Count +
              " perfis.\n");
          }
        }
        catch (System.Exception e) {
          // vamos tratar o erro 
          editor.WriteMessage("Erro: {0}", e.Message);
        }
      }
    }

    // função C# que retorna um alinhamento por nome, ou null em
    // caso de não encontrar o alinhamento desejado
    public Alignment GetAlignmentByName(CivilDocument doc, string nome) {
      // vamos declarar um objeto da classe Alignment
      Alignment alinhamento = null;

      // agora vamos obter os ids de todos os alinhamentos
      ObjectIdCollection alinhamentos = doc.GetAlignmentIds();

      // vamos percorrer todos os ids de alinhamentos retornados
      foreach (ObjectId idAlinhamento in alinhamentos) {
        alinhamento = idAlinhamento.GetObject(OpenMode.ForRead) as Alignment;
        // encontramos o alinhamento
        if (alinhamento.Name.Equals(nome)) {
          return alinhamento;
        }
      }

      // retorna null se o alinhamento não for encontrado
      return null;
    }

    public void Initialize() {
      // pode deixar em branco
    }

    public void Terminate() {
      // pode deixar em branco
    }
  }
}

Ao executar este código AutoCAD Civil 3D .NET C# nós teremos o seguinte resultado:

O alinhamento possui 2 perfis.


AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment

Como pedir para o usuário selecionar um alinhamento no Civil 3D usando a função GetEntity() do AutoCAD Civil 3D .NET C# API

Quantidade de visualizações: 569 vezes
Em várias situações nós precisamos pedir para o usuário selecionar um alinhamento e, após a seleção, obter o id do alinhamento selecionado para efetuarmos alguma operação nele. Para isso nós podemos usar a função GetEntity() do objeto Editor da AutoCAD Civil 3D .NET C# API.

O primeiro passo é criar um objeto PromptEntityOptions passando a mensagem para o usuário selecionar o alinhamento. Se o usuário selecionar outro objeto que não seja um alinhamento, a mensagem definida em SetRejectMessage é exibida. Note o uso de AddAllowedClass para permitir a seleção apenas de objetos da classe Alignment ou derivadas dela.

Depois de solicitar a seleção, nós obtemos um objeto ObjectId, que é retornado pela função GetEntity().

Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.Civil.DatabaseServices;

namespace Estudos {
  public class Class1 : IExtensionApplication {
    [CommandMethod("Alinhamento")]
    public void Alinhamento() {
      // vamos obter uma referência ao documento atual do Civil 3D
      CivilDocument doc = CivilApplication.ActiveDocument;

      // obtemos o editor
      Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;

      // vamos iniciar um nova transação
      using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
        Database.TransactionManager.StartTransaction()) {
        try {
          // vamos pedir para o usuário selecionar o alinhamento
          PromptEntityOptions opt = new PromptEntityOptions(
            "\nSelecione um alinhamento");
          opt.SetRejectMessage("\nO objeto precisa ser um alinhamento.\n");
          opt.AddAllowedClass(typeof(Alignment), false);
          
          // vamos obter o id do alinhamento selecionado
          ObjectId id_alinhamento = editor.GetEntity(opt).ObjectId;

          editor.WriteMessage("\nO id do alinhamento selecionado é: " +
            id_alinhamento + '\n');
        }
        catch (System.Exception e) {
          // vamos tratar o erro 
          editor.WriteMessage("Erro: {0}", e.Message);
        }
      }
    }

    public void Initialize() {
      // pode deixar em branco
    }

    public void Terminate() {
      // pode deixar em branco
    }
  }
}

Ao executar este código AutoCAD Civil 3D .NET C# nós teremos o seguinte resultado:

O id do alinhamento selecionado é: (1455527762496)


Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Número de Froude

O número de Froude (Fr) é um coeficiente adimensional, frequentemente utilizado na hidráulica de condutos abertos para determinar a classificação do regime que o escoamento livre apresenta. Quando o Fr é igual a 1, o regime é classificado como crítico; com Fr > 1, o regime é supercrítico; e com Fr < 1, o regime é subcrítico.

Sobre esta classificação afirma-se que:

A) No regime crítico há equílibrio de forças e a velocidade é menor que a celeridade.

B) No regime supercrítico, o escoamento é mais influenciado pelas forças gravitacionais.

C) No regime supercrítico, o escoamento é regido pelas energias cinéticas e inerciais.

D) No regime subcrítico ou torrencial, as forças gravitacionais regem o escoamento.

E) No regime crítico não há equilíbrio entre as energias que influenciam o escoamento.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Fases de uma obra

Ao documento em que se registram, pela ordem de sucessão em que são executados, os serviços necessários à realização da construção e os respectivos prazos, dá-se o nome de:

A) Diário de obra.

B) Cronograma físico-financeiro.

C) Gráfico de Gantt.

D) Planejamento.

E) Cronograma físico.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

Com relação à delimitação de bacias hidrográficas, é correto afirmar que

A) todos os pontos em seu interior, obrigatoriamente possuem cotas iguais ou inferiores em relação às cotas do divisor de águas da bacia.

B) tanto o divisor de água do tipo topográfico quanto o divisor do tipo freático podem ser utilizados, pois os dois sempre se coincidem.

C) segundo o método de Strahler de hierarquização fluvial, bacias hidrográficas de 4ª ordem têm o dobro de área de drenagem do que bacias classificadas em 2ª ordem.

D) a linha imaginária que define o seu limite deve ser traçada perpendicularmente às curvas de nível e não cortar nenhum curso de água além do ponto onde se encontra o exutório.

E) na escolha do local do exutório para a delimitação, os cursos d?água devem ser classificados como de 4ª ordem (método de Strahler) no mínimo, para que a bacia hidrográfica tenha uma área representativa.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

No Brasil, a maioria da precipitação cai sob a forma de chuva, convencionalmente medida por meio de aparelhos denominados pluviômetros e/ou pluviógrafos. Qual o volume de água, em litros, coletado em uma área de 10000 cm2, após uma precipitação de 1,5 cm?

A) 15000 litros.

B) 1500 litros.

C) 150 litros.

D) 1,5 litros.

E) 15 litros.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Evolução das estruturas

O concreto armado, no qual barras de aço são inseridas nas peças de concreto, foi desenvolvido na década de 1850. A junção do aço ao concreto contribui na melhoria do desempenho estrutural do concreto em relação à:

Selecione a resposta:

A) Resistência à compressão.

B) Resistência à tração.

C) Resistência à umidade.

D) Resistência ao fogo.

E) Resistência à infiltração.
Verificar Resposta Estudar Cards Todas as Questões

Veja mais Dicas e truques de AutoCAD Civil 3D .NET C#

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 8 usuários muito felizes estudando em nosso site.