De Kracht van Python

Python toegepast in AEC

In mijn voorgaande blog heb ik jullie meegenomen in hoe je >> een halve dag bespaard in een paar seconden <<. Aansluitend hierop wil ik het graag met jullie hebben over Python...the next step!

 

Wat is Python?

Python is een programmeertaal en staat bekend om zijn eenvoud, leesbaarheid en gebruiksgemak. Het heeft brede populariteit verworven in verschillende (vak)gebieden. Onder andere de AEC (Architecture, Engineering and Construction), web ontwikkeling, Data Science, kunstmatige intelligentie (Machine Learning en Artificial Intelligence) maakt al geruime tijd veelvuldig gebruik van de programmeertaal Python.

Waarom Python als hulpmiddel voor AEC?

Python biedt ondersteuning voor AEC adviseurs- en engineers bij hun dagelijkse werkzaamheden. Hetzij als standalone applicaties en als ondersteunde programmeertaal bovenop bestaande software. Een veel voorkomend voorbeeld is het gebruik van Python in combinatie met Revit en Dynamo. Verderop in deze blog zijn hier voorbeelden van te zien.

Python in jouw professionele gereedschapskist voor bijvoorbeeld:

  • Automatisering: Python maakt de automatisering van repetitieve en gestructureerde taken mogelijk. Denk aan bijvoorbeeld dataextractie, bestandsmanipulatie en rapportgeneratie. Met behulp van Python code, kun je handmatige inspanningen drastisch verminderen.
  • Data analyse: AEC-projecten genereren enorme hoeveelheden aan gegevens. Door gebruik te maken van bibliotheken zoals Pandas en NumPy zijn gegevens efficiënter te verwerken, te analyseren en te visualiseren en hiermee worden waardevolle inzichten verkregen en wordt besluitvorming op basis van data mogelijk.
  • Aangepaste Tools: Op maat gemaakte tools- en applicaties kunnen specifieke taken stroomlijnen die uniek zijn voor jouw projecten. De eenvoud en flexibiliteit van Python vergemakkelijken de ontwikkeling van deze oplossingen op maat.
  • Interoperabiliteit: Compatibiliteit, integratie en/of samenwerking met andere software bevordert samenwerking tussen diverse applicaties. Gebruik Python bijvoorbeeld in combinatie met AutoCAD, Revit, Rhino, ArchiCAD en/of Excel om data uit deze software pakketten en bronnen in het AEC-proces te structureren en visualiseren.
  • Innovatie: Het uitgebreide bibliotheekecosysteem van Python stimuleert innovatie. Toepassingen van Machine Learning (ML), Artificial Intelligence (AI) en generatief ontwerp worden steeds relevanter in AEC. Python stelt jou in staat om deze baanbrekende technologieën te verkennen.
  • Leercurve: De gebruiksvriendelijke syntaxis van Python en uitgebreide online bronnen maken het toegankelijk voor nieuwkomers. Het leren van Python kan deuren openen naar programmeerconcepten die jouw probleemoplossende vermogens verrijken.

Gebruik de kracht van Python en ontdek nieuwe dimensies van efficiëntie, innovatie en creativiteit.

Het integreren van Python in jouw dagelijkse AEC-werkzaamheden kan jouw productiviteit verhogen, innovatie stimuleren en je helpen te positioneren als een vooruitstrevend AEC bedrijf, consultant en/of BIM modelleur.

In de praktijk:

In een aantal voorbeelden laat ik zien hoe je Python op verschillende manieren kunt inzetten. Dit zijn slechts enkele voorbeelden. Door de flexibiliteit van Python kun je jouw eigen uitdaging te lijf gaan, met behulp van deze veelzijdige programmeertaal.

Python: standalone
Hernoemen folder(s):

Python is een programmeertaal die uitstekend te gebruiken is om programma's te maken die een of meerdere taken handmatig of geautomatiseerd uitvoert.

Voor deze blog heb ik een programma gemaakt dat folders hernoemt volgens een specifieke structuur. Dit simpele programma zoekt in een door de gebruiker op te geven hoofdmap naar sub mappen en hernoemt deze als volgt <foldernaam>_AEC_<datum aangemaakt>

Converteren van bestanden:

Een ander voorbeeld is een screen recording/video omzetten naar een .gif bestand, bijvoorbeeld voor presentaties/blogs/etc.

