Você está aqui: Revit C# ::: Dicas & Truques ::: Element, Class Element

Como retornar a caixa delimitadora (BoundingBox) de um elemento do Revit usando a função get_BoundingBox() da Revit C# API

Quantidade de visualizações: 302 vezes
Cada elemento do Revit (aqueles que descendem da classe Element) possuem uma caixa retângular 3D associada a eles. Esta caixa delimitadora (ou BoundingBox) tridimensional apresenta as coordenadas de localização e orientação do elemento.

Um uso muito interessante da caixa delimitadora de um elemento do Revit é quando queremos calcular a área ou volume de uma parede via programação. Nas dicas de Revit C# API aqui do site você encontrará exemplos de como isso pode ser feito.

Para retornar a BoundingBox associada a um elemento, nós só precisamos efetuar uma chamada à função get_BoundingBox() do elemento desejado. Isso vai nos retornar um objeto da classe BoundingBoxXYZ.

Veja um trecho de código Revit C# API no qual pedimos para o usuário selecionar uma parede e retornamos a caixa delimitadora associada. Note o uso das propriedades Max e Min para retornar os pontos máximos e mínimos da BoundingBoxXYZ retornada:

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
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 UIDocument ativo
      UIDocument uidoc = this.ActiveUIDocument;
       
      // agora mostramos uma mensagem para o usuário selecionar uma
      // parede
      TaskDialog.Show("Aviso", "Selecione uma parede");
       
      // obtemos uma referência ao objeto Selection do
      // UIDocument ativo
      Selection selecao = uidoc.Selection;
     
      // e finalmente esperamos que o usuário selecione o elemento
      Reference selecionado = selecao.PickObject(ObjectType.Element,
        "Selecione uma parede");
     
      // agora testamos se o usuário realmente selecionou um
      // elemento
      if (selecionado != null) {
        // vamos obter o elemento selecionado a partir da
        // referência
        Wall parede = uidoc.Document.GetElement(selecionado) as Wall;
        // vamos obter o elemento BoundingBoxXYZ
        BoundingBoxXYZ bounding = parede.get_BoundingBox(null);
        
        // vamos obter as informações da BoundingBoxXYZ
        // primeiro o ponto mínimo (canto esquerdo inferior e
        // a parte de trás da caixa delimitadora)
        XYZ pontoMinimo = bounding.Min;
        // agora o ponto máximo (canto direito superior e
        // a parte da frente da caixa delimitadora)
        XYZ pontoMaximo = bounding.Max;
        
        String info = "Você selecionou uma parede.";
        info = info + "\nO ponto geométrico mínimo da caixa é: X = "
          + pontoMinimo.X + "; Y = " + pontoMinimo.Y + "; Z = " +
          pontoMinimo.Z;
        info = info + "\nO ponto geométrico máximo da caixa é: X = "
          + pontoMaximo.X + "; Y = " + pontoMaximo.Y + "; Z = " +
          pontoMaximo.Z;
            
        TaskDialog.Show("Aviso", info);
      }
    }
    
    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 e selecionar uma parede, nós teremos um resultado parecido com:

Você selecionou uma parede.
O ponto geométrico mínimo da caixa é: X = -39,4283712; Y = -10,32881222; Z = 0
O ponto geométrico máximo da caixa é: X = -38,8372955; Y = 29,258478338; Z = 20

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á 25 usuários muito felizes estudando em nosso site.