Mensagens

A mostrar mensagens com a etiqueta Python

Da modelação CAD ao código: como as linguagens de programação estão a potenciar projectos de engenharia civil de última geração

Imagem
  Da modelação CAD ao código: como as linguagens de programação estão a potenciar projectos de engenharia civil de última geração No âmbito da engenharia civil, a transição tecnológica tem sido fulcral: o uso de ferramentas tradicionais de projecto em CAD (Computer-Aided Design) evoluiu para soluções cada vez mais integradas, suportadas por linguagens de programação que permitem automação, análise avançada e interoperabilidade entre disciplinas. Este artigo pretende explorar esse percurso — desde os arquivos DWG/DXF e superfícies 3D até ao código que alimenta simulações, BIM (Building Information Modelling) e a geração automática de relatórios — e como essa evolução está a impulsionar projectos de grande escala (os chamados “9×” ou nove vezes maiores) na engenharia civil. 1. O paradigma clássico: CAD como núcleo central Tradicionalmente, os engenheiros civis e arquitectos baseavam-se em ferramentas CAD para criar plantas, cortes e elevações, modelar vigas, pilares, lajes e fun...

Python - Menus com Tabs

Imagem
Python - Menus com Tabs Uma utilidade do Tkinter, python, é o uso de Tabs para desfraldar vários separadores numa aplicação. Com isto posso por exemplo criar um código e formulário para cada país, se for cálculo diferente numa qualquer situação. Isto pode-se aplicar a qualquer software que precise de alguma "internacionalização"... Vamos ver a que ideias se pode aplicar. O código para os separadores / tabs é fácil de implementar, frame é atribuida a tab1 tab2 tab3 etc, em vez de atribuida a window (no caso abaixo). Para atribuir e separar código, talvez com modulos, como este exemplo para as funções. Seguimos...

Python - numeros

Imagem
Python - Números por extenso Para escrever números por extenso tendo um número em numeral usa-se uma biblioteca. Em algum caso pode fazer falta a escrita de um número por extenso. Ou seja por exemplo transformar o número 180 em "Cento e oitenta". Podemos programar o algoritmo, ou podemos pesquisar antes e usar uma biblioteca já pronta. É o caso do num2words  que realiza por nós essa tarefa. https://pypi.org/project/num2words/ Podemos instalar com: pip install num2words E depois importar no início do programa ou módulo: from num2words import num2words O uso é bastante simples como é o caso seguinte que lê de uma interface tkinter o campo quantia:     numero = int ( ficheiro_recibos [ 4 ].rstrip( ' \r\n ' )  )     num_extenso = num2words( numero , lang = 'pt' )     print ( f 'Número: { num_extenso } ' ) Permite configurar vários idiomas, o que é óptimo. O output é o seguinte: Número: cento e oitenta

Linguagens diferentes resultados iguais

Imagem
Linguagens diferentes resultados iguais Para operações de cálculo matemático e manipulação de ficheiros o resultado é independente da tecnologia de programação. Como era de esperar, apesar de o cálculo ser feito com linguagens de programação diferentes, o resultado é igual. Na imagem acima temos dois ficheiros, que embora tenham o mesmo nome e conteúdo foram criados por linguagens de programação diferentes, Python e Javascript, com a leitura do mesmo ficheiro Excel de dados. Como coloquei no post anterior a interface gráfica tem os mesmos elementos. Ambas linguagens partilham pedaços comuns e outros bem diferentes. Parte da diferença explica-se pela metodologia de criar a interface gráfica. A programação de Javascript + HTML é um pouco mais moldável, permitindo por exemplo desenhar tabelas no ecrã mais facilmente que em Tkinter (Python). É bastante util, pois podemos ressaltar uma janela apenas com resultados ou informação temporária, ou linkar para uma página HTML de ajuda. Cada tecno...

Caso simples de uso do ChatGPT - programação

