Een paar weken geleden heb ik de Dynamo Hackathon van Autodesk bezocht in Amsterdam. Er waren ergens tussen de 150 en 200 deelnemers die in groepjes iets uit konden werken, in een kort tijdsbestek van één dag, wat innovatief en interessant zou kunnen zijn voor de community. Samen met mijn collega Jordi Bergboer en een voor ons toen nog onbekende Ali Sina Nasiri hebben we een fantastisch goed idee uitgewerkt. Het leuke van zo’n dag is dat je veel nieuwe gedreven en intelligente mensen ontmoet die ook heel enthousiast zijn over Dynamo (of over landmeten, over wegontwerp, GIS, noem maar een willekeurig interessant onderwerp). Ali bleek een slimme gast te zijn, heel aardig ook nog en ondanks dat hij nog nooit voor een groep gepresenteerd had, geheel bereid was om ons onderwerp te tonen aan alle deelnemers en de jury van Autodesk. Hij deed het hartstikke goed.
Verder was het erg leuk om de altijd enthousiaste Achintya Bhat en John Pierson te ontmoeten, die namens Autodesk de hackathon in goede banen leidden. En nog enkele fans ontmoet, waarvan eentje graag wilde dat ik mijn boek ‘Using .NET to Program Plug-ins for AutoCAD‘ signeerde.
Superleuk om te doen en heel fijn om mensen vanuit de hele wereld te ontmoeten die blij zijn met de boeken die ik geschreven heb.
The Flow Fanatics
Ons team moest natuurlijk een klinkende naam hebben, wat na enig speurwerk leidde tot ‘The Flow Fanatics’, naar de manier waarop Dynamo de nodes laat overvloeien. De eerste paar uren werden besteed aan het zoeken naar een onderwerp, wat best lastig bleek te zijn. Wat is interessant om te beschrijven? Wat missen gebruikers nu? Wat zou een aanvulling kunnen zijn en is het uiteindelijk hackathon-waardig?
Uiteindelijk hebben we gekozen om een proof of concept te maken van een package die in Revit een Coordinate System kan instellen op gelijke wijze als in Civil 3D mogelijk is. In de laatste kun je heel eenvoudig uit een keuzelijst een Coordinate System kiezen waarmee de conversie tussen Lat/Lon naar het gebruikte coördinaatsysteem mogelijk is. In Revit gaat dat allemaal niet zo eenvoudig.
Revit
In een Revit Project werk je altijd met een zeer lokaal stelsel. Gewoon lekker rondom de oorsprong en horizontaal. Wat verder ook logisch is (of lijkt, ik gebruik Revit verder niet als civiele techneut met een landmeetkundige achtergrond). Maar je kunt wel een Coordinate System instellen om toch Easting/Northing of Lat/Lon waarden aan je project te koppelen, om zo je lokale project te kunnen koppelen aan een real-world situatie.
De rode lijn is het werkgebied van een stukje Amsterdam maar in Revit ligt deze horizontaal op de locatie 0,0. Het vergt nogal wat handelingen om in Revit een DWG te linken waarin een Coordinate System is ingesteld. Na het linken kan door middel van wat aanwijzingen de relatie worden gelegd tussen lokaal en (bijvoorbeeld) het RD-stelsel. Dit moet makkelijker kunnen.
Dynamo
In Civil 3D kan het veel eenvoudiger. Ook in Dynamo voor Civil 3D. Zo zijn er in ‘The Civil Nodes‘ package nodes te vinden om een Coordinate System uit een keuzelijst te selecteren en in te stellen als actieve Coordinate System. Op de achtergrond wordt dit in de API in AutoCAD aangeroepen. Het is dus mogelijk om dit te automatiseren.
Het idee van ons onderwerp zou als volgt moeten werken. Visueel zouden deze nodes in Dynamo voor Revit beschikbaar moeten zijn als nieuwe package:
Maar op de achtergrond zou de betreffende node het volgende moeten doen:
- AutoCAD Core Console in de achtergrond starten (zonder User Interface dus),
- Een kleine DLL laden die de geselecteerde Coordinate System instelt met behulp van AutoCAD API,
- Die ook een klein stukje geometrie tekent op de projectlocatie, het opgegeven adres (Revit kan geen lege tekening linken),
- Die de tekening opslaat en deze vervolgens linkt aan het Revit document.
Daarna is het Coordinate System beschikbaar in Revit en kun je ook de X/Y en Lat/Lon bekijken van je projectlocatie.
Uiteraard heeft de technische uitvoering van ons voorstel nog wat voeten in aarde. Zo moet een gebruiker ook AutoCAD hebben geïnstalleerd. Elke Revit gebruiker kan (afhankelijk van zijn Autodesk licentie) hierover beschikken maar het ook moeten hebben geïnstalleerd. Daarnaast is het omzetten van een adres nog een leuke uitdaging. Via een webservice zoals Open Streetmap zou je op basis van een adres een Lat/Lon locatie kunnen verkrijgen. Deze waarden kun je met behulp van de AutoCAD API omzetten naar X/Y die horen bij je ingestelde Coordinate System. En zo kun je iets van geometrie tekenen op die locatie. Maar er is nauwelijks controle of er wel een correcte locatie is opgegeven, of dat je de juiste terug krijgt. Want er zijn meer plaatsen die Zwolle heten, of Parijs, of Zurich.
Een stukje Python code om deze conversie uit te voeren, hadden we tijdens de Hackathon al werkend:
De tijd was zo snel voorbij dat we helaas niet méér hebben kunnen testen. Het zou wel interessant zijn om te zien hoe snel de Core Console opstart en de hulp-DLL laadt. Als het starten van de Console net zo lang duurt als AutoCAD zelf, dan is dat voor de User Experience van de nieuwe Dynamo package best wel teleurstellend. Maar dat zullen we nooit weten, tenzij iemand dit idee oppakt en verder gaat uitwerken…
Wil je complexe of repetitieve taken automatiseren in Civil 3D? Dit boek helpt je alles te leren over de design automating tool Dynamo voor Civil 3D. Je wordt een professional in visueel programmeren, en binnenkort zijn al je saaie of complexe taken geautomatiseerd!
This book is only available in English.