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