terça-feira, 5 de outubro de 2010

Desenvolvimento sem motor gráfico (Autocad)

Olá Galera,

Faz tempo que não escrevo. Sei que estou em falta e peço desculpa a quem têm visitado este blog.
Eu fiz o segundo módulo do curso de C# e apesar de eu ter boiado muitas vezes, digo que no geral valeu a pena. Foi a parte do C# usando ADO.NET com ligação da Banco SQL e XML.

Vamos ao que interessa.

Nesses ultimos tempo tenho ficado muito P$%o com esse lance de ter que ficar abrindo e fechando o CAD para conseguir "debugar" as DLLs. Descobri que existem bibliotecas que podem ser usadas tanto para ler como escrever DWGs sem o uso do Autocad (ou motor gráfico).

Umas é disponibilizada pela própria Autodesk e se chama RealDWG, opção interessante para desenvolvimento de softwares e aplicações. Cheguei até a conversar com firma coligada a Autodesk que guarda os codigos do formato DWG mas não teve como eles me disponibilizarem, apesar das minhas súplicas.

A segunda se chama Teigha.NET e faz parte de uma comunidade (antes aberta) chamada Open Design Aliance. Também me parece ser uma ótima alternativa é pena que não é mais aberto. Se não me engano eles desenvolviam, ou desenvolvem o Intelicad. Não sei a que pé está, faz muito tempo que não vejo.

O único problema é que essas bibliotecas são pagas, então quem realmente quiser afundar no desenvolvimento de softwares quem lêem e escrevem DWG, que dêem um passo a frente...!!!

Abraços a todos e se alguém já estiver usando estas bibliotecas dê um toque... Gostaria muito de conhecê-las...!!

domingo, 29 de agosto de 2010

Sites "DorFlex"

Aprender uma nova linguagem pra mim, está sendo quase como aprender a falar de novo entre comentário engraçados de um amigo: Ele me falou que no começo do aprendizado eu iria sentir "dores"..???!!! Acho que ele se referia a dores de cabeça, ou dores no ego de você ver que não sabe absolutamente nada...srsrs

Mas fuçando na internet e conversando com outros profissionais, você acaba achando ótimas referências que ajudam a aliviar as dores como no caso do site Macoratti.net em : 


http://www.macoratti.net/Default.aspx

Este site aborda o uso de várias linguagem como no nosso caso o C#. Os tutoriais são bem didáticos, fáceis de serem compreendidos. Eu vi alguns tópicos que achei bem interessante como : 

C# - Criando uma aplicação 3 camadas com MySQL

Tem vários outros tópicos que valem a pena dar uma estudados, mas me fixei mais nos conceito de camadas de aplicação. Achei bem interessante pois creio que este deva ser o conceito que irá ajudar em muito no planejamento e desenvolvimento de aplicações mais robustas.


Outra dica que vou deixar aqui são os cursos oferecidos pela Autodesk em : 


http://www.adskconsulting.com/adn/cs/api_course_sched.php


Existe o curso de Autocad.NET e tem duração de 3 dias e o melhor de tudo.. É em português (tupiniquim) e é FREEE..!!! Deve ter bastante gente com dores participando por lá.. De repente dá pra ver que a sua não é tão doída assim..srsrs
Eu não sei exatamente se atendeu a expectativa dos participantes, porque ainda estou na fila de espera.. Se alguém participou nos conte como foi..!!!

Bom..Ainda estou sentindo as tais dores, mas espero sempre encontrar mais sites "dorflex" e valiosos comentários...!!!

Abraços a todos.


domingo, 22 de agosto de 2010

Primeiro Código

Nas duas semanas passadas aqui em São Paulo, fez um frio considerável a ponto querer de querer enfiar os pés dentro do computador para esquentar. Por outro lado foi bom, pois fui obrigado a me concentrar, deixando um pouco os afazeres externos de lado, e botar o C# para rodar. É claro enrolado em um cobertor..srsr..!!!

Uma das minhas primeira preocupações foi tentar rodar um Form dentro do Autocad.
Fiz um resumo de como iniciar um FORM. Caso não entenda me escreva ..!!

Passos

1 - Inicie um novo projeto no Visual Studio utilizando :
  • Windows Form com .NET Framework 2.0