Imagem
Caso simples de uso do ChatGPT - Programação Usei a AI, ChatGPT para transformar uma função de Python numa função de Javascript Um uso típico dos modelos de LLM é a aplicação à programação. Seja para criar código ou no caso do exemplo para transformar código. Inclusivamente faz notas sobre o trabalho realizado. Este exercício foi uma primeira abordagem ao problema, digamos, já que tenho um código funcional em Python e queria transformar o mesmo para Javascript, como é uma programação funcional pode ser transformada e ajustada aos poucos. Na parte direita no console é possível observar dados provenientes da função transformada. É possível comparar lado a lado o código nas duas linguagens. No código JS apresentado, o ChatGPT eliminou alguns comentários.

Python vs HTML

Imagem
Python vs HTML Uma aplicação simples tanto pode ser realizada com tecnologias Web (HTML CSS JS) ou Python. Para a resolução de um determinado problema prático na área da engenharia, na maior parte dos casos a tecnologia de "programação" usada é indiferente, pois obtém-se o mesmo resultado. Aplicando a um dos exemplos em que tenho estado empenhado ultimamente, o que está por detrás da interface para com o utilizador pode realizar os mesmos passos numa e noutra tecnologia. A interface é ligeiramente diferente (pode-se aproximar mais o aspecto gráfico) e o modo de "abertura" e uso do programa diverge um pouco, num caso (Python) será um normal programa executável, e no outro caso (HTML) será uma aplicação que corre no navegador Web. Ambas tecnologias têm vantagens e desvantagens como é óbvio.  Ambas abrem e modificam um ficheiro Excel. Ambas realizam cálculos. Ambas conseguem escrever no disco um ficheiro de resultados. No fundo é o importante. Apesar dos "hypes...

Python - Excel ISPOL, complicação desnecessária.

Imagem
Python - Excel ISPOL, complicação desnecessária Por vezes tendemos a complicar muito as soluções, quando com apoio das ferramentas existentes e com mais um pouco, se pode solucionar o problema real.  Num dos posts anteriores descrevi um pouco o processo de criação de um programa em Python para automatizar um processo, que não estava muito explícito mas apontava para Gabaritos e Plataformas. A ideia é gerar dados para a implantação das bordaduras de plataformas. No entanto o grau de complexidade está a aumentar, e ao parar um pouco e reflectir... será que não se está a complicar muito o assunto? No fundo pode-se apenas criar uma ponte entre o cálculo de alguma coisa e o ISPOL. Ou seja mecanizar cálculos que o próprio ISPOL não faz, lendo um input de ISPOL e criando um output para ISPOL. A ferramenta de traçado é bastante poderosa e adaptável, por isso fornece os dados para o cálculo e lê os dados para a implantação. Abaixo uma vista do menu de larguras, que pode ser usado para desen...

Python - Excel Problemas e Vantagens

Imagem
Python - Excel Problemas e Vantagens Uma das vantagens do Python é a sua ampla capacidade de aplicação. O Python sendo uma linguagem bastante difundida, possui bibliotecas para solucionar praticamente todos os problemas. Uma é o OpenPyXl que permite ler escrever e manipular ficheiros do tipo Excel, xls ou xlsx. Num dos actuais de programação para auxiliar o cálculo de engenharia, abro e leio um ficheiro Excel com dados da directriz e outros. Este Excel tem nas últimas colunas informação da via que não estava a ser lida pelo programa, por mais que alterasse o XLSX, poderia ser de ter formulas ou apenas dados, estar bloqueado por algum motivo... Afinal a causa do problema era outra, a janela que se abre e permite escolher o ficheiro estava a iniciar numa pasta antiga. Pequenos detalhes que nos levam minutos ou horas a resolver. Mesmo num computador sem uma instalação do Excel, continua a funcionar. O problema por vezes é o tamanho do código que tem de ser de alguma forma organizado para ...

Python - Ler eixo de ISPOL (3)

Imagem
Python - Ler eixo de ISPOL (3) Mais um acrescento ao aspecto gráfico. Ao que já tinha, acrescentei algumas seções para a interface gráfica. Também dei uma função ao botão de leitura do eixo, agora abre a janela de navegação para procurar ficheiros em formato Excel. O aspecto gráfico como disse antes, evoluiu um pouco. Vamos ver no que resulta...

Python Javascript - Diferenças nos resultados (Gabaritos)

