Mensagens

C# - Autocad Plugin Unifilar

Imagem
C# - Autocad Plugin Unifilar O desenho de um esquema unifilar pode ser repetitivo e fastidioso, uma boa desculpa para criar um plugin para auxiliar no desenho. Este é um plugin para Autocad, que funciona sem leitura de dados externa ao CAD (poderia ler algo de Excel), e que na fase actual desenha as simbologias de Viadutos; Passagens Superiores; túneis ...  As ilustrações abaixo referem-se apenas ao desenho de viadutos. Tendo como base uma(s) linhas do esquema unifilar: Posso desenhar umas linhas auxiliares (ou outro tipo de referência) para situar o desenho do viaduto: Abro o plugin, executo o comando VIADUTO e pico nas linhas limites: E o programa desenha a simbologia adequada, separando por layers: Neste estágio de desenvolvimento o utilizador depois corrige os textos e PKs manualmente. Este caso poderia também ser resolvido com um bloco dinâmico. Cumprimentos.

C# - Medições de Excel para CAD - ODTs

Imagem
C# - Medições de Excel para CAD A automatização de mais um processo, desta vez envolvendo Excel e Autocad. O objectivo do exercício é passar as quantidades que estão organizadas numa folha de Excel, para um desenho de CAD. No caso, são várias folhas com um 1 km de traçado, e várias folhas com 5 km de traçado. O ficheiro Excel com as quantidades está preenchido e minimamente formatado. Como posso receber outra versão (diferente) do mesmo ficheiro em Excel, optei por fazer um pré-processamento dos dados, organizando-os por grupos segundo as folhas que quero e colocando já a informação para o script de cada folha. Com esta informação organizada, posso executar o programa que abre o Excel, e grava os ficheiros Script, um para cada folha. No disco fica um script, que em cada folha de CAD aberta, é executado e assim completa o trabalho com pouca intervenção humana.

C# - Autocad Plugin Arco

Imagem
C# - Autocad Plugin Arco Este plugin permite calcular o raio que cumpre determinado desenvolvimento de um arco tangente a dois alinhamentos. Este plugin foi programado em C# para Autocad. O utilizador indica duas linhas, o desenvolvimento e a região (quadrante) e o programa realiza os cálculos necessários e desenha o arco. Tem cerca de 700 linhas de código, inclui vários conhecimentos prévios, e transporta para o futuro outros conhecimentos, é um processo contínuo e acumulativo. O utilizador, pica na primeira linha, na segunda linha, depois é-lhe perguntado qual o desenvolvimento do arco de circunferência, e finalmente a região onde se vai realizar o cálculo. A selecção da região serve para abreviar um pouco o cálculo interno. Podia ser feita de otra forma, mas por simplicidade foi escolhi que se picasse num ponto. Os desenhos são organizados por layers. O resultado final com todos os layers ligados será este:

C# - Autocad Plugins

Imagem
C# - Autocad Plugins O código de um plugin pode tornar-se bastante complexo, caso se tenham de despistar todas as hipoteses de input do utilizador, e de cálculo. No plugin que estou a desenvolver, o cálculo teórico para o caso ideal é simples. No entanto para poder prever os casos de inputs do utilizador e as hipoteses de cálculo, adiciona-se um grau de complexidade a todo o programa. Por agora, e para não dizer muito, se quisermos desenhar um círculo ou arco tangentes a dois segmentos o caso aqui apresentado parece simples: No entanto se pensarmos que o utilizador pode dar com a geometria acima, os segmentos em sentidos diferentes, temos já um grau de complexidade. Mais o sector onde se deseja realizar o desenho, é mais um grau de complexidade. Depois nem todos os métodos proporcionados pela API no Autocad servem. Por exemplo se os segmentos não se cruzarem em desenho, alguns métodos do CAd não servem. Para ter o controlo e despistar mais este caso anteriormente referido, criei vários...

Javascript - PRL para XLS (sobrelevações de ISPOL para Excel)

Imagem
Javascript - PRL para XLS (sobrelevações de ISPOL para Excel) Esta é uma refactoração do programa que transforma os dados em texto em dados de Excel. Já tinha feito o programa para transformar os dados exportados desde o ISPOL de formato sobreelevação para Excel. No entanto ao trabalhar agora com a folha de cálculo vi que algumas células eram exportadas como texto, o que dificulta a apresentação da tabela. A interface continua a mesma de antes: No entanto como agora se exportam todos os dados como número é fácil formatar a tabela na folha de cálculo com os decimais desejados e o aspecto visual que seja conveniente. No caso do exemplo, estou a usar o LibreOffice Calc:

C# - Conversor de ângulos (2)

Imagem
C# - Conversor de ângulos Este é um programa que faço em várias linguagens de programação. Esta versão é semelhante a uma que fiz no final de 2022 na mesma linguagem. Uma das operações na engenharia é converter entre várias unidades angulares. Além das tradicionais entre sistema angulares de graus (0-360) e grados (0-400) já necessitei de recorrer a aplicações Web para converter coordenadas planas em geográficas, e o resultado estar num formato decimal ou sexagesimal, e ter de converter para o outro. E para isso usei um programa semelhante ao que se apresenta hoje. É um programa para consola, ou CLI, ou se quiserem em modo MS-DOS. A janela inicial é a que fica a aguardar um valor de entrada: O programa nesta fase analisa a validade dos dados, e determina se o input é feito em decimais ou sexagesimais. No caso do exemplo acima, é um ângulo em decimal, e não temos de indicar as unidades iniciais. Assim oferece as várias possibilidades, se entramos um valor em graus ou grados: outra opção...

C# - Validação de dados básica

Imagem
C# - Validação de dados básica A validação dos dados introduzidos pelo utilizador é uma operação essencial. Embora os programas que faço são maioritariamente para consumo interno, fica bem ter algum despiste inicial de erros de introdução, a validação de dados pode servir não só para aprovar o número / texto introduzido mas também para evitar alguma incoerência no cálculo. No presente projecto de CSharp li que podemos dar o ! como negação, como se faz também em Javascript: Tendo um conjunto prévio de booleanos preparados para serem True, caso um dos testes dê False temos o nosso ponto de controlo. E assim se vai construindo mais alguma coisa...