Você está aqui: Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como rotacionar colunas e pilares no Revit via programação usando a função RotateElement() da classe ElementTransformUtils da Revit C# APIQuantidade de visualizações: 345 vezes |
Nesta dica mostrarei como podemos usar a função RotateElement() da classe ElementTransformUtils da Revit C# API para rotacionar uma coluna ou pilar no Revit, tudo isso via programação. Essa dica é muito útil para programadores Revit C#, pois traz as técnicas necessárias para selecionar um único elemento na área de desenho do Revit, assim como obter sua caixa delimitadora (BoundingBox), seu ponto geométrico central e, o mais importante, fazer a rotação do elemento em seus eixos. O primeiro passo é pedir para o usuário selecionar o pilar ou a coluna usando a função PickObject() da classe Selection, que retorna uma Reference. Após a seleção do elemento nós usamos a função GetElement() da classe Document para retornar o elemento como uma variável FamilyInstance, ou seja, uma instância de família do Revit. De posse da instância de família nós usamos a função get_BoundingBox() para obter e retornar um objeto da classe BoundingBoxXYZ. É esse objeto que usamos para obter o ponto máximo, o ponto mínimo e o ponto geométrico central da coluna ou pilar. O passo final é usar a função RotateElement() da classe ElementTransformUtils para rotacionar a coluna ou pilar de acordo com o ângulo de rotação desejado. Note que fiz a conversão de ângulos em graus para ângulos em radianos antes de efetuar a rotação. Veja o código Revit C# API completo para o exemplo: ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- 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; UIDocument uidoc = this.ActiveUIDocument; // agora mostramos uma mensagem para o usuário selecionar uma // coluna ou pilar TaskDialog.Show("Aviso", "Selecione uma coluna ou pilar"); // 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 coluna ou pilar"); // agora testamos se o usuário realmente selecionou um // elemento if (selecionado != null) { // vamos obter o elemento selecionado a partir da // referência FamilyInstance coluna = uidoc.Document.GetElement(selecionado) as FamilyInstance; // vamos obter o elemento BoundingBoxXYZ BoundingBoxXYZ bounding = coluna.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; // agora obtemos o ponto central da coluna XYZ centro = (pontoMaximo + pontoMinimo) * 0.5; // construímos a linha que servirá de eixo de rotação Line eixos = Line.CreateBound(centro, centro + XYZ.BasisZ); // definimos o ângulo de rotação em graus double angulo_rotacao_graus = 45; // convertemos para radianos double angulo_rotacao_radianos = angulo_rotacao_graus * (Math.PI / 180); // iniciamos a transação Transaction transacao = new Transaction(doc); transacao.Start("Como rotacionar colunas e pilares no Revit"); // rotacionamos a coluna ou pilar ElementTransformUtils.RotateElement(doc, coluna.Id, eixos, angulo_rotacao_radianos); // fazemos o commit da transação transacao.Commit(); // e mostramos o resultado TaskDialog.Show("Aviso", "A coluna foi rotacionada com sucesso."); } } 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 |