Monday, 18 April 2022

Meridãos - Gralheira - Portas - Meridãos

 Ontem dei mais uma volta de bicicleta em Tendais. Poso escrever muita coisa, mas o mais importante é que fui com os primos Pedro e André, fui na bicileta do Tio Zé Pedro, foi muito duro mas nunca desagradável. Estas voltas em Tendais, sempre duras, são uma revelação que se repete anualmente que não se repetem fora de Tendais. Teria de arranjar uma rotina e companhia perto de casa. A verdade é que sem companhia não teria muita piada. E também há qualquer coisa diferente em pedalar naquele vale.

Hoje, sentado no café da universidade, sentia-me regressar à estrada.







Thursday, 5 September 2019

Revit and IFC Element Identification

Writting here to clarify my own mind on the subject of Revit element identifiers.

In each Revit file there is an id called ElementId, a small number as bellow. This number is  unique to the file. This means that if we mix elements from different files we will/may get repeated ids, which is not good.

Then we have the GUID, or IFC id, which is (statistically) unique in the whole universe for every element create, ever. This identifier is created only when the Revit file is exported to IFC, and here is a nice trick: When we export an IFC file, we can ask Revit to store the IfcGUID in an element parameter, and then it will become part of the model, since it will not be generated again for that model (found that here).


We can then see it in the Properties dialog:



What is strange/scary is that we can then change that parameter's value in the Properties, and Revit will keep using that value in future IFC exports. When the parameter is populated we can access it in Dynamo too:




When I convert a model to IFC, send it to Unity using https://www.tridify.com/ and open it there I can spot the Revit id, and the IFC Id (GUID) there:


I can also find it in the IFC file, and right next to it we can see the Revit Id (the short one)