Imagem
Python Javascript - Diferenças nos resultados (Gabaritos) Tendo o mesmo cálculo em duas linguagens de programação era expectável ter o mesmo resultado. Ao mudar de linguagem de programação, ou de tecnologia, para realizar o mesmo cálculo é expectável obter os mesmos resultados. É também uma forma de revisão de todo o processo. No caso, um projecto "outsider" para cálculo ferroviário, que está a ser re-codificado para que tenha mais possibilidades de ampliação no futuro, embora seja um projecto para consumo interno. Na parte esquerda da imagem abaixo, o cálculo em Javascript e na parte direita em Python. Não tem exactamente o mesmo conteúdo porque se está a apresentar menos saídas em JS. Os valores semelhantes, por exemplo o -1.51 e o -1.511 chamam a atenção, deveriam ser o mesmo. Uma das formas que tenho de rever os cálculos é comparar os ficheiros de Output, onde tenho todos os cálculos parciais relevantes. Embora com separador de campos diferente, foi possível verificar q...

Python - Ler eixo de ISPOL (3)

Imagem
Python - Ler eixo de ISPOL (3) Uma pequena adição ao programa para mostrar os PK inicial e final do ficheiro de Excel. Com esta pequena implementação permite-se que o programa gere dados com a equidistância indicada pelo utilizador, além de pequenos algoritmos sobre os PKs. Equidistância 1 metro: Com 5 metros: Esta parte está mais ou menos controlada, agora é o passo seguinte...

Python - Ler eixo de ISPOL (2)

Imagem
Python - Ler eixo de ISPOL (2) A interface gráfica pode ser importante para visualizar a informação. Depois de alguns ajustes no código parece que a leitura do Excel e cálculo dos pontos sobre o eixo se faz de forma mais correcta e eficaz. Isto é sempre um processo de correção contínua. Nem sempre tudo sai bem à primeira, longe disso, um dos exemplos é o print abaixo numa das tentativas de corrigir a posição do desenho. Depois de alguns ajustes, finalmente sai um resultado mais adequado ao pretendido. E alguma variação no Excel, para apenas calcular uma parte. Com o esquema de cores a representar as curvas, clotóides e rectas.

Python - Ler eixo de ISPOL

Imagem
Python - Ler eixo de ISPOL Ler um eixo - directriz num formato de ISPOL é uma etapa importante no desenvolvimento de utilidades. No desenvolvimento de software que esteja relacionado com obra linear, uma etapa importante, ou se quisermos um obstáculo a ultrapassar de forma inequívoca é a capacidade de ler dados de uma directriz. Com isso de forma autónoma pode-se obter informação de um ponto em relação ao eixo, calcular e colocar informação ao longo do eixo, e mais tarde se necessário voltar a alimentar o programa de traçado ou de desenho. No protótipo que estou a desenvolver tenho essa etapa praticamente resolvida. Com base num ficheiro Excel formatado com dados da diretriz provenientes de ISPOL: O ficheiro Excel é lido pelo script de Python. No processo exemplificado são calculados pontos equidistantes ao longo da directriz. Há que criar funções para tratar todos os casos possíveis de tipos de alinhamentos (Rectas Curvas Circulares e Clotóides) e as diversas combinações entre estas. ...

Cálculo EN15273 - Ideias

Imagem
Cálculo EN15273 - Ideias Na senda do cálculo e automatização possível sobre as ETI-IFR e EN15273 vão surgindo ideias em consequência das necessidades. A EN e a ETI dão directrizes para vários cálculos, personalizados para cada país. Entre-eixos; plataformas; gabaritos etc. Já tenho o cálculo de gabaritos bastante desenvolvido (cálculo e desenho). Agora outras ideias vão avançando, com base nos elementos de traçado do eixo podem-se realizar outros cálculos. Uma directriz no formato Excel, é facilmente percebida e passível de actualização rápida. É portanto um bom input. Desde a directriz em Excel, é possível calcular qualquer ponto com base num PK , o algoritmo não é fácil (especialmente para cobrir os diversos casos posicionais de clotóides) mas já tenho alguns antecedentes. A inscrição em curva do traçado contínuo é também um ponto importante. Imagem de https://www.boe.es/boe/dias/2015/08/04/pdfs/BOE-A-2015-8765.pdf Estando à partida a organização dos dados feita com Excel, pode f...