Pular para o conteúdo principal

AutoCAD .NET #001: Tutorial - Uma visão geral da AutoCAD .NET API

Olá pessoal, espero que estejam bem depois desse período todo de isolamento social.


Hoje resolvi fazer uma série de artigos sobre o AutoCAD .NET voltando desde o início em um passa a passo sobre as funcionalidades e o que podemos fazer com o AutoCAD .NET API.



Uma visão geral


A API do AutoCAD .NET permite que você manipule o AutoCAD e os arquivos de desenho programaticamente com os assemblies ou bibliotecas (libraries) expostos. Como é orientado a objeto e pelo Visual Studio é possível utilizar muitas linguagens de programação e ambientes diferentes.


Existem algumas vantagens em implementar um aplicativo para AutoCAD em .NET:


  • É possível acessar os desenhos do AutoCAD abertos. Antigamente, antes do API .NET,  isso  só era possível através do próprio AutoCAD, o ActiveX® ou seja as bibliotecas COM, AutoLISP® e C ++ com ObjectARX.

  • Outra vantagem é a integração com outros aplicativos baseados no Windows®, como Microsoft Excel e Word, é muito mais fácil usando a API .NET nativa de um aplicativo ou biblioteca ActiveX / COM exposta.

  • Quem trabalhou com os anos 2000 lembra dos problemas do AutoCAD com x86 e x64. Bom o .NET Framework foi projetado para sistemas operacionais de 32 e 64 bits vejo isso como uma vantagem. 

  • A orientação a objeto permite uma velocidade de aprendizado menor do que aquelas para linguagens de programação mais tradicionais, como C ++. Em outras palavras podemos cortar incluir e juntar códigos com mais facilidade.


Os objetos são os principais blocos de construção da API do AutoCAD .NET. Cada objeto exposto representa uma grupo de ferramentas de acesso a uma parte específica do AutoCAD e são agrupados em diferentes assemblies (*.dll) e namespaces. Existem muitos tipos diferentes de objetos na API do AutoCAD .NET. Por exemplo:


  • Objetos gráficos, como linhas, arcos, texto e dimensões;

  • Configurações de estilo, como texto e estilos de dimensão;

  • Estruturas organizacionais, como camadas, grupos e blocos;

  • O desenho é exibido como as views and viewports;

  • O desenho do dwg no AutoCAD;


Você pode ver as subdivisões na pasta  Autodesk\ObjectARX_20xx\inc, todas as “partes” estão identificadas pelo nome das DLL’s como a AcWindows.dll que controla as janelas do AutoCAD.


Componentes da API AutoCAD .NET


Vamos as API’s em si, a API do AutoCAD .NET é composta por diferentes arquivos DLL como tratei anteriormente, cada um contém uma ampla gama de classes, estruturas, métodos e eventos que fornecem acesso a objetos em um arquivo de desenho ou aplicativo AutoCAD. Cada arquivo DLL define diferentes namespaces que são usados para organizar os componentes das bibliotecas com base na funcionalidade.


Estas são as três principais DLLs da API AutoCAD .NET que eu particularmente incluo em todos os meus projetos pelo menos:


AcDbMgd.dll - Utilizado para manipular com objetos em um arquivo de desenho.

AcMgd.dll - Utilizado para manipular o aplicativo AutoCAD.

AcCui.dll - Utilizado para manipular  os arquivos de personalização do AutoCAD, os arquivos CUI.



Usando o AutoCAD .NET API


Antes que classes, estruturas, métodos e eventos encontrados em uma das DLLs possam ser usados, você deve fazer referência à DLL a um projeto, pelo Visual Studio basicamente é adicionar as DLL como uma referência do projeto. Depois que uma DLL é referenciada a um projeto, você pode utilizar os namespaces e os componentes do arquivo DLL em seu projeto.


Depois que uma DLL da API do AutoCAD .NET é referenciada, você deve definir a propriedade de “Copy Local” da DLL referenciada como False, isso é importante! 


A propriedade “Copy Local” determina se o Microsoft Visual Studio cria uma cópia do arquivo DLL referenciado e a coloca no mesmo diretório que o arquivo de montagem do projeto, ou seja, se a versão da biblioteca que você usou no seu projeto vai junto com a sua aplicação na hora de “montar” suas ferramentas sobre o AutoCAD.


O problema é que as DLL do .NET API  já são fornecidos com o AutoCAD, a criação de cópias de arquivos DLL referenciados pode causar problemas inesperados ao carregar o arquivo de montagem no AutoCAD, porque ele, o AutoCAD, vai tentar “montar” uma versão de DLL novamente já está nele e pode não ser completamente compatível com a sua versão de AutoCAD podendo inclusive matar algum comando que não tem nada a ver com o que você está fazendo, por exemplo.


Localizando dos arquivos DLL do AutoCAD .NET API 


Os arquivos DLL do AutoCAD .NET API podem ser localizados em <unidade>: \ Arquivos de programas\AutoCAD 20xx ou como parte do AutoCAD 2010 ObjectARX SDK, que pode ser baixado de http://www.objectarx.com ou da Autodesk Developer Network Web site (http://www.autodesk.com/adn).


Após a instalação do ObjectARX SDK, os arquivos DLL podem ser encontrados nas pastas inc-win32 e inc-x64 na pasta de instalação principal.


Observação As DLLs no ObjectARX SDK são versões simplificadas dos mesmos arquivos que vêm com o AutoCAD, pois não contém dependências na interface do usuário do AutoCAD. Recomenda-se que você baixe e instale o ObjectARX SDK e, em seguida, consulte os arquivos DLL que vêm com o SDK, em vez daqueles que são encontrados no diretório de instalação do AutoCAD 20xx.



Nos próximos artigos vou fazer um passa a passo de como utilizar as funcionalidades mais básicas do .NET API com exemplos, até mais!

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

Unindo blocos em AutoCAD utilizando .NET

Hoje me deparai com uma necessidade de unir blocos com propriedades então resolvi fazer um comando para realizar esses procedimento. A principio esse procedimento não é tão complexo de ser executado individualmente mas por outro lado gostaria também de analisar um pouco melhor as possibilidades de se manipular blocos utilizando o AutoCAD. Abaixo o código que utilizei: using Autodesk.AutoCAD.ApplicationServices ; using Autodesk.AutoCAD.DatabaseServices ; using Autodesk.AutoCAD.EditorInput ; using Autodesk.AutoCAD.Runtime ; using System.Linq ; // This line is not mandatory, but improves loading performances [assembly: CommandClass(typeof(Merging_AutoCAD_blocks.Comandos))] namespace Merging_AutoCAD_blocks { public class Comandos { /// <summary> /// Uni dois ou mais blocos em um unico bloco. /// </summary> [CommandMethod("MERGBLKS")] public static void UnindoBlocos () {