Plugin da BuildSystems para o Grasshopper
| Data | 2023-11-23 |
|---|---|
| Organização | BuildSystems |
| Diretor | Martin Bittmann |
| Equipe | Daniel Nunes Locatelli, Daniel Dieren |
Durante meu tempo na BuildSystems, liderei o desenvolvimento de um plugin para o Grasshopper com o objetivo de otimizar o processo de projeto arquitetônico. Esse conjunto de ferramentas foi criado para permitir que os usuários definissem e analisassem projetos de edifícios de forma paramétrica, oferecendo feedback em tempo real sobre o uso de materiais e o impacto ambiental por meio de uma Avaliação do Ciclo de Vida (ACV) integrada.
Principais conquistas desse desenvolvimento incluíram:
- Detalhamento de componente construtivo: Implementamos uma funcionalidade para definir e gerenciar componentes construtivos individuais com suas respectivas propriedades de material.
- Análise de ACV integrada: O plugin oferecia a capacidade de avaliar rapidamente a pegada ambiental dos projetos com base em dados de materiais extraídos de Declarações Ambientais de Produto (DAPs).
- Gerenciamento de dados via JSON: Criamos um banco de dados estruturado em JSON para armazenar e recuperar dados de componentes construtivos. Essa estrutura também seria utilizada em um aplicativo web chamado Circular Component Creator, uma ideia que, infelizmente, não avançou.
- Interface intuitiva no Grasshopper: O plugin apresentava uma interface amigável que aproveitava o paradigma de programação visual do Grasshopper, permitindo uma integração fluida com os fluxos de trabalho existentes.

Desafios
Existem duas linguagens principais para desenvolver plugins para o Grasshopper: Python e C#. No entanto, para uma aparência mais nativa, maior desempenho e integração mais profunda, C# é a opção preferida. Isso porque o próprio Grasshopper foi escrito em C# por David Rutten. O principal desafio durante esse desenvolvimento foi que a McNeel, a empresa por trás do Rhino e do Grasshopper, estava no meio de uma transição do .NET Framework 4.8 para o .NET Core.
.NET Framework 4.8
- Prós
- Ainda suportado no Rhino 8
- Compatível com versões anteriores do Rhino/Grasshopper
- Funciona com o Rhino.Inside Revit, que ainda depende do .NET Framework
- Mais recursos de aprendizado disponíveis online, facilitando a depuração e o desenvolvimento
- Contras
- Sendo descontinuado, o que exigiria migrar o plugin em um futuro próximo
- Não é multiplataforma — seriam necessários plugins separados para Windows e macOS
- Menor desempenho
.NET Core
- Prós
- À prova de futuro, pois é a base para as próximas versões do Rhino/Grasshopper
- Suporte multiplataforma — um plugin funciona tanto no Windows quanto no macOS
- Maior desempenho
- Contras
- Não é compatível com versões mais antigas do Rhino/Grasshopper
- Incompatível com a versão atual do Rhino.Inside Revit
- Menos recursos e exemplos disponíveis online para desenvolvimento e depuração A McNeel recomenda uma abordagem chamada multi-targeting, ou seja, desenvolver o plugin suportando ambas as versões do .NET. Isso adicionou uma camada extra de complexidade ao projeto.
BuildSystems Object Model (BSoM)
O BuildSystems Object Model (BSoM) foi parte integral do projeto, o modelo de dados compartilhado que sustentava a extensibilidade e a manutenção do plugin.
Fase conceitual
Mapeamos a ontologia em que o plugin se apoiaria.

Fase de implementação
Em seguida, implementamos o BSoM em C#, para que o Grasshopper pudesse consumi-lo nativamente. Parte desse trabalho consistiu em definir a estrutura de dados de um componente construtivo.

Resultado
Apesar de totalmente funcional, o projeto foi descontinuado devido a uma mudança de foco da então startup BuildSystems. Na época, a economia alemã enfrentava dificuldades e não havia projetos de construção em andamento nos quais pudéssemos testar o plugin adequadamente. Decidimos mudar o foco e investir nosso tempo no desenvolvimento de uma ferramenta simuladora de financiamento imobiliário sustentável.