2 - Chamando as bibliotecas do Autocad

Encontre as DLLs do Autocad : acdbmgd.dll e acmgd.dll. Eu as achei no diretório onde está o executável do Autocad (acad.exe).

Na janela Solution Explorer, dê um clique com o botão direito sobre References > Add References e logo após vá em Browse.

Após adicionado clique sobre a DLL e na janela Properties, mude a opção Copy Local para false.

Isso evita que a DLL do Autocad seja copiada para junto da aplicação que estamos criando, fazendo assim a aplicação ir buscar diretamente no diretório origem.






3 - Form(Design)

Eu aproveitei para refazer uma janela de configurações de escalas de uma antiga aplicação. Ela nada mais faz do que setar as varíaveis : Useri1, Useri2 e Useri4.

Estas variáveis são aberta para usuário e podem ser alteradas dentro do cad através do comando : (setvar "useri1" valor), ficando vinculada ao arquivo do desenho.

O processo de desenvolvimento dentro do C# pode parecer mais enrolado aos que estão acostumando somente com LISP, mas de longe fica mais enxuto e muito melhor do que programar do que tudo em LISP e DCL.

O nome do form que criei é Form1.






4 - Classe para chamar o FORM dentro do Autocad.

Dentro do Projeto criei uma novo classe em Project > Add Class...
Chamei-a de Command.cs. Segue o código abaixo :

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

//Chamar as refêrencias de biblioteca
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Windows;
using Autodesk.AutoCAD.EditorInput;
//A linha abaixo será usada para chamar o form dentro do CAD
using acadapp = Autodesk.AutoCAD.ApplicationServices.Application;

namespace Autocad_Form
{
public class Command
{
//AbrirForm será o comando de prompt no Autocad
[CommandMethod("AbrirForm")]
public void AbrirForm()
{
try
{
//Cria-se uma instância do form
Form1 OpenForm = new Form1();
//ShowModelessDialog se encarrega de abrir o FORM
acadapp.ShowModelessDialog(OpenForm);
}
catch (System.Exception ex)
{
MessageBox.Show("Erro encontrado em :" + ex);
}
}
}
}

5 - Compilando o Programa

Aqui tem um macete. Iniciei o projeto como um Windows Aplication, o que irá gerar um arquivo tipo EXE na saída.

No entanto o Autocad somente lê DLL em NETLOAD ( Se existe um meio de ler o EXE ainda não descobri). Teremos que mudar a propriedade para Class Library em : Project > (nome_aplicação) Properties...

Após isso vá em Build e dê um Buil Solution.
Se tudo correu bem ele irá escrever bem abaixo da tela no inferior direito, Build Suceeded.

A DLL para carregar no CAD estará no diretório criado para o projeto em BIN > DEBUG.
No meu caso o nome da DLL é Autocad_Form.dll.

Entre no CAD e carregue a DLL com Netload, e chame a aplicação com o nome que você deu em [CommandMethod("AbrirForm")].

Não sei se você achou fácil ou não. Mas de qualquer forma não desista. Empenho tem suas recompensas.
Vou tentar achar algum lugar bacana para postar o código completo.
Achei : [ Autocad_form ]

Boa Sorte.


quarta-feira, 11 de agosto de 2010

Cadê o NETUNLOAD ?

Ainda não consegui escrever um código próprio, apesar das idéias borbulharem na minha cabeça.
Por enquanto estou me atendo mais aos conceitos, estrutura envolvida e na integração do Visual Studio ao Autocad.

Uma coisa que vejo que é um verdadeiro tormento para os programadores, é o fato de não existir um NETUNLOAD ou algo parecido. Voltando um pouco a história.

Após escrevermos e compilarmos nossa DLL, precisaremos debugá-lo dentro do Autocad. Para carregarmos esta aplicação usamos o comando NETLOAD, acionamos o comando e até aqui tudo bonito.

O problema é que se continuarmos escrevendo o programa e dermos um Build Solution, ele simplesmente não sobrescreve a DLL, por estar presa ao Autocad. O que precisaríamos fazer é sair do CAD, construir e chamar novamente a DLL. Já deu pra ter idéia do tamanho da Pent#%$ação..!!

