twitter youtube facebook linkedin email
Connect with:

Mundo AEC - Blog Oficial sobre soluções da Autodesk Brasil

Começando com APIs Civil 3D

Pedro Soethe
01/07/2013

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).

Visual Basic Express 2010

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’.

Menu novo projeto

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.).

Formulário de novo projeto

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.

Tela geral do Visual Basic Express

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.

Lista de referências

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.

Adicionando as referências

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.

Opção Copy Local igual a False

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…

Código no Visual Basic Express

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

Menu Debug, Build

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.

Linha de comando do Civil 3D

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:

Featured Links

Pedro Soethe

Pedro Luis Soethe Cursino é formado em Engenharia Civil pela Universidade de Taubaté, tem pós-graduação em Georreferenciamento pela Faculdade de Pirassununga e em Estradas e Vias Urbanas pela FESP. Trabalha a mais de 15 anos na área de infraestrutura e é responsável por vários projetos executados no Brasil em diversas disciplinas como estradas, projetos urbanos, loteamentos, infraestrutura hidro-sanitária, drenagem, terraplanagem entre outras.

'