Finally we have the Revit UniqueId, which is an Id issued by Revit and which can be converted to the IFC GUID (more on that here: https://thebuildingcoder.typepad.com/blog/2009/02/uniqueid-dwf-and-ifc-guid.html).

Found also this post that explains what I wrote above in more detail and contains Python code to get all identifiers: https://wrw.is/the-many-ids-of-a-revit-element-and-how-to-work-with-them-elementid-uniqueid-dwf-guid-ifcguid/.

Thursday, 4 May 2017

Dynamo - Adicionar mobília a gabinete de acordo com a área

Para carregar muita informação nos modelos dos edifícios do campus temos de automatizar e foi a isso que me dediquei hoje. O objectivo é inserir uma família (mobília, conjunto de mobília, pessoas) nas salas que cumprem determinado critério. O critério pode ser a área, ou fazer parte de uma determinada lista que vem do sistema de informação académica. 

O teste em baixo adiciona uma mesa a todas as salas com mais de 40 m^2 de uma edifício fictício. Na realidade o que queremos não é filtrar salas por área, mas por outras características. Os gabinetes, salas de aulas, etc., mas o funcionamento é o mesmo. Mais complicado será inserir não uma mesa mas várias, e com a disposição correcta.


Thursday, 16 March 2017

Vibrações

Apesar de ter mudado de área principal de trabalho, continuo a colaborar em trabalhos da área da Geotecnia, modelação numérica e controlo (ou controle?) de vibrações causadas por explosivos. Nem que seja porque de vez em quando recebo um email de um leitor dos meus artigos (normalmente este) que me obrigam a recordar um detalhe recôndito do doutoramento (tese e resumo). Faz-me bem ao ego!

Esta manhã o meu aluno Ricardo Fonseca apresentou, no ISEL, o plano de tese final de curso onde vai modelar a propagação de vibrações na barragem de Salamonde devido ao desmonte com explosivos. Aqui está o bem delineado e ambicioso plano de trabalhos.


Saturday, 4 March 2017

Note to myself - Forge da Autodesk

Como usar o Forge viewer para embeber os meus desenhos onde quiser?

E faz o mesmo que o Flux.io, out of the box, ou tenho de aprender a API?

Friday, 24 February 2017

Flux.io



Comecei a brincar com o Flux.io há duas semanas. Pareceu-me que era interessante, depois de ver que é uma spin-off da Google fiquei mais em sentido (sou muito impressionável). Percebe-se logo o que faz: liga aplicações (Excel, dynamo, excel, grasshopper, etc.) a uma cloud, permitindo partilha de informação. Já uso plugins e o dynamo para passar parametros do Excel, mas os ficheiros têm de estar no mesmo pc (ou ser sincronizados no google drive. Isto permite não só trabalhar à distância como fazer os syncs em diferido. Depois vieram duas semanas de escrita de propostas e parou tudo.

A versão Evaluation permite dois projectos, 100 Gigas de armazenamento e guardam o histórico de dados que por lá passam durante 90 dias. Mais que suficiente: a questão dos projectos é uma questão de arrumação, visto que posso ligar quantos ficheiros quiser a cada projecto, os dados que estou a passar são quase todos texto, o histórico por enquanto dispenso.

Primeira aplicação

O meu primeiro teste complicou-se um pouco pois fui mais ambicioso. Quero mandar para o Revit as condições actuais do tempo (precipitação, vento, temperatura, etc.) e fazer com que o modelo reaja. Pode fechar abrir as luzes, fechar portas e janelas ou estender toldos.

O que acabei por fazer foi mudar a altura de uma pala de acordo com a temperatura actual em Lisboa. Não tem muita lógica na realidade, é só para ver se funciona. A figura abbaixo mostra a pala, que é materializada por uma pequena laje de betão. A laje está agarrada ao Level 2. O que vamos mudar no Dynamo é a altura deste Level.

Dividi a explicação em duas partes.




Parte 1 - Dados do clima > Google Sheets

Procurei a API de estado do tempo da própria Google mas já não existe. Mas existem muitas outras. Abri uma conta nesta plataforma: https://www.apixu.com/. Com um pouco de estudo aprendi como funciona o endereço que devolve um ficheiro XML que o google sheets abre com o comando importxml. Uma vez compreendida a estrutura do XML e o XPath, é mais simples que formatar texto no Word. A imagem abaixo mostra como funciona.


A seguir basta gerar duas chaves do Flux, uma para a célula com a temperatura e outra para a célula com o vento. Estas chaves vão ser abertas no Dynamo e aí vão induzir alguma acção no modelo.

Acabei de ter o meu momento Dah. Como o Dynamo tem Python, também lê XML directamente e não preciso do Flux para nada. Provavelmente já há nodes para ler XML pois o ICF é baseado no XML. Pois, cá está: http://whatrevitwants.blogspot.pt/2015/11/read-xml-files-and-use-in-revit-with.html
Enfim... Sempre posso comparar as duas formas de fazer isto. Vamos à segunda parte.


Parte 2 - Google Sheets > Dynamo

Para aceder aos dados do google Sheets basta instalar o plugin do Flux no Dynamo e autenticar. Temos assim acesso a nós do Dynamo para selecionar o projecto e, dentro do projecto, aos dados que pretendemos importar. Estes dados podem ser listas, geometria, ou outras estruturas. No nosso caso é apenas um valor numérico.  
Este valor, a velocidade do vento actual em Lisboa, é multiplicado por um factor de escala arbitrário (para que om movimento da pala seja notório) e alimenta a cota do Level 2 do modelo. Sempre que o valor do vento sobre, sobe também a pala. 


Notas

A API que usei não é a mais popular. Diz o Stackoverflow:  Yahoo! Weather and Wunderground are two of the three most popular weather APIs at the moment. OpenWeatherMap is the third. You'll probably find what you need in at least one of these 

Quanto mais corro menos escrevo

mas ontem fui à pizza run e foi muito bom. Quer dizer, o treino foi muito mau, e isso é muito bom. Estava à espera de uma volta antes da pizza. Pensei mais a pizza que no run, e o run foram 16km de sobe-e-desce, à la Shark Tank, com um cozinheiro imaginativo e lebres que não se deixaram apanhar. Mesmo assim ainda acabei nas escadinhas do Martim Moniz a dois degraus de cada vez, o mais difícil ainda foi uma rampa-escada-rampa-escada lá para meio do treino que me fez quase passar do passinho de corrida para o passo de caminhada, embora a velocidade devesse ser a mesma, tal a poupança no saltinho que separa uma coisa da outra. Nessa altura o que menos me apeteceu era pizza!



A pizza e a superbock pret do Primo Basílico não desiludiram (entretanto a vontade de comer pizza voltou, fica aqui o link para lá poder voltar em família), mas o melhor foi mesmo o convívio. Nunca vi a corrida como uma maneira de conhecer gente nem de estar com gente. No último ano tenho gostado de correr acompanhado porque assim corro mais vezes e melhor e em horários impensáveis se tivesse de os cumprir sozinho. Mas quando entrei neste treino ia mesmo com a vontade de correr e comer pizza em tão boa companhia.