Conceitos Básicos de AutoCAD® .NET Augusto Gonçalves Consultor de Desenvolvimento na Autodesk
Sobre o apresentador Augusto Gonçalves Consultor de Desenvolvimento Autodesk Brasil Augusto é membro do time DevTech desde 2008 e trabalha escritório de São Paulo. Suporte para desenvolvedores da América Latina 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 (UFMG) e pós-graduado em Engenharia de Computação (ITA). Uma rápida apresentação pessoal. Na próxima vez que nos encontrarmos em eventos da Autodesk, fique a vontade para vir bater um papo.
Agenda 1 2 3 4 5 Plataforma .NET Plugin básico Entendendo o .NET 2 Plugin básico Como começar um plugin com .NET 3 Base de dados do desenho Visão geral da representação em memória do desenho 4 Desenhando Adicinando entidades à base de dados do desenho 5 Listando o desenho Como percorrer a base de dados do desenho
Por que .NET? Plataforma de desenvolvimento padrão da Microsoft Comunidade ativa em grupos de discussão Grande quantidade de recursos nativos Muitos recursos adicionais, inclusive gratuitos Curva de aprendizado Utilizada em diversas APIs Autodesk Mesmo conhecimento pode ser aplicado em outros produtos
Benefícios da Tecnologia .NET Orientada a Objetos Código fica bem estruturado e aumenta o reuso (sem copiar/colar) Multi-Linguagem Pode-se programar em VB.NET, C#, C++, dentre outras Fácil comunicação com outras tecnologias
O que é necessário para começar? Visual Studio Express é a versão gratuita em http://www.microsoft.com/express/ Recomenda-se versão 2008 (para AutoCAD 2011) Vamos utilizar Visual Basic .NET Express ObjectARX SDK Download em http://www.autodesk.com/objectarx Documentos de ajuda Arquivos auxiliares Exemplos AutoCAD instalado
Como funciona um plugin para AutoCAD? Referencie as DLLs do AutoCAD Código escrito em Visual Basic .NET Projeto VB.NET Compilado Carregado no AutoCAD com NETLOAD Assembly (.dll)
Primeiro plugin com .NET: Projeto Criar um novo projeto Plugin para AutoCAD deve ser Class Library
Primeiro plugin: Referencias Adicionar referências AcMdg Recursos de interface C:\ObjectARX 2011\inc\AcMgd.dll AcDbMgd Recursos de banco de dados C:\ObjectARX 2011\inc\AcDbMgd.dll IMPORTANTE: Marcar Copy Local como FALSE
Primeiro plugin: Rotina como comando Rotina VB convencional Imports do AutoCAD Marcar a rotina como comando Acessar o editor Escrever uma mensagem Agora é só compilar, carregar no AutoCAD com NETLOAD e chamar meuComando
Interação com usuário: Selecionar um ponto Configurar as opções para selecionar um ponto na tela Pedir ao usuário para selecionar e guardar o resultado Criar uma variável para o ponto clicado Necessário um imports adicional para Point3d: Autodesk.AutoCAD.Geometry Escrever as coordenadas X, Y e Z na linha de comando
Estrutura de DWG em memória: Visão Geral Database BlockTable LayerTable Outras tabelas DBDictionary TextStyleTable Materials DimStyleTable Visual Styles BlockTableRecord LayerTableRecord UcsTable Outros (Personalizados) Model Space LineTypeTable Paper Space 0 Outros layers ViewTable Paper Space 1 ViewportTable Outros Blocos RegAppTable
Estrutura de DWG em memória: Model Space Model Space é um BlockTableRecord Este mesmo conceito se aplica a paper spaces e blocos criados Contém entidades Temos um tipo de entidade para cada caso Database BlockTable BlockTableRecord Model Space Entity Line Polyline MText Circle Diversos outros...
Desenhando: Visão Geral Adicionar uma entidade ao banco de dados do desenho Precisamos de uma transação para acessar a base de dados Cada transação representa um UNDO Todas as modificações DEVEM ser feitas em uma transação StartTransaction GetObject ( Model Space ) Database Transaction Model Space . Append ( Entity ) Commit
Using/End Using cuida de fechar a transação Desenhando: Passos Necessário um imports adicional para Database Autodesk.AutoCAD.DatabaseServices Using/End Using cuida de fechar a transação
Percorrer a base de dados: Visão Geral Acesso à base de dados DEVE ser feita em uma transação Toda entidade tem um ObjectId Não é possível acessar uma entidade diretamente Necessitamos do ObjectId e de um Transação StartTransaction GetObject ( ObjectId ) Database Transaction Commit
Percorrer a base de dados: Passos Using/End Using cuida de fechar a transação For Each/Next Loop de repetição If/End If Para cada tipo
Material Adicional Through the Interface blog http://through-the-interface.typepad.com AutoCAD.NET Developer’s Guide http://www.autodesk.com/autocad-net-developers-guide Grupos de Discussão http://discussion.autodesk.com/forums/category.jspa?categoryID=8 Autodesk Developer Network http://www.autodesk.com/joinadn
Próximos treinamentos Local: Autodesk São Paulo API AutoCAD Tópicos Avançados 10-11/Janeiro/11 DevLab (AutoCAD, Inventor, Revit, Civil3D) 13-14/Janeiro/11 API Inventor 17-19/Janeiro/11 Inscrição em www.autodesk.com/apitraining > Schedule
Autodesk [and other] are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders. Autodesk reserves the right to alter product and services offerings, and specifications and pricing at any time without notice, and is not responsible for typographical or graphical errors that may appear in this document. © 2010 Autodesk, Inc. All rights reserved.