Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Sites (Locais, Loteamentos) |
Como pesquisar um loteamento por nome no AutoCAD Civil 3D usando C# e uma função personalizada GetSiteByName()Quantidade de visualizações: 291 vezes |
Nesta dica mostrarei como podemos escrever uma função C# personalizada chamada GetSiteByName() que nos permitirá pesquisar e retornar sites 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 do loteamento que queremos encontrar. O retorno da função é um objeto Site. Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo: 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("Sites")] public void Sites() { // vamos obter uma referência ao documento atual do Civil 3D CivilDocument doc = CivilApplication.ActiveDocument; Editor editor = Application.DocumentManager.MdiActiveDocument.Editor; // vamos pesquisar um loteamento chamado "LOTEAMENTO SETOR SUL" string nome = "LOTEAMENTO SETOR SUL"; // vamos iniciar um nova transação using (Transaction ts = Application.DocumentManager.MdiActiveDocument. Database.TransactionManager.StartTransaction()) { try { // efetuamos uma chamada ao método GetSiteByName() passando // o documento atual do AutoCAD Civil 3D e o nome do site // que queremos encontrar Site site = GetSiteByName(doc, nome); // e mostramos o resultado if (site == null) { editor.WriteMessage("\nO loteamento não foi encontrado."); } else { editor.WriteMessage("\nO id do loteamento pesquisado é: " + site.Id); } } catch (System.Exception e) { // handle bad file path editor.WriteMessage("Erro: {0}", e.Message); } } } // função C# que retorna site por nome, ou null em // caso de não encontrar o site desejado public Site GetSiteByName(CivilDocument doc, string nome) { // vamos declarar um objeto da classe Site Site site = null; // agora vamos obter os ids de todos os sites ObjectIdCollection sites = doc.GetSiteIds(); // vamos percorrer todos os ids de sites retornados foreach (ObjectId id_site in sites) { site = id_site.GetObject(OpenMode.ForRead) as Site; // encontramos o site if (site.Name.Equals(nome)) { return site; } } // retorna null se o site 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 id do loteamento pesquisado é: (2369904896256) |
![]() |
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 |