Met vijf regels python code is een programma te maken die een gebruiker een video laat kiezen om vervolgens deze om te zetten naar een Graphics Interchange Format (GIF). Het gebruik van externe bibliotheken komt in vele programmeertalen voor en kan ook toegepast worden in Python. In dit voorbeeld is ook gebruik gemaakt van een bibliotheek om de conversie te bewerkstelligen.

Python: Revit Python Shell

Binnen Revit is het mogelijk om Python op verschillen manieren in te zetten. Via de ribbon middels knoppen (PyRevit), via de Macro Manager (ingebakken in Revit zelf), via Dynamo (Player) of direct door gebruik te maken van RPS (RevitPythonShell). RPS is een add-in die vanuit de toolbar te starten is. Een van de functionaliteiten van deze add-in is dat wij direct python code kunnen schrijven die interactie heeft met Revit (en de Revit API). Deze code kan worden opgeslagen om op elk gewenst moment te worden gebruikt.

Voor deze blog heb ik in het RPS scherm python code geschreven en deze opgeslagen. In het voorbeeld zie je dat ik deze code uitvoer via RPS door op de play knop te drukken, waarna automatisch een controle op ontbreken van NL-SfB codering in elementen plaatsvindt. Vervolgens worden deze elementen geïsoleerd en rood weergegeven in de huidige view....makkelijk voor bijvoorbeeld controle werkzaamheden door modelleur en/of controleur.

Quick check NL-SfB code:
Python: Revit, Dynamo en Dynamo Player

Veelal begint men met automatiseren in Revit door gebruik te maken van Dynamo en de Dynamo Player.

De combinatie van Dynamo en Revit om scripts (graphs genaamd) te schrijven en de Dynamo Player in Revit om deze scripts op een makkelijke manier uit te voeren. Dynamo heeft een standaard bibliotheek en daarin kan voor jou belangrijke functionaliteit ontbreken. Of het kan zijn dat, het probleem dat jij wilt oplossen met behulp van standaard Dynamo nodes, eenvoudiger is op te lossen met enkele regels Python code.

Voor deze blog heb ik een Dynamo script gemaakt. In het voorbeeld gebruik ik de Dynamo Player om via het script automatisch Revit elementen te selecteren en te isoleren in de active view. Dit gebeurt op basis van een (gedeeltelijke) naam die ik als gebruiker kan invoeren.

>> Uitwerking van het Dynamo script, inclusief gebruikte Python code vind je verderop in deze blog <<

Select/Isolate by (partial) name:
Het script:

Enkel 5! onderling verbonden blokjes in Dynamo zijn er nodig bovengenoemde te maken en daarmee handmatige acties te versnellen.

In het voorbeeld hierboven maak ik als gezegd gebruik van de Dynamo Player en het onderliggend Dynamo script bestaat uit enkele blokjes (nodes).

Dynamo script: Selecteer en Isoleer op basis van een (gedeeltelijke) naamgeving
Dynamo script: Selecteer en Isoleer op basis van een (gedeeltelijke) naamgeving
De code:

De kracht van dit script schuilt in het laatste node. Het blokje met de naam “python – isolate by given name”. Dit is een speciaal blokje, waarin jijzelf jouw eigen python code kan toevoegen. De code die ik gebruikt heb zie je hieronder afgebeeld. NB: onder de afbeelding leg ik uit wat de code doet.

Een korte uitleg wat de betreffende code doet:

  • regels 01-10 geven algemene informatie weer (dit wordt niet uitgevoerd in het script)
  • regels 11-26 laden bibliotheken in, welke nodig zijn voor de werking van dit python node.
  • regels 27-38 Een functie (blokje code), welke hergebruikt kan worden binnen deze node.
  • regels 39-57 Het programma. Krijgt input vanuit andere Dynamo nodes verwerkt deze tot gewenst resultaat
  • regels 58-61 De uitkomst van regels 39-57, welke als output gebruikt kan worden voor verdere verwerking in het script.

Met een paar ‘simpele’ regels code in dit Python node, is het totale Dynamo script korter overzichtelijker en op maat gemaakt. Door het gebruik van Python in Dynamo is het mogelijk om buiten de standaard gereedschappen om extra functionaliteit aan jouw eigen script toe te voegen.

Vragen?

In het voortdurend veranderend vakgebied van Architectuur, Engineering en Constructie (AEC) zijn efficiëntie en innovatie van het grootste belang. Door gebruik te maken oplossingen zoals in dit blog genoemd, zet je alvast stappen in de goede richting. Neem gerust contact op wanneer je over dit onderwerp met ons in gesprek wilt komen.

Projecten gerelateerd aan deze blog

Andere interessante blogs