Pular para o conteúdo principal

Postagens

Como proteger sua propriedade intelectual no AutoCAD?

Como nós bem sabemos o AutoCAD é uma ferramenta tão importante para engenharia como o Windows é para o restante do mundo. Podemos dizer que quando alguém associa desenho e engenharia a primeira coisa que vem a mente é o AutoCAD. Com o tempo nós vamos desenvolvendo nossas soluções para o AutoCAD, primeiro em AutoLISP, depois em VBA, ObjectARX e .NET. Quem nunca fez uma LISP para si, mostrou para um amigo e agora uma pessoa do outro lado do mundo usa um código parecido com que você desenvolveu. é e ainda está com aquele comentário que você deixou! A manter a sua propriedade intelectual em suas mãos é sempre um desafio para qualquer programador. Como um desenvolvedor profissional (ou amador) enviar um código para frente sempre há um risco de que esse código seja enviado a outras pessoas e utilizado de forma não licenciada. Isso é um problema se os seus códigos são pré-compilados ou protegidos por algum tipo de senha que pode ser aberto pelo usuário final. Vamos fazer uma...

Movendo uma SETA no AutoCAD com texto pré-inserido.

Esses dias comecei a trabalhar em um projeto novo que envolve a inserção de setas com informações no desenho. Buscando um pouco me deparei com esse artigo do Kean Walmsley de como posicionar uma seta com o texto pré-inserido. Isso realmente é um problema, quem usa essa ferramenta de seta (que no meu trabalho é uma raridade, setas são feitas para serem explodidas!) sabe que é dramático você escolhe uma posição para a seta e o ponto de inflexão depois escreve o texto, finalmente você nota que ficou ruim e é obrigado a editar a posição. O truque é usar o MLeader a partir de um EntityJig.  Primeiro passo usado pelo Kean foi tornar o MLeader seja database-resident para ser acionado - uma técnica que é bastante comum ao movimentar sólidos ou blocos com atributos  (sem perder as informações contidas nele). O MText aparece no início do líder e, em seguida, o líder é exibido da origem até movermos o mouse para iniciar o ciclo Sampler/Update no jig. Segue o código em C...

Criando um Layout do AutoCAD com plot e viewport configuradas usando .NET

Esses dias precisei fazer um diagrama unifilar. Esse tipo diagrama vem de uma longa multiplicação diagramática de muitos anos o que significa que os documentos são formado por linhas básicas, em model space e com cada folha em um arquivo dwg separado. Pensado assim fiz alguns ajustes na elaboração dos documentos e a primeira coisa que queria era colocar todas as folhas em um único documento dwg, ponto crucial. Se o documento tem poucas folhas é fácil mas e quando o documento tem muitas folhas seria interessante ter algum mecanismo para criar todos os Layout’s de modo automático. Outro ponto é que sempre que se cria um Layout no AutoCAD o Layout vem sem nenhuma configuração e com uma viewport bizarra no meio do documento. Usar o Layout é nitidamente uma atividade geral que muitas pessoas precisam automatizar. using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using Autodesk.AutoCAD.ApplicationServices ; using Autodesk.AutoC...

Capturando um desenho ativo na tela do AutoCAD usando .NET

A ideia desse pequeno código é facilitar a inserção de desenhos de AutoCAD em relatórios, uma prática comum em que faz projetos de engenharia. Esse código usa a API - Document.CapturePreviewImage(). Com esse código pode ser feita uma captura em tamanho real da tela e convertido para um arquivo de imagem para salva-lo no disco. O que geralmente faço é criar no paper space uma janela com fundo branco já no tamanho que eu quero e enquadrar a parte do desenho que quero exportar então daria para exportar sempre uma imagem no tamanho da tela e com resolução. Aqui está a implementação em C# de um comando ExportarImg que usa a API para salvar uma imagem de "visualização" com o mesmo tamanho exato da janela do documento. using Autodesk.AutoCAD.ApplicationServices ; using Autodesk.AutoCAD.EditorInput ; using Autodesk.AutoCAD.Runtime ; using System ; using System.Drawing.Imaging ; using System.IO ; using System.Windows ; using System.Drawing ; namespace AutoCAD.NET...

Bloqueando e Desbloqueando visibilidade de Layers usando .NET

Esses dias me deparei com alguns documentos que estavam organizados em Layers o que é bem raro onde trabalho porque a maior parte das pessoas simplesmente ignora a existência de Layers no AutoCAD e começa a desenhar qualquer coisas sem escala ou controle de qualquer natureza. Eu não queria desmontar essa organização então pensei em uma maneira de permitir que bloquear os objetos de modo que eu mesmo não pudesse edita-los. Como eram muito layers isso estava sendo trabalhoso então resolvi buscar na internet algum código que permitisse realizar isso de maneira automática. Não demorei muito para encontrar esse artigo do Kean que mostra como fazê-lo. Realmente como ele mesmo relata no artigo existem muitos casos em que o AutoCAD trava fazendo isso, nas minhas primeiras tentativas isso também ocorreu usando o SendCommand(). Seguindo o exemplo dele mudei a configuração do comando para criar a propriedade IsOff/IsFrozen como um ativador para a função personalizada Editor.ApplyCurDwgLa...

Criando uma tabela baseada em desenhos do AutoCAD usando .NET

A muito tempo que utilizo tabelas dentro de desenhos DWG. As vezes preciso converter uma tabela em Excel para o AutoCAD o que por vezes é chato e as vezes fica muito ruim principalmente porque as tabelas não respeitam os tipos de fonte do desenho etc... Estava buscando na internet formas alternativas de o faze-lo e encontrei no blog do Kean Walmsley um post com este código que envolve duas coisas que precisarei: (i) manipulação de múltiplos documentos DWG com importação e (ii) manipulação de tabelas e construção dinâmica baseadas em código. Aqui está o código em C#: using Autodesk.AutoCAD.ApplicationServices ; using Autodesk.AutoCAD.DatabaseServices ; using Autodesk.AutoCAD.EditorInput ; using Autodesk.AutoCAD.Runtime ; using Autodesk.AutoCAD.Windows ; using System.IO ; using System.Linq ; namespace Recursos_Blocos { public class Comandos_Blocos { [CommandMethod("LISTAR_BLOCOS_DESENHOS")] public void ListarDesenhosDosBlocos () ...

Páginas são como Layers - Múltiplas Páginas no AutoCAD, o curioso caso do Elétron

A algum tempo comecei a trabalhar em subestações e me deparei com um programa que é bem popular aqui no Brasil chamado Elétron . O Elétron é desenvolvido pela Cadgrah em Object ARX e .NET para AutoCAD que permite a criação de diagramas trifilares e funcionais, diagrama construtivo e diagrama de interligação em projetos de subestações de energia. Em subestações de potência existe o conceito de um caderno funcional. Um Caderno é um único desenho que pode englobar diversos painéis que em conjunto controlam um conjunto de dispositivos com uma função específica. Esse conceito veio dos EUA na década de 60 quando os primeiros projetos que alavancaram o setor elétrico brasileiro começaram principalmente com a CHESF e as grandes obras de interligação de ITAIPU e da construção de Brasília. Então, diferentemente dos projetos industriais de painéis onde cada desenho (caderno) corresponde a um painel fisicamente isolado e todos os cabos que seguem para outros painéis são referenciados ...