Mensagens

A mostrar mensagens com a etiqueta engenharia

CSharp - Desenho de Aparelhos de Mudança de Via simples (parte 2)

Imagem
CSharp - Desenho de Aparelhos de Mudança de Via simples (parte 2) A criação de um plugin para desenhar AMVs em Autocad. Nesta segunda parte, a evolução de um plugin que desenha o AMV com formas simples, linhas e círculos para um que desenha por blocos. O prompt aceita o aparelho esquerdo: O desenho dos AMV fica orientado com os dois pontos inciais dados pelo utilizador, o primeiro insere o bloco e o segundo orienta. Abaixo observa-se um AMV esquerdo e um direito, o nome do bloco e a colocação num layer. Um extrato do código C# que faz a montagem do bloco. Com este plugin é fácil encadenar sucessivos AMVs num feixe de vias. É uma das aplicações práticas. O plugin é criado na linha de comandos com o compilador de C# CSC. No processo anexam-se os ficheiros essenciais à manipulação do CAD. Portanto não é necessária uma solução complexa com o Visual Studio. Por outro lado inibe-se a criação de plugins com interface de janelas, o que pode ser alcançado por exemplo por Javascript, que pode se...

CSharp - Desenho de Aparelhos de Mudança de Via simples (parte 1)

Imagem
CSharp - Desenho de Aparelhos de Mudança de Via simples (parte 1) A criação de um plugin para desenhar AMVs em Autocad. Uma das criações em curso é um plugin para Autocad que permita desenhar os AMVs. Isto pode ser feito em AutoLisp em alternativa ao CSharp. Alternativas como o Pyautocad não permitem uma interação com o desenho, são mais para automatismos com coordenadas fixas. O Javascript seria uma opção válida, penso eu. Para a criação desde plugin, usei o Csharp e o compilador na linha de comandos CSC, que gera um ficheiro DLL. Ao executar no CAD "netload" abrimos a localização do plugin: Ao escrever depois o comando "AMV" temos as várias opções (ainda não estão todas desenvolvidas): O desenho que se obtém é o seguinte: Como se pode ver coloca os elementos num layer adequado ao tipo de AMV. Neste momento gera entidades por separado, o próximo passo é gerar um bloco para cada AMV. O desenho seguinte é apenas uma comprovação. Há que testar o desenho em vários quad...

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...

JS - Obfuscator

Imagem
JS - Obfuscator O Javascript a correr numa browser based app tem o código visivel, como o proteger? Para que se proteja um pouco o código e não seja copiado (facilmente) podemos dar uma encriptação aos scripts de JS. Trata-se de uma codificação ao javascript que a torna dificil de ler. Pode incluir renomear variáveis; adicionar código desnecessário etc. Como exemplo, usando o site: https://codebeautify.org/javascript-obfuscator Podemos transformar a função que está na imagem inicial deste post em algo "diferente", mas contínua a ser legível para o Browser. É infalível? Não, podemos usar agora uma operação inversa, por exemplo no site: https://obf-io.deobfuscate.io/ Uma forma de melhorar a proteção pode ser por exemplo usar nomes de funções sem sentido aparente, ou introduzir na própria função código redundante.

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...

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 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 ...

HTML App - Abrir Excel

Imagem
HTML App - Abrir Excel Uma implementação essencial para a bagagem da programação na engenharia é a possibilidade de manipular ficheiros Excel. A construção de uma aplicação com HTML CSS JS é normalmente associada à simples criação de páginas Web, sites. No entanto as possibilidades actuais vão muito além, com o código JavaScript e o moderno HTML fica à imaginação do engenheiro programador a dimensão das possibilidades. O JS não tem a possibilidade de ler ficheiros Js (tem com um caminho tortuoso...), mas com a ligação a uma biblioteca JS online que permite abrir ler e guardar ficheiros Excel abre-se todo um leque de possibilidades. Há que referenciar a biblioteca: E implementar o código de leitura, mas ou menos completo: Não precisamos de transformar a aplicação num executável com o Electron ou o Tauri, por exemplo. Tema vantagem de ser independente do navegador, computador, ou sistema operativo para funcionar. Este é um exemplo já desactualizado de uma aplicação que lê a directriz em ...

JS - Gabaritos programação e organização

Imagem
JS - Gabaritos programação e organização Quando o código começa a crescer, há que tomar algumas medidas, caso contrário fica impossível de gerir. Na continuidade da programação desta utilidade, desta vez na versão "Web" ou melhor, browser based app, o código fica bastante extenso. També, acontece o mesmo noutras linguagens de programação. Uma das medidas para dividir e organizar o código é repartir o mesmo por módulos ou algo semelhante. Com o JS podemos criar vários ficheiros que são lidos antes da execução, e automaticamente integrados na execução. Um exemplo poderia ser o conjunto de ficheiros abaixo. Estes são carregados na página HTML. O resultado final é o mesmo como se houvesse apenas um ficheiro. Por curiosidade, uma simples letra em minúsculas ou maiúsculas leva a minutos / horas de deteção de erros. f ou F fazem diferença. São estas pequenas coisas que por vezes consomem tempo.

Excel - VBA Checkbox

Imagem
Excel - VBA Checkbox Um pequeno código inicial de VBA pode ser um ponto de partida para algo mais complexo. As CheckBoxes Servem para activar ou desactiva uma função. O Excel pode desenhar as ditas de duas maneiras, com a inserção de uma CheckBox, ou um componente de um Form. Com o Form temos a vantagem de poder associar uma acção, um código. Após a inserção da CheckBox num espaço, ficamos com o seguinte aspecto: Ao clicar na CheckBox, desperta um evento, uma acção. No código exemplificativo envio a mensagem: E de seguida permite simular a desactivação de algumas células, no caso abaixo a cor do texto passa a cinza: O código é relativamente simples: Se há uma mudança no estado do CheckBox inicia o bloco de código. Esta programação, ou código pode estar embutida na folha a que diz respeito, caso seja algo específico desta folha, como faz sentido para algo relacionado com um CheckBox que "vive" nessa folha, Sheet. Não se visualiza no explorador seguinte, mas está na selecção da...

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...