Mensagens

A mostrar mensagens com a etiqueta dotnet

C# - Autocad, Anotar Cota e Coordenadas

Imagem
C# - Autocad, Anotar Cota e Coordenadas Uma operação útil é anotar a cota (e coordenadas) com uma linha de chamada de um ponto, vértice etc... Com uma pequena alteração no código podemos apenas anotar a cota e coordenadas de determinados pontos. O ISPOL faz isto juntando um número sequencial, e um quadro de implantação de pontos. Com um pouco mais de tempo pode-se fazer algo semelhante. De qualquer forma agora era para ensaiar, para fazer um quadro e demais opções, convém treinar as janelas de diálogo em Autocad para poder dar ao utilizador a escolha de opções ou configurações. Na imagem abaixo, anota-se o vértice da recta (9), mas como podemos fazer um OSNAP a qualquer local, podemos determinar por exemplo a cota em determinado ponto: Ainda tenho as janelas de alerta:

C# - Autocad, Distância inclinação e sentido

Imagem
C# - Autocad, Distância inclinação e sentido Na continuidade da evolução em CSharp para Autocad, montei um plugin que rotula várias informações úteis de um segmento de recta, por exemplo o sentido de escoamento. Tendo em vista ler a informação de uma linha em 3D, podemos através da programação de um plugin, retirar muita informação. Nos exemplos mostrados mais abaixo, desenhei uma série de segmentos com cota. O plugin pede ao utilizador que pique nos pontos extremos e lê as diversas informações da informação 3D. Independentemente da ordem de leitura dos pontos, o programa determina o sentido do escoamento e colocar uma seta. Esta seta tem uma abertura proporcional à distância entre os pontos. No caso de não haver diferença de cotas coloca uma circunferência. Separa o texto e as setas por layers. Há informação que pode ser dada de forma diferente inclinação em %, ou ângulos noutro sistema. Este programa pode ser útil para hidráulica e não só. Uma amostra do código para desenhar um círcu...

C# - Autocad escrever distância

Imagem
C# - Autocad escrever distância No pequeno incremento de funcionalidade do plugin, está a possibilidade de escrever a distância lida. Para além de informar a distância entre dois pontos, por vezes também interessa que essa informação seja escrita, por exemplo no próprio desenho CAD. O incremento de hoje, foi ter como base o cálculo da distância já feito, escrever com um texto multilinha essa informação  num layer específico. Basicamente foi juntar ideias que experimentei há uns dias. A ideia actual ainda vai evoluir para tornar este plugin mais informativo e útil, para já este é o aspecto gráfico actual: O layer de escrita é particular, ainda com as propriedades dos exercícios anteriores, excepto o nome: Aqui uma amostra de código, para a criação do texto multilinha: Estes plugins podem ser carregados de forma automática no arranque do Autocad, ou escrevendo NETLOAD na linha de comandos: E depois neste caso escrever "distancias" para chamar o programa.

C# - Biblioteca conversores ângulos

Imagem
C# - Biblioteca conversores ângulos Uma biblioteca tanto serve para organizar código como para montar um portefólio de funções. Montar uma biblioteca em Csharp assim como noutras linguagens serve para dar uma organização ao código, reaproveitar funções ou métodos e ir montando um conjunto de funções que se usam e estão personalizadas ao tipo de projectos que recorremtemente o programador usa. Para o programa de exemplo, um conversor de ângulos, converte ângulos para os diversos sistemas angulares, há que montar um código que faz o trabalho de fundo e um código que se encarrega do fluxo geral do programa. Por exemplo posso dizer em dada altura que quero converter alguma coisa, com esta frase: Esta é perfeitamente legível. No entanto o background que está ali é muito maior, pois recorre a um DLL onde se situam estas funções, com todo o código necessário. Um aspecto geral do DLL: A título de exemplo, veja-se os ficheiros que tenho na pasta desde exercício, onde se pode localizar o DLL e o...

C# - Ler ficheiro de coordenadas e escrever pontos em CAD

