Pular para o conteúdo principal

Postagens

Mostrando postagens de janeiro, 2020

Alterando a cor da borda de uma imagem no AutoCAD usando .NET

Trabalho muitas vezes com documentos com padrão de penas baseados em cor. A cor branca é usada para linhas muito grossas. Em imagens com o Raster sempre que colocava uma imagem tinha que modificar a cor do contorno (borda) da imagem para vermelho que é a pena mais fina de impressão. Um desenho com ortofotos pode possuir mais de 10 imagens de Raster sobrepostas e sempre tinha que modificar uma a uma a cor da borda. Pensando nisso busquei alguns códigos exemplo de como modificar a cor da borda da imagem de maneira sistemática para facilitar essa modificação. Existe uma função previamente pronta chamada DrawableOverrule, a encontrei em um post do suporte da Autodesk. Esse é o código em C#: using Autodesk.AutoCAD.ApplicationServices ; using Autodesk.AutoCAD.DatabaseServices ; using Autodesk.AutoCAD.EditorInput ; using Autodesk.AutoCAD.GraphicsInterface ; using Autodesk.AutoCAD.Runtime ; namespace RasterImage_Functions { public class RasterImageDisplayOverrule :

Aplicando uma operação a todas as entidades em um desenho do AutoCAD usando .NET

A grande questão do AutoCAD  .NET é que a maior patê das entidades são tratadas genericamente. Com isso existem algumas vantagens e algumas desvantagens. A vantagem maior é que podemos também trata-los genericamente quando queremos usar uma função especifica de um determinado grupo. Esta função generalista apaga todas as entidades em um desenho que atendem a uma condição de precisão. Desta forma este código apaga todas as entidades tipo “cruva” que tem seu comprimento zerado. Eu uso um programa chamado PLS-CADD para plotação e elaboração de projetos de Linhas aéreas de transmissão. A saída do programa são documentos em DXF que precisam ser trabalhados em AutoCAD. Nesse documento de saída muitas informações devido a planificação do projeto são projetadas na planta ou no perfil através de uma linha de comprimento 0, uma questão organizacional do programa. Esta função me ajuda a apagar todos os objetos dos desenhos. Aqui está o código em C#: using System ; using System.Coll

Detectando e apagando linhas de comprimento zero em um desenho do AutoCAD usando .NET

Esses dias fiz um pruge em alguns documentos e percebi que existam alguns elementos que ainda sim estava pensando no documento, mas não conseguia ver. Na verdade algum programa automático de topografia criou varias linhas com comprimento 0. Isso deixaria o arquivo DWG muito pesado resolvi fazer uma função para apagar as linhas e eliminar toda geometria de comprimento zero. Aqui está o código C#: using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using Autodesk.AutoCAD.ApplicationServices ; using Autodesk.AutoCAD.DatabaseServices ; using Autodesk.AutoCAD.Geometry ; using Autodesk.AutoCAD.Runtime ; namespace AutoCADNetBlogExample202002 { public static class extensoes { /// <summary> /// Apaga entidades encontradas neste banco de dados baseado na condição. /// </summary> /// <param name="f">Function indicating whether an enity needs erasing.</par

Transformando o conteúdo de um Layer em Bloco

Esses dias do fim do ano uma pessoa me procurou por e-mail pedindo uma solução para transformar o conteúdo de um Layer em um bloco. Resolvi ajuda-lo. Realmente nunca tinha me deparado com esse tipo de problema antes por isso fiz uma pesquisa nos blog’s oficiais da Autodesk por soluções parecidas com as que eu necessitava. Dividi a busca em duas partes em que eu realmente sabia que iria encontrar: (i) criar um bloco e coloca-lo na tela e (ii) selecionar todos os objetos do Layer. Buscando, encontrei estes dois artigos: Creating an AutoCAD block using .NET Neste post de 2010 Kean Walmsley apresenta um código plenamente funcional para criar alguns objetos na tela e os transforma em um bloco já com entradas personalizadas para um nome do bloco pela linha de comando. Finding all the AutoCAD entities on a particular layer using .NET Neste outro post de 2008 Kean Walmsley apresenta uma forma que selecionar todos os objetos de um Layer. Inclusive cirando uma função específica