Por Augusto Gonçalves, Autodesk Developer Network
Para quem não pôde participar dos treinamentos na Autodesk, nesta sequência de posts irei abordar os passos necessários para criar um plug-in para o Civil 3D que gera relatórios e automatiza algumas tarefas cotidianas.
Este primeiro post abordará os requisitos, conhecimentos básicos e como criar o ‘esqueleto’ geral. Na sequência, irei abordar os comandos com aplicação específica.
Requisitos
A plataforma de desenvolvimento utilizada nos treinamentos é o Visual Basic .NET, disponível gratuitamente para treinamento na versão Express. Para o Civil 3D 2012, 2013 e 2014, utilizamos a versão Visual Basic 2010. Apesar de atualmente a versão 2012 estar disponível, a versão suportada é a 2010. O download está disponível em http://www.microsoft.com/visualstudio/ptb/downloads#d-2010-express (ou direto em http://go.microsoft.com/?linkid=9709929).
Conhecimentos básicos
Conhecimentos em VB.NET são recomendados. Existem diversos tutoriais na internet, vários livros e artigos. Um material interessante é o nosso My First AutoCAD Plugin, que passa conceitos de VB.NET e API AutoCAD. Como o Civil 3D é baseado em AutoCAD, estes conhecimentos serão aplicáveis e úteis.
Criando um Plugin
Mãos a obra! Abra o Visual Basic 2010 Express e escolha a opção ‘New Project’. O projeto é a unidade básica para se criar um plugin, e cada projeto criado irá gerar uma DLL que poderá ser carregada no Civil 3D. Neste curso, nunca abra um arquivo .vb avulso, este não contém os dados necessários, abra sempre o projeto via menu ‘Open Project’.
Agora selecione a opção ‘Class Library’, que significa que este projeto irá gerar uma DLL como resultado. Dê um nome para o projeto, neste exemplo ‘ProjetoCivil3DBR’. No nome, não utilize espaços e/ou caracteres especiais (acento, pontuação, etc.).
Por limitação, a versão Express não pergunta onde o projeto será salvo. Para escolher, vá ao menu e escolha ‘Save All’ (ou Ctrl+Sifth+S). Escolha uma pasta do seu computador. Evite pastas remotas ou na rede, o .NET bloqueia estas opções.
Com o projeto aberto, a tela do Visual Basic 2010 Express deve ser algo como a tela abaixo. Note o Solution Explorer ao lado direito, caso não veja esta tela, selecione no menu View, submenu Other Windows. Todos os arquivos .vb disponíveis estarão listados nesta aba.
Para criarmos códigos específicos para o Civil 3D é necessário incluir as bibliotecas (ou DLL do inglês Dynamic Link Library), disponíveis na pasta onde foi instalado. Clique 2x em My Project da aba Solution Explorer. Na janela que se abrirá, selecione a aba References e finalmente clique em Add para adicionar as bibliotecas.
No formulário de Add Reference da figura abaixo, selecione as referências (ou bibliotecas) do AutoCAD AcMgd, AcDbMgd e AcCoreMgd e as referências do Civil 3D AecBaseMgd e AeccDbMgd. Note que na versão Civil 3D 2012 (e anteriores) não existe a AcCoreMgd.
Finalmente marque as referências como Copy Local igual a False na aba Property. Caso não veja esta aba, habilite através do menu View, Other Windows. Este procedimento é necessário para que o Civil 3D execute corretamente o plugin.
Está concluída a etapa de configuração do projeto, que pode ser reutilizada para qualquer novo projeto VB.NET para o AutoCAD Civil 3D. Podemos começar com o código (rotina) que irá executar as operações que desejamos.
Nosso primeiro comando: contar corredores
O objetivo deste post não é criar um comando funcional ou complexo, mas apenas preparar a fundação. Então o comando deste exemplo será bem simples, com objetivo de verificar que tudo funciona: contar a quantidade de corredores no documento (projeto) e mostrar na linha de comando do Civil 3D.
Para o Civil 3D, cada rotina public sub é um comando. Este deve conter uma marcação especial (atributo do .NET) indicando o nome que será executado, neste caso contarCorredores. Note que este nome não pode conter espaços.
Na figura abaixo pode ser visto o Class1.vb com o código. Abaixo da figura está o respectivo código, copie e cole no Visual Basic 2010 Express. Retire eventuais linhas em branco remanescentes…
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.Civil.ApplicationServices
Public Class Class1
<CommandMethod(“contarCorredores”)> _
Public Sub CmdQuantidadeCorredores()
‘ acessar o Editor (linha de comando)
Dim ed As Editor = Application.DocumentManager.
MdiActiveDocument.Editor
‘ acessar o CivilDocument, que gerencia os dados do Civil 3D
Dim civilDoc As CivilDocument = CivilApplication.ActiveDocument
‘ finalmente escrevemos a quantidade
‘ de corredores neste documento
ed.WriteMessage(“Projeto contêm {0} corredores”,
civilDoc.CorridorCollection.Count)
End Sub
End Class
O Civil 3D não reconhece código, apenas DLL. Então é necessário “construir” uma DLL através do comando Build no menu Debug. Esta opção irá gerar um arquivo .dll na pasta onde o projeto foi salvo, conforme o caminho listado abaixo.
…\ProjetoCivil3DBR\ProjetoCivil3DBR\bin\Release\ProjetoCivil3DBR.dll
Estamos prontos para executar este comando no Civil 3D!
Inicie o Civil 3D e, preferencialmente, abra um .dwg que contenha um corredor. Para carregar um plugin .NET execute o comando NETLOAD. Escolha a .dll criada pelo projeto (neste exemplo a ProjetoCivil3DBR.dll). Ao carregar, o Civil 3D 2014 deve exibir uma mensagem relacionada a segurança. Para este exemplo, clique em Load. Para mais detalhes de segurança, veja este post. Execute nosso comando customizado CONTARCORREDORES. O resultado deve ser como mostrado abaixo.
Parabéns! Plugin completo!
No próximo post iremos adicionar mais código para criar um relatório de traçado horizontal, tabelas de curva de bordo e outros.
Leitura para a semana
Alguns tópicos adicionais de programação para AutoCAD e Civil 3D: