Você está aqui: Revit C# ::: Dicas & Truques ::: Grupos - Groups |
Como copiar grupos no Revit usando a função Create.PlaceGroup() da classe Document da Revit C# APIQuantidade de visualizações: 301 vezes |
|
O código que apresento nesta dica mostra como podemos pedir para o usuário selecionar um grupo na área de desenho do Revit e, em seguida, usando a Revit C# API, criar uma cópia do grupo escolhido e posicioná-la em um ponto escolhido pelo usuário. Em realidade, este código é o mesmo apresentado no tutorial "Como criar seu primeiro plug-in no Revit usando a Revit C# API" da documentação oficial fornecida pela Autodesk. O que fiz foi modificar o código para usar uma macro em vez de um plug-in, como mostrado no tutorial. Vou até dar uma dica aqui para os iniciantes na Revit C# API. É muito mais fácil você desenvolver os seus códigos usando macros e depois convertê-los para um plug-in do que ir direto para o plug-in. As macros permitem um ciclo de desenvolvimento mais rápido, enquanto os plug-in são mais demorados para testar. O primeiro passo é criar uma variável para acessarmos o documento atual do Revit via this.ActiveUIDocument.Document. Em seguida nós criamos uma referência Reference para guardar o elemento selecionado pelo usuário. O passo seguinte é adquirir um objeto Selection usando this.ActiveUIDocument.Selection. De posse do objeto Selecion nós usamos sua função PickObject() para pedir para o usuário selecionar o grupo de elementos desejados. Veja que não forneci nenhum tipo de tratamento de erros aqui. Se o usuário selecionar um elemento que não seja do tipo grupo, com certeza um erro vai ocorrer no código. Após o usuário selecionar o grupo nós fazemos uma chamada à função GetElement() da classe Document para retornar o Element selecionado. Note o cast de Element para Group. Feita a seleção do grupo nós pedimos para o usuário escolher um ponto na área de desenho do Revit. Isso é feito por meio da função PickPoint() da classe Document, que nos retorna um objeto XYZ. O restante do código cria uma nova transação e usa a função Create.PlaceGroup() para copiar o grupo selecionado anteriormente pelo usuário para o ponto recém-selecionado. 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 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 definir um objeto Reference para guardar
// o elemento selecionado pelo usuário
Reference ref_selecionado = null;
// pedimos para o usuário selecionar um grupo
Selection selecao = this.ActiveUIDocument.Selection;
ref_selecionado = selecao.PickObject(ObjectType.Element,
"Selecione um grupo");
Element elem = doc.GetElement(ref_selecionado);
Group group = elem as Group;
// vamos pedir para o usuário selecionar um ponto na área de
// desenho do Revit
XYZ ponto = selecao.PickPoint(
"Selecione um ponto para posicionar o grupo");
// criamos uma nova transação e posicionamos a cópia do
// grupo nas coordenadas indicadas pelo usuário
Transaction transacao = new Transaction(doc);
transacao.Start("Copiar Grupo no Revit");
doc.Create.PlaceGroup(ponto, group.GroupType);
transacao.Commit();
// mostramos o resultado
TaskDialog.Show("Aviso", "O grupo foi copiado 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 |






