Você está aqui: Revit C# ::: Dicas & Truques ::: Níveis - Levels |
Como pesquisar um nível por nome no documento Revit e retornar o seu id usando a Revit C# APIQuantidade de visualizações: 284 vezes |
Nesta dica mostrarei como podemos escrever uma função C# chamada retornarIdNivel() que recebe uma string contendo o nome de um nível e retorna um ElementId contendo o id do nível encontrado. Note que a função também recebe um objeto this.ActiveUIDocument.Document. E é a partir desse objeto que nós criamos um objeto FilteredElementCollector. Então, de posse do filtro, nós o usamos para retornar uma ICollection<Element> contendo todos os elementos do tipo Level. O passo seguinte foi usar uma query Linq para pesquisar o nível cujo nome foi informado como argumento para a função. Veja o código Revit C# completo para o exemplo: using System; using Autodesk.Revit.UI; using Autodesk.Revit.DB; using Autodesk.Revit.UI.Selection; using System.Collections.Generic; using System.Linq; namespace Estudos { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes. TransactionMode.Manual)] [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")] public partial class ThisApplication { private void Module_Startup(object sender, EventArgs e) { // vamos obter uma referência ao Document ativo Document doc = this.ActiveUIDocument.Document; // vamos pesquisar o nível com o nome desejado ElementId idNivel = retornarIdNivel("01 Primeiro", doc); // e mostramos o resultado if (idNivel == ElementId.InvalidElementId) { TaskDialog.Show("Aviso", "O nível com este nome não foi encontrado."); } else { TaskDialog.Show("Aviso", "O nível pesquisado foi encontrado com o id: " + idNivel.ToString()); } } // função que recebe uma string com o nome do nível, o documento // atual e retorna o id do nível encontrado private ElementId retornarIdNivel(String nome, Document doc) { // primeiro vamos criar um FilteredElementCollector FilteredElementCollector collector = new FilteredElementCollector(doc); // agora obtemos um ICollection com todos os nívels do documento ICollection<Element> niveis = collector.OfClass(typeof( Level)).ToElements(); // usamos uma query Linq para buscar o nível fornecido como argumento var query = from element in collector where element.Name == nome select element; // agora obtemos o nível cujo nome foi informado List<Element> nivel_encontrado = query.ToList<Element>(); if (nivel_encontrado.Count > 0){ return nivel_encontrado[0].Id; } else { return new ElementId(-1); // id inválido } } private void Module_Shutdown(object sender, EventArgs e) { // para fazer alguma limpeza de memória ou algo assim } #region Revit Macros generated code private void InternalStartup() { this.Startup += new System.EventHandler(Module_Startup); this.Shutdown += new System.EventHandler(Module_Shutdown); } #endregion } } Ao executar este código Revit C# API nós teremos o seguinte resultado: O nível pesquisado foi encontrado com o id: 694 Se o nível pesquisado não for encontrado, o valor -1 será retornado, e poderemos testar a validade do id usando ElementId.InvalidElementId. |
![]() |
Veja mais Dicas e truques de Revit C# |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |