Meu primeiro plug-in para Revit
Augusto Goncalves – Autodesk
Sem conhecer linguagens de programação, aprenda passo-a-passo como começar a criar plug-ins para
Revit com .NET e C#.
Sobre o Palestrante
Augusto é membro do time ADN DevTech desde 2008 e trabalha no escritório da Autodesk em São
Paulo. É especialista nas APIs AutoCAD, Civil3D e Revit. Antes de trabalhar na Autodesk, Augusto
trabalhou em projetos CAD para engenharia e comércio eletrônico. É graduado em Engenharia Civil e
pós-graduado em Engenharia de Computação.
[email protected]
Meu primeiro plug-in para Revit
Visão geral
Voce é um usuário do Autodesk Revit com um interesse em se tornar ainda mais produtivo? Gostaria de
automatizar ou estender os recursos do Revit, mas é novo em programação de software? Em caso
afirmativo, então este guia foi projetado para você.
"Meu primeiro plug-in" é um guia, inicialmente disponível na web, desenvolvido de modo a
proporcionar uma introdução suave ao mundo da programação. Um guia passo-a-passo direcionado ao
aprendizado de usuários que conhecem produtos da Autodesk, mas são absolutamente novos para
programação e estão pretendendo mergulhar no mundo de programação. Neste guia, você trabalhará
com o API .NET do Autodesk Revit e a linguagem de programação C#. A versão do produto com suporte
é a Autodesk Revit Architecture 2011 e versões posteriores.
Este guia foi criado com base em Autodesk Revit Architecture. Todas as etapas deste guia são aplicáveis
a qualquer produto do Revit. Você pode substituir todos os "Revit Architecture" por "Revit Structure" ou
"Revit MEP" neste guia com versão 2011 ou superior.
Há muitos recursos disponíveis na web para que você aprenda mais sobre o Autodesk Revit API
(Application Programming Interface), no entanto, esses recursos tendem a ser projetados para pessoas
que já conhecem programação. Este guia é diferente: ele assume nenhum conhecimento de
programação anterior ajuda a construir seu primeiro plug-in rapidamente, sem apresentar muitos
detalhes de uma vez. Você terá um aplicativo prático dentro de uma hora, independentemente do seu
nível atual de conhecimentos de programação.
O guia vai começar revisando os benefícios da personalização de software Autodesk antes de avançar
para lições que abrangem a utilização da API Autodesk Revit. A aula começará através da construção de
um plug-in que cobre explicações mais detalhadas dos princípios e em seguida continuaremos
desenvolvendo a funcionalidade da aplicação.
Os benefícios da personalização de Autodesk Revit
No mundo de hoje, somos incentivados a ser a cada vez mais eficientes. Este é dos principais benefícios
da personalização: adaptar o software para o uso diário permitindo aumento de eficiência. A Autodesk
fornece poderosas APIs e SDKs (Software Development Kits) que permitem que você obtenha mais
retorno do valor de seu investimento em software Autodesk ao adequá-lo para as necessidades do seu
negócio.
Autodesk Revit fornece uma rica API que pode ser usada para personalizar os recursos existentes no
produto ou adicionar recursos inteiramente novos. Você pode automatizar tarefas repetitivas e
demoradas e estender os recursos do núcleo sem sair do ambiente de Autodesk Revit. A API pode ser
usada para criar ferramentas personalizadas e recursos que se conectam diretamente ao Autodesk
Revit, estendendo sua funcionalidade.
2
Meu primeiro plug-in para Revit
Autodesk Revit tem uma API .NET que significa que você pode usar qualquer linguagens de programação
(C#, VB.NET, F #, etc.) compatíveis com .NET para desenvolver um plug-in. Enquanto cada idioma tem
seus próprios benefícios relativos, C# é a escolha natural para este guia: é fácil de aprender, fácil de usar
e aproveita o poder do Framework .NET. Depois que você se sentir confortável com o conteúdo deste
guia - e mais acostumado com C# - você será capaz avançar para resolver problemas mais complexos
com a linguagem.
Programar pode ser muito gratificante. Esperamos que você se sinta assim depois de concluir essas
lições. Divirta-se!
Lição 1: O Basic plug-in
Nesta lição você criará sua primeira base Autodesk Revit plug-in para copiar grupos selecionados pelo
usuário em um local especificado.
Etapas para criar seu primeiro plug-in
1. Inicie o ambiente de desenvolvimento Visual C# Express:
Abra o Visual C# 2010 Express usando o menu Iniciar do Windows, selecionar todos os
programas e, em seguida, Microsoft Visual Studio Express 2010 e, em seguida, o Microsoft
Visual c# 2010 Express (item de submenu).
2. Crie um projeto de biblioteca de classe:
Dentro Visual C# Express, no menu arquivo, clique em novo projeto. Na aba ‘Installed
Templates’ na janela à esquerda, clique em Visual C#. Em seguida, na janela do meio, clique em
biblioteca de classes. Digite Lab1PlaceGroup na caixa nome. Clique em OK.
3
Meu primeiro plug-in para Revit
O Visual C# Express irá criar um projeto de código padrão para você e exibir o código na janela
de código.
3. Salve o projeto:
No menu arquivo, clique em Salvar tudo. Na janela de exibição digite C:\test na caixa local e, em
seguida, clique em Salvar.
4. Adicione referências:
Na janela do lado direito da janela do Visual C# Express Solution Explorer, clique com botão
direito em References e clique em Add Reference…
5. Clique na guia Procurar na caixa de diálogo Add Reference e navegue até a subpasta de
instalação do produto Revit. (O caminho da subpasta depende onde você instalou o Revit
Architecture 201X. O caminho padrão é C:\Program Files\Autodesk\Revit Architecture
201x\Program).
Você irá adicionar dois arquivos de referência desta pasta. Selecione RevitAPI.dll, mantenha
pressionada a tecla Ctrl e selecione RevitAPIUI.dll e, em seguida, clique em OK. Agora os dois
arquivos DLL são referenciados em seu projeto. Todas as APIs do Revit são expostas por esses
arquivos de interface e seu projeto pode usar todas essas APIs disponíveis neles.
6. Defina o valor da propriedade Copy Local dos arquivos de referência:
Na janela Solution Explorer que você viu na etapa 5, clique em RevitAPI em seu nó de referência.
Na janela Propriedades, clique em propriedade Copy Local e clique na lista suspensa, selecione
False. Repita os mesmos passos para alterar o valor da propriedade Copy Local da RevitAPIUI
como False.
7. Configura a versão Framework .NET:
4
Meu primeiro plug-in para Revit
Atenção: O Autodesk Revit 2011 oferece suporte ao uso do Framework .NET 3.5 e o Autodesk
Revit 2012 oferece suporte ao uso do Framework .NET 4.0, que Visual C# 2010 Express usa por
padrão.
8. Adicione o código:
Clique duas vezes em Class1.cs na janela Solution Explorer para mostrar a janela de edição de
código. Exclua tudo nesta janela e, em seguida, digite o seguinte código C#. Para obter a
experiência completa de desenvolvimento com o Visual C# Express-incluindo o uso de recursos,
como o IntelliSense, recomendamos que você escreva o código deste guia, em vez de copiar e
colar.
using System;
using System.Collections.Generic;
using System.Linq;
using
using
using
using
using
using
Autodesk.Revit.DB;
Autodesk.Revit.DB.Architecture;
Autodesk.Revit.UI;
Autodesk.Revit.UI.Selection;
Autodesk.Revit.ApplicationServices;
Autodesk.Revit.Attributes;
[TransactionAttribute(TransactionMode.Manual)]
[RegenerationAttribute(RegenerationOption.Manual)]
public class Lab1PlaceGroup : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
//Get application and document objects
UIApplication uiApp = commandData.Application;
Document doc = uiApp.ActiveUIDocument.Document;
//Define a Reference object to accept the pick result.
Reference pickedRef = null;
//Pick a group
Selection sel = uiApp.ActiveUIDocument.Selection;
pickedRef = sel.PickObject(ObjectType.Element, "Please select a group");
Element elem = pickedRef.Element;
Group group = elem as Group;
//Pick a point
XYZ point = sel.PickPoint("Please pick a point to place group");
//Place the group
Transaction trans = new Transaction(doc);
trans.Start("Lab");
doc.Create.PlaceGroup(point, group.GroupType);
trans.Commit();
5
Meu primeiro plug-in para Revit
return Result.Succeeded;
}
}
9. Construa o projeto:
O código que você escreveu é em forma humana legível. Para tornar o código legível por um
computador, você precisará traduzi-lo ou "construir".
Dentro Visual C# Express, no menu Debug, clique em Build Solution para compilar e construir
seu plug-in. A mensagem Build Succeeded é mostrada na barra de status da janela do Visual C#
Express se a DLL foi criado com êxito.
Escrever um manifesto AddIn
Um manifesto de AddIn é um arquivo localizado em um local específico, verificado pelo Revit quando
inicia. O manifesto inclui informações usadas pelo Revit para carregar e executar o plug-in.
1. Adicione o código do manifesto:
Inicie Notepad.exe a partir do menu Iniciar do Windows. Copie e cole as seguintes configurações
de carregamento de plug-in para o editor do bloco de notas.
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Assembly>
C:\test\Lab1PlaceGroup\Lab1PlaceGroup\bin\Release\Lab1PlaceGroup.dll
</Assembly>
<ClientId>502fe383-2648-4e98-adf8-5e6047f9dc34</ClientId>
<FullClassName>Lab1PlaceGroup</FullClassName>
<Text>Lab1PlaceGroup</Text>
<VendorId>ADSK</VendorId>
<VisibilityMode>AlwaysVisible</VisibilityMode>
</AddIn>
</RevitAddIns>
Dependendo de qual versão você está usando talvez você precise alterar o caminho aqui para
combinar com seu local de Lab1PlaceGroup.dll em seu computador:
C:\test\Lab1PlaceGroup\Lab1PlaceGroup\bin\Release\Lab1PlaceGroup.dll
2. Salve o arquivo:
No menu de arquivo do bloco de notas, clique em Salvar. Digite MyFirstPlugin.addin na caixa
nome do arquivo. Mude na janela “Salvar como” a opção tipo para todos os arquivos (o nome
do arquivo é com você; no entanto a extensão de arquivo deve ser "AddIn"). Navegue até a
subpasta seguinte e, em seguida, clique no botão Salvar.

