Você está aqui: Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como criar colunas e pilares no Revit via programação usando a Revit C# APIQuantidade de visualizações: 437 vezes |
|
Nesta dica eu mostrarei uma das técnicas mais importantes da criação e manipulação de elementos no Revit usando a Revit C# API. Trata-se da criação de colunas e pilares via programação. Esse conhecimento é muito importante, pois nos permite distribuir pilares e colunas de forma mais precisa e baseado em cálculos geométricos mais complexos. A criação de pilares e colunas no Revit via programação C# é feita por meio da função Create.NewFamilyInstance() do objeto Document, que é obtido com uma chamada a this.ActiveUIDocument.Document. A assinatura da função Create.NewFamilyInstance() que usei neste exemplo pede a posição XYZ na qual a coluna ou pilar será colocada, o símbolo da família, o nível e o tipo da coluna ou pilar (que informei o valor StructuralType.Column). Durante o código eu informei o id do símbolo da família de coluna ou pilar Pilar de Concreto - Retangular 80 x 50. Você pode ajustar esse id para o tipo que você achar mais adequado. Note ainda o uso de uma função personalizada MetrosParaPes() que recebe as distâncias x e y em metros e as converte para pés. Via programação o Revit só entende medidas em pés, nunca em metros. Para o posicionamento da coluna ou pilar eu defini a distância de 10 metros para a coordenada x e 5 metros para a coordenada y, saindo da origem (0, 0, 0). Não faz sentido definir um valor para a coordenada z, pois estamos informando os níveis de base e superior para a coluna ou pilar. Veja o código Revit C# API 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.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using Autodesk.Revit.DB.Architecture;
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 colocar a operação em um bloco try...catch
try {
// precisamos do id do símbolo da família de colunas. Para este
// exemplo eu peguei o id 355634. Na minha instalação do Revit este
// id se refere a um Pilar de Concreto - Retangular 80 x 50
ElementId id_simbolo = new ElementId(355634);
// agora que já temos o id do símbolo da família, vamos construir
// um objeto FamilySymbol
FamilySymbol simbolo = doc.GetElement(id_simbolo) as FamilySymbol;
// e agora a posição do pilar. Como a API C# do Revit trabalha
// com pés (mesmo se a configuração do documento estiver em
// metros), nós precisamos converter as coordenadas em metros
// para pés
double distancia_x = 10; // em metros
double distancia_y = 5; // em metros
// retornamos um objeto da classe XYZ
XYZ posicao = new XYZ(MetrosParaPes(distancia_x),
MetrosParaPes(distancia_y), 0);
// iniciamos a transação
Transaction transacao = new Transaction(doc);
transacao.Start("Criação de pilares no Revit");
// é aqui que a mágica acontece. Note que forneci o id 694 para obter
// e retornar o nível da base para o pilar como um objeto da classe
// Level
FamilyInstance coluna = doc.Create.NewFamilyInstance(posicao, simbolo,
doc.GetElement(new ElementId(694)) as Level, StructuralType.Column);
// depois de criada a coluna, vamos ajustar o nível superior e também
// os deslocamentos (offset) superior e da base
coluna.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_PARAM).Set(
new ElementId(350814));
coluna.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_OFFSET_PARAM).Set(0);
coluna.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_OFFSET_PARAM).Set(0);
// fazemos o commit da transação
transacao.Commit();
// e mostramos o resultado
TaskDialog.Show("Aviso", "A coluna foi criada com sucesso.");
}
catch (Exception ex) {
TaskDialog.Show("Aviso", "Erro: " + ex.Message);
}
}
// função que converte de metros para pés
private double MetrosParaPes(double metros) {
return metros / 0.3048;
}
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
}
}
|
|
|
Veja mais Dicas e truques de Revit C# |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






