Pular para o conteúdo principal

Criando seu primeiro app para AutoCAD

Uma das coisas mais difíceis em qualquer coisa é começar  dar aquele primeiro passo que parece um abismo para qualquer um, inclusive para mim, a até entender com funciona mesmo foi complicado.

Contudo, a Autodesk já tem alguns "facilitadores" para nós meros mortis que desejamos mais do AutoCAD, todos eles você pode encontrar na página da Autodesk Developer Network. Para inciar a programação em .NET a primeira coisa que você tem que ter é a biblioteca chamada de ObjectARX que nada mais são do que os "conectores" do .NET do AutoCAD para sua aplicação, em outro post mais oportuno falarei mais deles.

O ObjectARX para programação em .NET está disponível, pasmem!, desde o R14 mas se você foi no site da Autodesk só tem os mais atuais, contudo eu recolhi num post de um fórum da Autodesk os link's de todas as versões. É importante que você utilize a versão do .NET adequada para sua versão, o AutoCAD 2010, por exemplo, utiliza o .NET Framework 3.0 e não vai conseguir carregar automaticamente aplicações desenvolvidas com o .NET Framework4.0. Mais ainda, existem três "descontinuidades" nas aplicações e variáveis do ObjectARX, a Autodesk modificou muito a forma com que se manipula as aplicações do R14 até o 2008, do 2009 até o 2012 e agora o 2013 também é diferente de modo que você para construir um software que seja compatível com o 2012 e 2013 vai ter que mexer no código para fazer isso, não bastará apenas reconfigurar o ObjectARX e a vesão do .NET porque a forma de interagir com o AutoCAD muda... o que é lamentável para qualquer desenvolvedor.

Segue ai as versões do .NET

R14 ftp://ftp.autodesk.com/pub/developer/sdk/obarxsdk.exe
2000 ftp://ftp.autodesk.com/ProdSupp/autocad2000/ObjectARXSDK.exe
2000i ftp://ftp.autodesk.com/pub/objectarx/acad2000i/objectarx.exe
2002 ftp://ftp.autodesk.com/pub/objectarx/objectarx_2002/K030.arx.plus.all.zip
2004 ftp://ftp.autodesk.com/WebPub/autocad/oarx/arx_sdk.exe
2005 ftp://ftp.autodesk.com/WebPub/Developer/autocad/Arx_All2005.exe
2006 ftp://ftp.autodesk.com/WebPub/autocad/oarx2006/Arx_All.exe
2007: http://download.autodesk.com/esd/objectarx/2007/Arx_All.exe
2008 x86:  http://download.autodesk.com/esd/objectarx/2008/ObjectARX_2008_32Bit.exe
2008 x64:  http://download.autodesk.com/esd/objectarx/2008/ObjectARX_2008_64Bit.exe

As versões atuais para AutoCAD 2011, 2012 e 2013 você baixa através do site da Autodesk normalmente. http://mexico.autodesk.com/adsk/servlet/item?siteID=123112&id=785550

Vou tentar manter essa lista sempre atualizada porque ano que vem, quando lançar o AutoCAD 2014 o 2011 vai ficar na lista de coisas velhas....

Uma vez instalada a biblioteca você deve instalar (ou já ter instalado) o Visual Studio. O Visual Studio hoje está na versão 2012 que eu particularmente considero a melhor versão, tem tudo que tem no 2010 mas é bem mais leve em especial para quem trabalha no Windows 7 (meu caso). O problema é que o Wizard de construção de programas só funcionado no Visual Studio 2010, por isso, use o VS 2010, se achar ruim como eu instale o VS 2012!

Se você não tem instalado faça o Download da versão Express que é gratuita para qualquer um,  caso seja aluno da UFRJ como eu você pode baixar a versão Ultimate no site da MSDN. A diferença para quem esta começando é zero... quando os programas começam a ficar grandes ai surgem as necessidades que fazem a diferença, mas para tudo que eu pretendo mostrar aqui o Express é mais que suficiente.

Agora vamos a parte dificil da instalação: Instalar o Wizard da Autodesk. Se você tiver sorte, o que é dificil ele vai instalar corretamente. São dois pacotes que estão hoje disponíveis na Autodesk: um apra o 2010 -2012 e outo para o 2013 a diferença é aquilo que eu já tinha comentado mudou tudo do 2012 para o 2013 mas mesmo assim eu vou começar a fazer as aplicações para o 2012. Depois explico como muda para o 2013.

o Link para Download do ObjectARX Wixard 2010-2012:  http://images.autodesk.com/adsk/files/objectarx_2012_wizards.zip


O Exemplo de aplicação
 Agora vamos fazer a nossa primeira aplicação para AutoCAD em .NET, vamos fazer uma coisa simples: aparecer uma mensagem de "Olá Mundo", como "Olá Mundo" e uma coisa tão clichê vamos usar uma mensagem mais parecida comigo: "Pisei num coco na rua..."
 
1. Abra o VS2010 e inicie um novo projeto