Imagem
C# - Ler ficheiro de coordenadas e escrever pontos em CAD Juntando alguns blocos já vistos anteriormente, consigo ler um ficheiro de coordenadas do disco e implantar os pontos em Autocad. Uma das operações correntes é ler ficheiros de pontos, e visualiza-los em algum programa de CAD. No caso consegui fazer um plugin para ler um ficheiro de pontos no disco e colocar esses pontos num desenho de CAD. O programa está feito apenas para que funcione, quero dizer que nesta fase não tem interacção com o utilizador (alem do utilizador ter de ordenar o inicio do programa), nem ter verificação de erros. Posso implementar esses códigos de seguida. Uma das ideias poderia ser, além de aceitar o ficheiro no formato XYZ poder ter o número de ponto ou um texto descritivo do ponto. Posso também separar por layers etc. Este é o ficheiro que é lido automaticamente da mesma pasta onde se inicializa o desenho de CAD. E depois de executar o programa este é o resultado geral: E um amostra do código em C#:

C# - Autocad criar Layer

Imagem
C# - Autocad criar Layer Outra das situações comuns numa programação para Autocad é manipular os layers, desenhar em determinado layer, criar e modificar. Mais um pequeno passo necessário para uma programação no ambiente Autocad é o de manipular os layers.  Tenho o código para a criação de um layer se este não existir, o código é adaptado do site da Autodesk. Falta fazer algo mais complexo com vários layers e verificações. O plugin é semelhante ao que já tinha criado para a "linha": E uma amostra do código onde defino o layer a ser criado / verificado se existe:

C# - (Im)precisão de cálculos 2ª parte

Imagem
C# - (Im)precisão de cálculos Como em todas as linguagens, fazer cálculos é um compromisso entre rapidez e precisão. Na sequência do posta anterior, em que o algoritmo acumulava um erro próprio da precisão de cálculo, decidi mudar o algoritmo. A diferença de resultados é enorme como se esperava. Moral da história, a arquitectura do programa tem influência, assim como a comprovação prévia e controlo de qualidade do resultado. Aqui o print dos resultados correctos tirado do Autocad. E a agora a nova listagem: Pode-se ver que a interacção 20 corresponde aos 2,5% assinalados a magenta no print de CAD. Pode-se ver que a interacção 45 corresponde ao ponto final a 5% assinalado no print de CAD a azul. Abaixo só uma amostra da alteração do algoritmo. Cumprimentos

C# - (Im)precisão de cálculos

Imagem
C# - (Im)precisão de cálculos Como em todas as linguagens, fazer cálculos é um compromisso entre rapidez e precisão. Num programa em que estou a trabalhar, os cálculos das coordenadas finais de uma semi-recta, não dão certo com o que se obtém do Autocad. O Autocad é uma calculadora de referência para estas comprovações. O erro que se verifica tem a ver com a questão de os números de ponto ou vírgula flutuante serem uma aproximação e não um resultado preciso. Ao usar estes números para operações, ainda por cima encadeadas, o erro propaga-se. Na imagem seguinte, nas primeiras linhas, os ângulos calculados pelo programa para a inclinação de 5% (no print escreve-se 0.005 mas aí não deveria ter % à frente), tenho depois o valor calculado por uma calculadora. Verifica-se que o valor é igual/aproximado. 0.00499958 radianos mas ao detalhe já não são iguais. O programa pega numa inclinação incial, e vai calculando as coordenadas finais com a elevação da inclinação da recta. Na última linha pode...

C# - Intersecção duas rectas no plano

Imagem
C# - Intersecção duas rectas no plano No pacote de algoritmos necessários a programas de engenharia, está o cálculo de coordenadas de intersecção entre duas rectas. No dia a dia de um cálculo por computador, um programa de traçado, um programa de CAD ... está o cálculo das coordenadas da intersecção entre duas rectas. Geralmente as rectas são definidas por dois pontos, portanto são segmentos de recta. Podem usar-se para determinar intersecções entre dois alinhamentos em planta ou alçado/rasante, intersecções entre uma secção transversal e uma superfície... O algoritmo de cálculo é bastante divulgado em todas as linguagens, cabendo ao programador desenvolver mais ou menos estratégias para despistar erros e comunicar os resultados. Já desde a programação com a FX-880p fazia este tipo de cálculos, na altura para Topografia. Aqui um resultado de output na linha de comandos. Este programa está a ler da pasta corrente, um ficheiro de texto com os dados, assim o utilizador evita estar a tecla...

