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# API

Quantidade 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.

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de Revit C#

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 14 usuários muito felizes estudando em nosso site.