Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment |
Como retornar a elevação de uma estaca em um perfil de um alinhamento no Civil 3D usando a função ElevationAt() da classe Profile da .NET C# APIQuantidade de visualizações: 661 vezes |
A função ElevationAt() da classe Profile da .NET C# API é muito útil quando queremos obter a elevação de uma determinada estaca em um perfil de um alinhamento do Civil 3D. Nesta dica eu mostrarei como obter a elevação da segunda estaca, situada a 20 metros do início de um alinhamento chamado "EIXO DA ESTRADA". Para este exemplo eu peguei o perfil do terreno natural. O primeiro passo é obter o perfil desejado como um objeto da classe Profile usando a função GetObject() do objeto Transaction. Aqui eu passei o primeiro item da coleção ObjectIdCollection, uma vez que é consenso geral criar o perfil do terreno natural em primeiro lugar. Depois de obtido o objeto Profile nós efetuamos uma chamada à sua função ElevationAt() passando a distância da estaca. Esta distância deve ser informada em metros e seu retorno é a elevação da estaca como um valor double. Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo: 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 { // vamos obter os ids dos perfis deste alinhamento ObjectIdCollection ids_perfis = alinhamento.GetProfileIds(); // agora vamos obter o primeiro perfil, em geral o perfil // que representa o terreno natural TN Profile perfil = ts.GetObject(ids_perfis[0], OpenMode.ForRead) as Profile; // agora vamos obter a elevação na segunda estaca, situada a // 20 metros do início do alinhamento double elevacao = perfil.ElevationAt(20); // e mostramos o resultado editor.WriteMessage("\nA elevação na segunda estaca é: " + elevacao + " metros\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# teremos o seguinte resultado: A elevação na segunda estaca é: 743.585742295399 metros. |
![]() |
Veja mais Dicas e truques de AutoCAD Civil 3D .NET C# |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |