Pular para o conteúdo principal

Configurando um Projeto ObjectARX Usando o Microsoft Visual Studio

O primeiro passo na criação de um aplicativo ObjectARX é naturalmente criar o projeto no VS 2013, o que não poderia ser trivial... Este são os passos para as configurações do projeto e arquivos mínimos necessários para construir uma aplicação básica ObjectARX.

Naturalmente pelo Wizard da Autodesk, teoricamente, já está configurado mas... para o VS 2013 não... Então vamos lá:

Segue os passos:

1. Configurando para DLL em C++



2. Especificando o ObjectARX e os diretórios padrão.

A maneira mais fácil de fazer isso é adicionar o ObjectARX incluir e diretórios de biblioteca para seus MSVC++ nas variáveis de ambiente.

Microsoft Visual Studio Menu Tools > Options > Projects and Solutions > VC++ Directories (Caminho Antigo até VS 2010)

Solução com o botão direito > Propriedades


Você também pode especificar os locais nas propriedades do projeto, mas você vai precisar incluir caminhos completos para os arquivos para cada projeto que você criar. A principio você deve incluir as pasta inc, inc-32, lib-32.

3. Para todas as configurações (Debug e Release), definir a runtime library linkada para Multithreaded DLL 

Configuration Properties folder > C/C++ folder > Code Generation >Runtime Library


4.  Para todas as configurações (Debug e Release), definir Detect 64-bit Portability Issues option para No. Conforme mostrado aqui, terá que fazer um procedimento maquiavélico:

Configuration Properties folder C/C++ folder  > Code Generation > Command Line

Adicione o comando "/Wp64"


5. Mudando a extensão do arquivo de saída para *.arx

Property Pages under Configuration Properties > General > Target Extension

Coloque *.arx ao invés de *.dll

6. Adicionando as Bibliotecas ObjectARX:

Property Pages under Configuration Properties > Linker > Input > Additional Dependencies

7. Agora vamos ao template simples - este exemplo mostra o código mínimo necessário para fazer um programa ObjectARX:

 #include "rxregsvc.h"  
 #include "acutads.h"  
 // Simple acrxEntryPoint code. Normally intialization and cleanup  
 // (such as registering and removing commands) should be done here.  
 //  
 extern "C" AcRx::AppRetCode  
 acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)  
 {  
   switch(msg) {  
   case AcRx::kInitAppMsg:  
     // Allow application to be unloaded  
     // Without this statement, AutoCAD will  
     // not allow the application to be unloaded  
     // except on AutoCAD exit.  
     //  
     acrxUnlockApplication(appId);  
     // Register application as MDI aware.   
     // Without this statement, AutoCAD will  
     // switch to SDI mode when loading the  
     // application.  
     //  
     acrxRegisterAppMDIAware(appId);  
     acutPrintf("\nExample Application Loaded");  
   break;  
   case AcRx::kUnloadAppMsg:  
     acutPrintf("\nExample Application Unloaded");  
   break;  
   }  
   return AcRx::kRetOK;  
 }  

Vai colocar isso em No SourceFile principal.

8. Criar um arquivo de definição com o mesmo nome do arquivo principal e colocar os dados a seguir:

 LIBRARY "objectarx_program_name.arx"  
 EXPORTS  
   acrxEntryPoint PRIVATE  
   acrxGetApiVersion PRIVATE  

A seção EXPORT deve estar presente e deve conter pelo menos a função acrxEntryPoint (a menos que você tenha usado um outro mecanismo para exportar essa função, como o do Windows _declspec (dllexport) de convenções).

Usando privada no arquivo DEF impede que esses símbolos apareçam na biblioteca de importação para essa aplicação ObjectARX. O símbolo ainda aparece na tabela de exportação do aplicativo, permitindo AutoCAD encontrar e chamar o símbolo. Isto é importante porque cada aplicação ObjectARX ou objeto deve ter sua própria implementação de funções. O aplicativo obtém a implementação de acrxGetApiVersion em virtude de ligar para o rxapi.lib biblioteca estática. Se app2 aplicação ObjectARX usa símbolos de app1 aplicação ObjectARX ligando a app1.lib, seria um erro para app2 para obter a sua definição de acrxGetApiVersion da biblioteca de importação app1. Usando privada no arquivo DEF irá impedir isso. Certificando-se de conectar-se a rxapi.lib antes de ligar para qualquer biblioteca de importação para outro aplicativo ObjectARX também irá impedir isso.


9. Se tudo der certo você vai ver os string's com um erro, coloque a função deinida ACRX_T() para resolver o problema. Veja aqui porque.

Se tudo estiver Ok é só compilar e você terá sua aplicação prontinha.... 

Para carregar o aplicativo você terá que abrir o AutoCAD e com um desenho ativo usar o comando APPLOAD para carregar e descarregar, saiba que isso tudo foi só para aparecer na tela uma simples mensagem que a DLL foi carregada e descarregada do AutoCAD.

Bom é assim mesmo todo o inicio é trabalhoso, mas dias melhores virão...

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

Operando com Imagens Georreferenciadas no AutoCAD - Ortofotos

A coisa mais desagradável para quem trabalha com documentos em DWG com ortofotos ( fotos aéreas georreferenciadas) é quando se recebe o documento e a ortofoto não é carregada. Uma linha de transmissão onde a plotagem da estruturas é feita em um documento combinado de planta e perfil. Na área da planta é feito pela topografia um serviço de recorte e renderização das imagens em formato de ortofoto na região do desenho. Como a linha de transmissão a projeção é feita sempre linear na planta observando os vértices uma mesma ortofoto pode ser representada várias vezes numa mesma folha em um enjanelamento diferente. Tratamento de Ortofotos no AutoCAD - EXTERNALREFERENCES As ortofotos no AutoCAD são tratadas como referências a objetos externos. Isso é bom porque cada ortofoto pode ter de poucos kb até Gb de tamanho. Se for parte integrante do DWG poderia deixa-lo grande de mais para ser manipulado. Cada projeção no documento funciona como uma imagem projetada em um...