Pular para o conteúdo principal

Exemplos do ObjectARX 2012 - Parte 2

Continuando a série de artigos sobre os exemplos do .NET para AutoCAD vamos ao segundo exemplo - sequência escolhida por mim como didática - Prompts.

O exemplo Prompts ensina como você pode fazer para pegar valores através do Prompt do AutoCAD na mesma forma com que você faz hoje para as mais variadas funções do AutoCAD. Por exemplo a função "Line", que recebe um ponto inicial e um ponto final que a princípio são duas entradas através da linha de comando: 0,0,0 e @1,1,1.

Eu não sei bem porque, mas os exemplos do dotNET vem protegidos contra gravação. O jeito mais fácil de resolver esse problema é ir no arquivo *.csproj e com o botão direito em propriedades desmarcar a opção "somente Leitura".


Outro procedimento que você deverá fazer antes de compilar e depurar propriamente a sua DLL é referenciar as DLL do ObjectARX 2013 dando o caminho certo. Para isso vá em "References" - você deverá ver todos os itens com uma interrogação amarela - exclua-os. Clicando com o botão direito em "References" clique em "Add Reference" e na aba "Browse" navegue até a pasta C:\ObjectARX 2013\inc e nesta pasta selecione as mesmas DLL's que você excluiu. Caso não lembre dos nomes exatos selecione tudo como eu.

Para finalizar selecione todos os itens que você adicionou (clique uma vez sobre o primeiro item e com o Shift pressionado use a seta para baixo para seleciona-los) clique com o botão direito na seleção e escolha "Propriedades". Na aba de propriedades localize a opção "Copy Local" e selecione "False" - isso  faz com que quando o programa compilar sua DLL ele não coloque na pasta \debug todas as DLL utilizadas como referência para o projeto, a princípio isso não causa problema nenhum mas fica bem confuso quando você vai selecionar a sua DLL no meio de uma porção de coisas. Mais ainda essas DLL's utilizadas como base são universais e o AutoCAD, em cada versão, possuí as suas próprias e com compatibilidades para aquelas que você utiliza por isso é expressamente recomendável deixar o AutoCAD gerenciar isso.

Agora seu programa poderá ser compilado mas não para ser depurado! Ainda temos que referenciar o AutoCAD... Para realizar esse procedimento você deve clicar sobre o nome do seu projeto com o botão direito e selecionar na lista a ultima opção propriedades. Uma janela vai ser aberta com várias abas, siga até a aba "Debug"  e na seção "Start Action", selecione a opção "Start a External Program". No botão de explorar no extremo direito da opção "Start a External Program" busque no seu computador o AutoCAD ("acad.exe"), geralmente ele fica em "C:\Arquivos de Programas\Autodesk\AutoCAD 2013\acad.exe".

Esse ultimo procedimento é necessário apenas para depuração, se você quiser, pode iniciar o AutoCAD separado e carregar a sua DLL através do ._NETLOAD porém não poderá acompanhar linha a linha o que está acontecendo na DLL quando você executa o seu código. Como estamos fazendo uma DLL, uma biblioteca, ela por si só não pode ser testada assim é necessário que o Visual Studio Inicie o aplicativo em que ele faz parte para testa-la.

Agora sim, você pode depurar as suas funções e testa-las.

Como o programa está funcionado podemos passar a parte de execução das funções. No exemplo "prompots" exitem 10 funções implementadas, falemos de cada uma delas. Lembre-se que o objetivo desse exemplo é como utilizar o prompt do AutoCAD para tornar a sua aplicação mais útil e profissional recebendo parâmetros através da linha de comando.

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

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 () {...