Ao iniciar esse novo projeto atenha-se a alguns detalhes, o primeiro é que existe um template da Autodesk na lista de templates de cada linguagem (C#,VB e C++) nesse caso vou fazer um programa simpleszinho em C# que é mais fácil. O segundo detalhe é a versão do .NET, para o AutoCAD 2012 o .NET v4 não serve, você deve compilar usando o .NET Framwrok 3.5 e por fim veja o nome do programa que você está criando.

2. Selecione as DLL adequadas com o seu projeto. Se você não sabe quais que você realmente vai usar faça como eu, selecione tudo, depois na versão final remova as não utilizadas.


Lembre-se de que as direções acima devem estar correta para que o  Visual Studio possa compilar o seu aplicativo utilizando-as.

3. Agora o seu projeto está pronto para receber umas linhas de comando. Note que exitem dois arquivos na lista de arquivos do "myCommands.cs" e "myPligin.cs"

O arquivo "myPligin.cs" é uma classe que implementa o carregamento o o descarregamento da DLL no AutoCAD, ou seja, ela tem duas funções que rodam imediatamente antes de qualquer coisa assim que a DLL é carregada e a outra (Terminate) roda imediatamente antes do fim da DLL, que como o AutoCAD não tem um comando para soltar a DLL isso ocorre no fim da seção do AutoCAD.

Não faça nada muito demorado dentro destas funções isso pode comprometer o aplicativo e ele não será carregado além disso também não é possível incluir nessas funções formulários, mensagens de texto na tela etc...
 
O outro arquivo é onde efetivamente você pode colocar seu código. Note que em "myCommands.cs" exitem quatro funções implementadas, utilize isso como referência para seus comandos

4. No primeiro comando "MyCommand", onde está "//Put your command code here" coloque a mensagem cagada:  "System.Windows.MessageBox.Show("Pisei num coco na rua...");".

5. Agora mande depurar o código (F5). Se na etapa 2 você configurou o AutoCAD corretamente ele será aberto através do Visual Studio e então você vai ter a impressão que não conteceu absolutamente nada! e está certo, não aconteceu nada, agora você tem que carregar a DLL que você criou com o ._NETLOAD , por isso você precisa lembrar do nome que você deu a ela.

6. Carrege a DLL com o comando NETLOAD, lembre-se que ela está dentro do probjeto em ../bin/Debug/suabiblioteca.dll.

7. Agora execute o comando que você colocou o seu código de mensagem ._MYCOMMAND e aparecerá a mensagem assim como você escreveu: "Pisei num coco na rua..."


Com esse procedimento acho que já deu para entender mais ou menos como funciona a programação em .NET para AutoCAD, podemos criar comando personalizados e com isso realizar as atividades que desejamos.

Exitem uma série de artigos para quem quer começar a programar em .NET para AutoCAD no site da Autodesk Developer Network sem dúvida é a melhor forma de fazer isso e está bem melhor que o meu artigo também.

Comentários

Postagens mais visitadas deste blog

Numeração Automática no AutoCAD

Sem dúvida esse é uma ferramenta única que fazia falta a tempos e foi introduzida recentemente no AutoCAD, na última década… Em 2013 tinha feito um programa para criar uma bolinhas de numeração automática usando o conceito de Leader eu fazia um controle dos números dos itens na mão mesmo, depois de um tempo resolvi fazer um menuzinho para controlar o conteúdo do número dos bullets, hoje isso não é mais necessário, existe um comando no próprio AutoCAD para isso e faz parte das Ferramentas Expressas do AutoCAD. Gosto de compartilhar ferramentas e dicas que tendem a ser menos conhecidas ou subutilizadas, mas ainda podem fornecer um impulso para sua produtividade e fluxo de trabalho e que eu mesmo me surpreendi quando as encontrei Hoje, quero apresentar outra ferramenta, a numeração automática. Como o nome indica, o comando Numeração automática permite que você adicione automaticamente um número às etiquetas ou texto em um desenho. Vou mostrar como a numeração automática pode ser usada par

Alterar a cor de fundo do AutoCAD

Eu sou um adepto do fundo preto, tudo que eu posso mudo a cor do fundo para preto. Nas ultimas versões do AutoCAD tenho notado que não é mais o padrão o fundo preto absoluto, é um cinza escuro. As vezes gosto também de mudar a cor do Layout de branco para preto afinal de contas quando trabalhamos com penas e contraste no model space preto, ver um desenho no layout é impossível.  Você pode mudar sua cor de fundo do AutoCAD para a cor que quiser. Definindo cores personalizadas Primeiro, vá para o menu Opções (botão Aplicativo> Opções), selecione a guia Exibição e clique no botão Cores. Agora você deve ver a caixa de diálogo Cores da janela de desenho: Agora você pode atualizar as cores de qualquer elemento da interface. Isso incluí o plano de fundo em qualquer contexto (selecione Model e Layout). Você pode escolher qualquer uma das predefinições, ou você pode escolher a partir de todo o espectro (basta escolher a opção Selecionar Cor ...). Se você não gosta ai

Trabalhando mais rápido utilizando Express Tools

Se você não está usando o AutoCAD Express Tools, está perdendo tempo. O Express Tools é uma coleção de pequenas ferramentas de aprimoramento de produtividade que são instaladas com o AutoCAD. Eles são criadas usando as APIs do AutoCAD, como o AutoLISP, e, portanto, não estão disponíveis no AutoCAD LT também (aquela versão baratinha do AutoCAD). Aqui algumas possibilidades do Express Tools Nossa jornada começa com a barra de menus do estilo antigo. Ative-o com o comando MENUBAR e no estado 1. Clique em Express no lado direito e ele será expandido para mostrar mais de 10 categorias de ferramentas. Ainda fui mais longe e nos submenus consegui contar mais de 60 outros comandos. Ferramentas para blocos Existe dentro do Express Tools ferramentas específicas para blocos. vamos a algumas: Copy Nernest Objects - com essa ferramente você pode copiar objetos de dentro de um bloco para fora sem precisar explodir o bloco. Export Atribute Information - Você pode ain