Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Superfície - Surface |
Como pesquisar uma superfície por nome no AutoCAD Civil 3D usando C# e uma função personalizada GetSurfaceByName()Quantidade de visualizações: 594 vezes |
Nesta dica mostrarei como podemos escrever uma função C# personalizada chamada GetSurfaceByName() que nos permitirá pesquisar e retornar superfícies no AutoCAD Civil 3D de acordo com o seu nome. Nome que a função aceita como primeiro argumento um objeto da classe CivilDocument e, como segundo argumento, uma string representando o nome da surface que queremos encontrar. O retorno da função é um objeto CivSurface. 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 CivSurface = Autodesk.Civil.DatabaseServices.Surface; namespace Estudos { public class Class1 : IExtensionApplication { [CommandMethod("Superficie")] public void Superficie() { // 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 a superfície chamada "TN - SUPERFÍCIE NATURAL" string nome = "TN - SUPERFÍCIE NATURAL"; // vamos iniciar um nova transação using (Transaction ts = Application.DocumentManager.MdiActiveDocument. Database.TransactionManager.StartTransaction()) { try { // efetuamos uma chamada ao método GetSurfaceByName() passando // o documento atual do AutoCAD Civil 3D e o nome da superfície // que queremos encontrar CivSurface superficie = GetSurfaceByName(doc, nome); // e mostramos o resultado if (superficie == null) { editor.WriteMessage("\nA superfície não foi encontrada."); } else { editor.WriteMessage("\nO id da superfície pesquisada é: " + superficie.Id); } } catch (System.Exception e) { // handle bad file path editor.WriteMessage("Erro: {0}", e.Message); } } } // função C# que retorna uma superfície por nome, ou null em // caso de não encontrar a surface desejada public CivSurface GetSurfaceByName(CivilDocument doc, string nome) { // vamos declarar um objeto da classe CivSurface superficie = null; // agora vamos obter os ids de todas as superfícies ObjectIdCollection superficies = doc.GetSurfaceIds(); // vamos percorrer todos os ids de superfícies retornados foreach (ObjectId idSuperficie in superficies) { superficie = idSuperficie.GetObject(OpenMode.ForRead) as CivSurface; // encontramos a superfície if (superficie.Name.Equals(nome)) { return superficie; } } // retorna null se a superfície não for encontrada 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 id da superfície pesquisada é: (2037526743520) |
![]() |
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 |