C# - Autocad apagar Textos

Imagem
C# - Autocad apagar Textos Uma funcionalidade comum é apagar entidades de CAD, neste caso apagar textos de acordo com o conteúdo. Na sequência do exemplo anterior, em que substituía textos, neste caso apago textos (dos dois tipos de textos) se estes coincidirem com o texto de referência. Isto também se pode fazer nativamente no CAD, serve para ir incrementando as opções e futuramente montar várias destas funcionalidades num ou vários plugins. Aqui o texto(s) de base: O programa apaga o "Apaga textos!": E agora escreve o número de textos apagados no editor. No exemplo acima escreveu "4" porque havia um erro no programa, já corrigido. Para se poder apagar temos de abrir a base de dados do CAD em modo escrita: Aqui as linha que regeneram, actualizam, o desenho, e que escrevem no editor: Cumprimentos

C# - Autocad Distancia dois pontos

Imagem
C# - Autocad Distancia dois pontos Este plugin tem a funcionalidade de calcular a distância entre dois pontos dados, nada de novo mas... Passo a passo se vai juntando uma série de funcionalidades para construir algo mais grande e completo. Esta faz o mesmo que o "dist" do Autocad, mas o resultado é mostrado numa janela, depois faço para mostrar na barra inferior. Pica-se em dois pontos, calcula a distância plana, e a diferença de cotas. Este bloco de código é válido para todas as linguagens de programação, com a respectiva adaptação... O output em janela foi formatado para que apareçam 6 decimais.

C# - Autocad substituir textos

Imagem
C# - Autocad substituir textos Uma das operações interessantes num plugin para CAD é a substituição de textos. A funcionalidade de substituir textos, é fácil de usar no Autocad, porém a capacidade de manipular esta funcionalidade de modo programático aumenta o seu potencial, tal como com todas as outras funcionalidades. No exemplo de hoje, consegui substituir o texto, quer de um TEXT quer de um MTEXT, estes dois são diferentes, têm características diferentes e são manipulados de forma diferente na programação. Abaixo o par de textos originais: O Verde é um texto simples, e o laranja um texto multi-linha. A substituição resulta no seguinte: Uma amostra do código: E uma comparação das propriedades para os dois tipos de texto: Cumprimentos

C# - Cores na consola

Imagem
C# - Cores na consola Se quisermos colorir os nossos programas na consola... O conteúdo aqui apresentado está no site da Microsoft em: https://learn.microsoft.com/en-us/dotnet/api/system.consolecolor?view=net-7.0 E foi produzido em Linux, com o Mono. Aqui o output completo do programa: E se calhar a linha mais importante, para deixar tudo na forma original: Cumprimentos

C# - Primeiro programa para Autocad

Imagem
C# - Primeiro programa para Autocad As pequenas utilidades que funcionam dentro do Autocad, são de grande importância para o fluxo de trabalho. No dia a dia, trabalhar com o Autocad é rotina. Assim sendo, é essencial ter ferramentas para auxiliar e expandir a potencialidade do CAD. O CAD é um complemento ao programa de traçado ISPOL. A primeira janela, ou interacção no ambiente de CAD, é um passo importante para desenvolver programas mais complexos, ideias não faltam. Integrado no mesmo programa, que fui lendo em sites diversos, tenho a criação de uma linha, nada de especial: Ainda estou a usar o compilador de C# na linha de comandos, fazendo referencia aos ficheiros de bibliotecas de CAD: E aqui uma pequena amostra do código, para fazer aparecer a janela de Olá: Esta não é a primeira incursão na programação para CAD. Já o tinha feito antes com VB.NET mas a dada altura abandonei a corrente, pois as constantes mudanças, quer do motor de CAD quer na evolução do framework .NET requeriam u...