Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment |
Como retornar o comprimento de um alinhamento do Civil 3D em metros e quilômetros usando C# e a propriedade LengthQuantidade de visualizações: 755 vezes |
Nesta dica mostrarei como podemos usar a linguagem C# para obter o comprimento de um alinhamento do AutoCAD Civil 3D usando a propriedade Length do objeto Alignment. Veja que criei uma função personalizada GetAlignmentByName() que recebe um objeto CivilDocument e uma string contendo o nome do alinhamento que queremos pesquisar e retorna um objeto da classe Alignment. O nome do alinhamento que usei no exemplo é "EIXO DA RODOVIA". De posse do objeto Alignment nós só precisamos acessar sua propriedade Length para retornar o seu comprimento em metros (e posteriormente converter para quilômetros). Veja o código AutoCAD Civil 3D C# completo para o exemplo: ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- 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); // e mostramos o resultado if (alinhamento == null) { editor.WriteMessage("\nO alinhamento não foi encontrado."); } else { // vamos obter o comprimento do alinhamento em metros e // em quilômetros double metros = alinhamento.Length; double kms = metros / 1000.0; editor.WriteMessage("\nComprimento do alinhamento em metros: " + metros); editor.WriteMessage("\nComprimento do alinhamento em quilômetros: " + kms); } } 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: Comprimento do alinhamento em metros: 3006.0749579268 Comprimento do alinhamento em quilômetros: 3.0060749579268 |
![]() |
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 |