Outra maneira que está parecendo interessante é o uso do .NET Reflector, pela capacidade que ela dá de pular linha a linha no debug quando se usa bibliotecas externas.

Até o momento não encontrei uma solução satisfatória para facilitar o DEBUG das aplicações dentro do Autocad. Se alguém encontrar por favor me avise.


quinta-feira, 5 de agosto de 2010

Blog com exemplos de Códigos C# e Autocad


Depois de rodar muito encontrei o Blog de Keam Walmsley. Este Blog está sendo praticamente minha base de como programar em C# para o Autocad.
Link : http://through-the-interface.typepad.com/

Entendendo os conceitos de como programar e vendo os códigos fica bem mais claro entender a estrutura da linguagem. Para um leigo como eu, já é complicado entender o C# e mais ainda saber onde começa uma coisa ou outra e como se mesclam.

O Keam pelo que entendi gerencia uma equipe de desenvolvimento da Autodesk e no Blog você encontrará códigos muito bem explicados, simples e possíveis de serem descidos. Você só precisará chamar as bibliotecas e compilar os arquivos.

Outro local que vale a pena passar um tempo é o Forum de Discussão da Autodesk a respeito de Customização do Autocad utilizando tecnologia DotNet.

C# e Manuais DotNet



Antes de mais nada, é necessário ter um pouco de conhecimento sobre linguagem de programação orientada por objeto. Se puder invista em um bom curso e estude muito. Antes de fazer o curso resolvi me interar um pouco sobre a linguagem e adquiri o livro Microsoft Visual C# 2005, passo a passo por John Sharp. Não me pergunte porque o 2005. Foi pura pressa...!!!


Até aqui estou programando em PHP com MYSQL e LISP. O conceito de programação em C é bastante distinto, apesar de no PHP também ser possível programar orientado a objeto.

O curso ajudou em muito a tirar os nós que o livro produziu na minha cabeça e tornar a coisa mais legível. Mas mesmo assim este que vos escreve ainda está apanhando bastante. Mas caminhando aos poucos.

Um manual sobre as bibliotecas Autocad pode ser conseguido em :

O link acima possui o manual "on-line" e foi a primeira referência que utilizei para subir as bibliotecas dentro do Visual Studio e dar um primeiro OLÁ MUNDO..!!





Softwares - o que utlizar

Comecei baixando a versão do Visual Studio 2010 Express da própria Microsoft. A utilização, mediante a um breve cadastro, é gratuita. Esta versão funciona no Windows 7(x64) sem problemas.

Comecei a utilizá-lo com as Dlls do Autocad 2010 mas acabei desistindo por algumas incompatibilidades e voltei pra versão do Autocad 2008 no XP, já que esta não se instala em 64 bits. Lembrando que o Visual 2010 necessitará do XP SP3 instalado.

Se você conseguir achar a versão do Visual Studio 2010 PRO melhor ainda.
Você pode usar : Visual Studio Pro 2010 e Autocad 2008 (32bits).

Você necessitará do Autocad para Debuggar os programas e chamar as DLLs : acdbmgd.dll e acmgd.dll. Estas estão no diretório junto com o executável do Autocad(acad.exe). Na falta do Autocad você pode baixar esta duas bibliotecas no Autodesk Developer Center ObjectArx em : http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=773204

Neste download estão disponíveis as bibliotecas para linguagens suportadas pelo Autocad para 32 ou 64 bits.

Olá Mundo

Este é o primeiro parágrafo e gostaria de explicar um pouco o porque da criação deste BLOG. Neste data (AGO 2010) estou praticamente iniciando no mundo da programação DotNet. Ao mesmo tempo já programava minha rotinas em LISP aqui pra empresa(CH2M).

Antes de fazer o curso de C#, vi que a Autodesk dispunha de uma vasta biblioteca para C#, C++ ou Object ARX e resolvi procurar um pouco mais sobre manuais ,tutoriais ou exemplos. Vi que os materiais em Português são bastante escassos e creio também que não deve existir muitos desenvolvedores no Brasil.

Resolvi mostrar os passos que estou seguindo para juntar materiais a respeito e encurtar um pouco o caminho dos que estão iniciando. Espero também encontrar outros desenvolvedores Autocad ou mesmo fazendo integração a outros softwares utilizando o C# como plataforma.