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: 321 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
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 |