Para o Windows XP C:\Documents and Settings\All Users\Application Data\Autodesk\Revit\Addins\2011\
6
Meu primeiro plug-in para Revit

Para o Windows Vista/Windows 7 C:\ProgramData\Autodesk\Revit\Addins\2011\
Por exemplo, aqui está a configuração no diálogo Salvar como no Windows 7 para Revit
Architecture 2011.
Inicie o Autodesk Revit Architecture.
1. Abra o dataset http://images.autodesk.com/adsk/files/hotel.rvt
2. Carregar seu plug-in no Revit e permitir que o plug-in se comunique com o Revit:
No interior do Revit na guia Addins da faixa de opções, clique na lista suspensa de ferramentas
externas e, em seguida, clique em Lab1PlaceGroup. Isto irá iniciar seu plug-in.
3. Trabalhar com o plug-in:
Mova o cursor sobre Room1 o modelo Revit. Quando o cursor está focalizando o grupo de
mobiliário, sua caixa delimitadora deve ser destacada como pela abaixo imagem, com uma dica
7
Meu primeiro plug-in para Revit
de ferramenta mostrando: modelo de Grupo: Grupo 1. Clique para selecionar este grupo de
mobiliário. (Nota: O quarto parece muito semelhante ao grupo. Por favor, selecione
cuidadosamente o grupo de acordo com a mensagem na dica de ferramenta. Se a sala estiver
selecionada, você não verá o resultado esperado após o passo seguinte).
4. Escolha um ponto em outra sala, por exemplo, na sala 2. Você deverá ver o grupo copiado para
este local. O centro do novo grupo é o ponto selecionado.
8
Meu primeiro plug-in para Revit
Tópicos adicionais
Introdução à programação
O código C# que utilizamos para copiar grupos tem apenas 30 linhas. Aqui você viu uma pequena
quantidade de código trabalhando de forma semelhante ao comando interno do Revit: criar
semelhantes. Programação de software permite que você capture a lógica de uma determinada
funcionalidade uma vez e, em seguida, colha os benefícios sempre que você quiser executar essa
funcionalidade.
O que é programação?
Uma resposta simples a esta pergunta é: programação de computadores é o processo de criação de uma
sequência de instruções para dizer ao computador como fazer algo. Você pode olhar para seu programa
como uma sequência de instruções. Você vai olhar várias linhas e blocos de código e olhar para eles em
um contexto de instruções para um computador.
Se você fosse para explicar o que é um computador para uma criança, você poderia dizer: um
computador é uma ferramenta que segue as instruções que você fornece. A programação é uma
maneira de dar instruções para o computador. Internamente, um computador vê estas instruções
codificadas como uma série de números (também chamados de código de máquina). As instruções
legíveis que você viu no início desta lição são chamadas de código-fonte e o computador converte essas
instruções para código de máquina que ele pode ler e executar. Uma sequência de tais instruções (ou
código), escrito para executar uma tarefa específica, é chamada de programa, e uma coleção de tais
programas e dados relacionados é chamada de software. Autodesk Revit é um desses produtos de
software.
Código-fonte pode ser escrito em linguagens diferentes, assim como os seres humanos usam idiomas
diferentes para se comunicar entre nós. A língua que você usará neste guia é chamada C# (pronuncia-se
"C Sharp").
O que é uma API?
API é o acrônimo em inglês para Interface de Programação de Aplicativo: a forma como um
programador de software pode se comunicar com um produto de software. Por exemplo, a API do Revit
é a maneira que os programadores podem trabalhar com Revit, e estabelece que um programador de
software pode usar as funcionalidades do Revit. A API Revit permite que você escreva instruções para
serem executadas.
Para colocar isto de forma ligeiramente diferente: empresas de software comercial, como a Autodesk,
distribuem, muitas vezes, um conjunto de bibliotecas que você pode usar em seu próprio programa para
interagir com um determinado produto de software, tais como Autodesk Revit, e estender sua
funcionalidade. Este conjunto de bibliotecas é conhecido como API do produto de software.
9
Meu primeiro plug-in para Revit
O tipo de programa você escreve para interagir com um software e estender sua funcionalidade
dependerá de como a API foi projetada e o que foi exposto (através de APIs) para que você possa
trabalhar com o software.
O que é um plug-in?
Um software plug-in é um tipo de módulo de programa (ou arquivo) que adiciona funcionalidade a um
produto de software, geralmente sob a forma de um comando para automatizar uma tarefa ou alguma
personalização do comportamento do produto. Quando você fala sobre um plug-in para Revit – e
também ouvirá o termo Add-In usado para este produto – falamos de um módulo que contém o código
que faz uso da API do Revit. Quando iniciado, o Revit carrega esses plug-ins e usa para ajustar seu
comportamento sob certas condições, como quando um determinado comando é executado pelo
usuário do plug-in.
Leitura Adicional
Revit Developer Center: www.autodesk.com/developrevit > Introdução a API Revit (vídeo em Português)
Autodesk Developer Network: www.autodesk.com/joinadn
The Building Coder, blog de API Revit: http://thebuildingcoder.typepad.com/
Conclusão
Espero que esta introdução a programação permita que você entenda um pouco mais como a
programação pode ajudar no seu fluxo de trabalho. No meu trabalho como evangelizador das
tecnologias de programação da Autodesk, vejo que uma das grandes necessidades atuais é adequar os
softwares para fluxos de trabalho interno das empresas. Quase sempre este fluxo tem detalhes
particulares de cada escritório, daí a vantagem de modificar o software (via programação, por exemplo).
Este material é apenas uma introdução a um material muito mais completo disponível em
www.autodesk.com/myfirstrevitplugin. Para cursos presenciais de Revit e outros produtos em nosso
escritório, visite www.autodesk.com/apitraining para uma agenda completa.
Duvidas entre em contato.
10
Download

Meu primeiro plug